123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- //---------------------------------------------------------------------------
- #pragma hdrstop
- #include "CDSNodeF.h"
- #include "AppGlobalF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- TItsNode::TItsNode()
- {
- TItsNode("");
- }
- //---------------------------------------------------------------------------
- TItsNode::TItsNode(String AId)
- {
- FNODE_ID = AId;
- Clear();
- FModified = false;
- FCompleted= false;
- }
- //---------------------------------------------------------------------------
- void TItsNode::Clear()
- {
- #if 0
- FNODE_TYPE = "";
- FNODE_NAME = "";
- FTURN_P = "";
- FRMRK = "";
- FX_CRDN = "0";
- FY_CRDN = "0";
- #endif
- }
- //---------------------------------------------------------------------------
- TItsNode::~TItsNode()
- {
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetValue(String &AOrgValue, String AValue)
- {
- if (AOrgValue != AValue)
- {
- AOrgValue = AValue;
- if (FCompleted) FModified = true;
- }
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetFNODE_ID(String AValue)
- {
- SetValue(FNODE_ID, AValue);
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetFNODE_TYPE(String AValue)
- {
- SetValue(FNODE_TYPE, AValue);
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetFNODE_NAME(String AValue)
- {
- SetValue(FNODE_NAME, AValue);
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetFTURN_P(String AValue)
- {
- SetValue(FTURN_P, AValue);
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetFRMRK(String AValue)
- {
- SetValue(FRMRK, AValue);
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetFX_CRDN(String AValue)
- {
- SetValue(FX_CRDN, AValue);
- }
- //---------------------------------------------------------------------------
- void TItsNode::SetFY_CRDN(String AValue)
- {
- SetValue(FY_CRDN, AValue);
- }
- //---------------------------------------------------------------------------
- TItsNodeList::TItsNodeList()
- {
- FList = new TList();
- }
- //---------------------------------------------------------------------------
- TItsNodeList::~TItsNodeList()
- {
- ReleaseAll();
- delete FList;
- }
- //---------------------------------------------------------------------------
- void TItsNodeList::ReleaseAll()
- {
- for(int ii = 0; ii < Count; ii++)
- Release(ii);
- FList->Clear();
- }
- //---------------------------------------------------------------------------
- void TItsNodeList::Release(int AIndex)
- {
- if (AIndex >= 0 && AIndex < Count)
- delete (TItsNode*)FList->Items[AIndex];
- }
- //---------------------------------------------------------------------------
- TItsNode *TItsNodeList::GetNode(int AIndex)
- {
- if (AIndex >= 0 && AIndex < Count)
- return (TItsNode*)FList->Items[AIndex];
- return NULL;
- }
- //---------------------------------------------------------------------------
- int TItsNodeList::GetCount()
- {
- return FList->Count;
- }
- //---------------------------------------------------------------------------
- void TItsNodeList::Clear()
- {
- ReleaseAll();
- }
- //---------------------------------------------------------------------------
- int TItsNodeList::Add(TItsNode *AItsNode)
- {
- int nRes;
- nRes = FList->Add(AItsNode);
- return nRes;
- }
- //---------------------------------------------------------------------------
- void TItsNodeList::Delete(int AIndex)
- {
- if (AIndex >= 0 && AIndex < Count)
- {
- Release(AIndex);
- FList->Delete(AIndex);
- }
- }
- //---------------------------------------------------------------------------
- void TItsNodeList::Insert(int AIndex, TItsNode *AItsNode)
- {
- if (AIndex >= 0 && AIndex < Count)
- FList->Insert(AIndex, AItsNode);
- }
- //---------------------------------------------------------------------------
- TCDSNode::TCDSNode(TItsNodeList *AList)
- {
- FNodes = AList;
- }
- //---------------------------------------------------------------------------
- void *__fastcall TCDSNode::AppendRecord(void)
- {
- TItsNode *ANode = new TItsNode();
- TcxDataRecordHandle *Result = (TcxDataRecordHandle*)FNodes->Add(ANode);
- DataChanged();
- if (!Modified) FModified = true;
- return Result;
- }
- //---------------------------------------------------------------------------
- void *__fastcall TCDSNode::InsertRecord(void * ARecordHandle)
- {
- TItsNode *ANode = new TItsNode();
- FNodes->Insert((int)ARecordHandle, ANode);
- TcxDataRecordHandle *Result = (TcxDataRecordHandle*)ARecordHandle;
- DataChanged();
- if (!Modified) FModified = true;
- return Result;
- }
- //---------------------------------------------------------------------------
- void __fastcall TCDSNode::DeleteRecord(void * ARecordHandle)
- {
- FNodes->Delete((int)ARecordHandle);
- DataChanged();
- if (!Modified) FModified = true;
- }
- //---------------------------------------------------------------------------
- int __fastcall TCDSNode::GetRecordCount(void)
- {
- return FNodes->Count;
- }
- //---------------------------------------------------------------------------
- Variant __fastcall TCDSNode::GetValue(void * ARecordHandle, void * AItemHandle)
- {
- int AColumnId = GetDefaultItemID((int)AItemHandle);
- TItsNode *ANode = FNodes->Node[(int)ARecordHandle];
- Variant Result;
- #if 0
- switch (AColumnId)
- {
- case IndexOfID:
- Result = ACustomer->ID; break;
- case IndexOfName:
- Result = ACustomer->Name; break;
- case IndexOfDescription:
- Result = ACustomer->Description; break;
- }
- #else
- Result = ANode->NODE_ID;
- #endif
- return (Result);
- }
- //---------------------------------------------------------------------------
- void __fastcall TCDSNode::SetValue(void * ARecordHandle, void * AItemHandle, const Variant &AValue)
- {
- int AColumnId = GetDefaultItemID((int)AItemHandle);
- TItsNode *ANode = FNodes->Node[(int)ARecordHandle];
- #if 0
- switch (AColumnId)
- {
- case IndexOfID:
- if (VarIsNull(AValue))
- ACustomer->ID = 0;
- else
- ACustomer->ID = AValue;
- break;
- case IndexOfName:
- ACustomer->Name = VarToStr(AValue);
- break;
- case IndexOfDescription:
- ACustomer->Description = VarToStr(AValue);
- break;
- }
- #else
- #endif
- if (!Modified) FModified = true;
- }
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- TItsNodeManager *ItsNodeManager = NULL;
- //---------------------------------------------------------------------------
- /*
- * Link Manager
- */
- TItsNodeManager::TItsNodeManager()
- {
- }
- //---------------------------------------------------------------------------
- TItsNodeManager::~TItsNodeManager()
- {
- }
- //---------------------------------------------------------------------------
- bool TItsNodeManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- sQry = "SELECT A.NODE_ID, A.NODE_TYPE, A.NODE_NAME, \r\n"
- " A.TURN_P, A.RMRK, A.X_CRDN, A.Y_CRDN \r\n"
- " FROM TB_NODE A \r\n";
- // " ORDER BY A.NODE_ID \r\n";
- try
- {
- FLists.Lock();
- FLists.RemoveAll();
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Open();
- //int nRows = pADO->RecordCount;
- for( ; !pADO->Eof; pADO->Next())
- {
- TItsNode *pNode = new TItsNode();
- pNode->FNODE_ID = pADO->FieldByName("NODE_ID")->AsString; //노드ID
- pNode->FNODE_TYPE = pADO->FieldByName("NODE_TYPE")->AsString; //노드유형
- pNode->FNODE_NAME = pADO->FieldByName("NODE_NAME")->AsString.Trim(); //교차로명칭
- pNode->FTURN_P = pADO->FieldByName("TURN_P")->AsString; //회전제한유무
- pNode->FRMRK = pADO->FieldByName("RMRK")->AsString.Trim(); //비고
- pNode->FX_CRDN = pADO->FieldByName("X_CRDN")->AsString; //X 좌표
- pNode->FY_CRDN = pADO->FieldByName("Y_CRDN")->AsString; //Y 좌표
- FLists.Push(pNode->NODE_ID, pNode);
- pNode->Completed = true;
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsNodeManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(Exception &exception)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsNodeManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- FLists.UnLock();
- }
- return true;
- }
- //---------------------------------------------------------------------------
|