//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSVmsEvspF.h" #include "VMSOprMainLibF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TVmsEvspIfsc::TVmsEvspIfsc() { } //--------------------------------------------------------------------------- TVmsEvspIfsc::~TVmsEvspIfsc() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsEvspLink::TVmsEvspLink() { } //--------------------------------------------------------------------------- TVmsEvspLink::~TVmsEvspLink() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsEvsp::TVmsEvsp() { FCompleted = false; FEditMode = DB_INIT; FGridIndex = -1; MEM_DEL = "N"; VMS_EVSP_NM = ""; ///VARCHAR2(60) Y VMS ±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£ ¸í DSPL_STRT_NODE_NM = ""; //VARCHAR2(30) Y Ç¥Ãâ ½ÃÀÛ ³ëµå ¸í DSPL_END_NODE_NM = ""; //VARCHAR2(30) Y Ç¥Ãâ Á¾·á ³ëµå ¸í DETR_ID = 0; //NUMBER(10) Y ¿ìȸµµ·Î ID USE_YN = "Y"; AXIS_YN = "N"; DEL_YN = "N"; } //--------------------------------------------------------------------------- TVmsEvsp::~TVmsEvsp() { FLists.RemoveAll(); } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsEvspManager *VmsEvspManager = NULL; //--------------------------------------------------------------------------- TVmsEvspManager::TVmsEvspManager() { } //--------------------------------------------------------------------------- TVmsEvspManager::~TVmsEvspManager() { FLists.RemoveAll(); } //--------------------------------------------------------------------------- bool TVmsEvspManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; FLists.Lock(); try { FLists.RemoveAll(); } __finally { FLists.UnLock(); } sQry = "SELECT A.* \r\n" " FROM TB_VMS_EVSP A \r\n" " ORDER BY A.VMS_EVSP_ID \r\n"; FLists.Lock(); try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { TVmsEvsp *pObj = new TVmsEvsp(); pObj->VMS_EVSP_ID = pADO->FieldByName("VMS_EVSP_ID")->AsInteger; pObj->VMS_EVSP_NM = pADO->FieldByName("VMS_EVSP_NM")->AsString; pObj->DSPL_STRT_NODE_NM = pADO->FieldByName("DSPL_STRT_NODE_NM")->AsString; pObj->DSPL_END_NODE_NM = pADO->FieldByName("DSPL_END_NODE_NM")->AsString; pObj->DETR_ID = pADO->FieldByName("DETR_ID")->AsInteger; pObj->USE_YN = pADO->FieldByName("USE_YN")->AsString; pObj->ROAD_NM = pADO->FieldByName("ROAD_NM")->AsString; pObj->SPOT_NM = pADO->FieldByName("SPOT_NM")->AsString; pObj->AXIS_YN = pADO->FieldByName("AXIS_YN")->AsString; pObj->DEL_YN = "N"; FLists.Push(pObj->VMS_EVSP_ID, pObj); pObj->Completed = true; } } catch(EDatabaseError &E) { DBERRORMSG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£Á¤º¸Á¶È¸", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£Á¤º¸Á¶È¸", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return LoadSubFromDb(ADbConn); } //--------------------------------------------------------------------------- bool TVmsEvspManager::LoadSubFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; #if 0 sQry = "SELECT A.*, NVL(B.IFSC_NM, '-') AS IFSC_NM \r\n" " FROM TB_VMS_EVSP_RLTN_IFSC A, \r\n" " TB_IFSC B \r\n" " WHERE A.IFSC_ID = B.IFSC_ID(+) \r\n" " ORDER BY A.VMS_EVSP_ID, A.ORD \r\n"; #else sQry = "SELECT A.*, NVL(B.ROAD_NAME, '-') AS LINK_NM \r\n" " FROM TB_VMS_EVSP_RLTN_LINK A, \r\n" " TB_LINK B \r\n" " WHERE A.LINK_ID = B.LINK_ID(+) \r\n" " ORDER BY A.VMS_EVSP_ID, A.ORD \r\n"; #endif FLists.Lock(); try { TVmsEvsp *pEvsp; TVmsEvspLink *pObj; int VMS_EVSP_ID; int ORD; try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { VMS_EVSP_ID = pADO->FieldByName("VMS_EVSP_ID")->AsInteger; ORD = pADO->FieldByName("ORD")->AsInteger; pEvsp = FLists.Find(VMS_EVSP_ID); if (!pEvsp) continue; pObj = pEvsp->FLists.Find(ORD); if (!pObj) { pObj = new TVmsEvspLink(); pEvsp->FLists.Push(ORD, pObj); } pObj->VMS_EVSP_ID = VMS_EVSP_ID; pObj->ORD = ORD; pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString; pObj->LINK_NM = pADO->FieldByName("LINK_NM")->AsString; } } catch(EDatabaseError &E) { DBERRORMSG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£¸µÅ©Á¤º¸Á¶È¸", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£¸µÅ©Á¤º¸Á¶È¸", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsEvspManager::GetNextVmsEvspId(int &AEvspId, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT NVL(MAX(VMS_EVSP_ID), 0) + 1 AS NEWID FROM TB_VMS_EVSP \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Open(); AEvspId = pADO->FieldByName("NEWID")->AsInteger; return true; } catch(EDatabaseError &E) { DBERRORLOG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£IDÁ¶È¸", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£IDÁ¶È¸", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return false; } //--------------------------------------------------------------------------- bool TVmsEvspManager::DeleteVmsEvsp(TVmsEvsp *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; try { String sEvspId = String(AObj->VMS_EVSP_ID); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); //VMS LINK ±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£ sQry = "DELETE FROM TB_VMS_EVSP_RLTN_LINK WHERE VMS_EVSP_ID = :p01"; pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = sEvspId; pADO->ExecSQL(); //VMS ±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£ °ü°è sQry = "DELETE FROM TB_VMS_RLTN_EVSP WHERE VMS_EVSP_ID = :p01"; pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = sEvspId; pADO->ExecSQL(); //VMS_±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£ #if 1 sQry = "DELETE FROM TB_VMS_EVSP WHERE VMS_EVSP_ID = :p01"; #else sQry = "UPDATE TB_VMS_EVSP SET USE_YN = 'N' WHERE VMS_EVSP_ID = :p01"; #endif pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = sEvspId; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORLOG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£»èÁ¦", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£»èÁ¦", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsEvspManager::InsertVmsEvsp(TVmsEvsp *AObj, TADOConnection *ADbConn/*=NULL*/) { return MergeVmsEvsp(AObj, ADbConn); } //--------------------------------------------------------------------------- bool TVmsEvspManager::UpdateVmsEvsp(TVmsEvsp *AObj, TADOConnection *ADbConn/*=NULL*/) { return MergeVmsEvsp(AObj, ADbConn); } //--------------------------------------------------------------------------- bool TVmsEvspManager::MergeVmsEvsp(TVmsEvsp *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; int ii; sQry = "MERGE INTO TB_VMS_EVSP L \r\n" "USING (SELECT :p01 AS VMS_EVSP_ID, \r\n" " :p02 AS VMS_EVSP_NM, \r\n" " :p03 AS DSPL_STRT_NODE_NM, \r\n" " :p04 AS DSPL_END_NODE_NM, \r\n" " :p05 AS DETR_ID, \r\n" " :p06 AS USE_YN, \r\n" " :p07 AS ROAD_NM, \r\n" " :p08 AS SPOT_NM, \r\n" " :p09 AS AXIS_YN, \r\n" " :p10 AS CNGS_SPED \r\n" " FROM DUAL) M \r\n" " ON (L.VMS_EVSP_ID = M.VMS_EVSP_ID) \r\n" "WHEN MATCHED \r\n" "THEN \r\n" " UPDATE SET L.VMS_EVSP_NM = M.VMS_EVSP_NM, \r\n" " L.DSPL_STRT_NODE_NM = M.DSPL_STRT_NODE_NM, \r\n" " L.DSPL_END_NODE_NM = M.DSPL_END_NODE_NM, \r\n" " L.DETR_ID = M.DETR_ID, \r\n" " L.USE_YN = M.USE_YN, \r\n" " L.ROAD_NM = M.ROAD_NM, \r\n" " L.SPOT_NM = M.SPOT_NM, \r\n" " L.AXIS_YN = M.AXIS_YN, \r\n" " L.CNGS_SPED = M.CNGS_SPED \r\n" "WHEN NOT MATCHED \r\n" "THEN \r\n" " INSERT (VMS_EVSP_ID, \r\n" " VMS_EVSP_NM, \r\n" " DSPL_STRT_NODE_NM, \r\n" " DSPL_END_NODE_NM, \r\n" " DETR_ID, \r\n" " USE_YN, \r\n" " ROAD_NM, \r\n" " SPOT_NM, \r\n" " AXIS_YN, \r\n" " CNGS_SPED ) \r\n" " VALUES (M.VMS_EVSP_ID, \r\n" " M.VMS_EVSP_NM, \r\n" " M.DSPL_STRT_NODE_NM, \r\n" " M.DSPL_END_NODE_NM, \r\n" " M.DETR_ID, \r\n" " M.USE_YN, \r\n" " M.ROAD_NM, \r\n" " M.SPOT_NM, \r\n" " M.AXIS_YN, \r\n" " M.CNGS_SPED ) \r\n"; try { try { String sDetrId = ""; if (AObj->DETR_ID != 0) sDetrId = String(AObj->DETR_ID); pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_EVSP_ID; pADO->Parameters->ParamByName("p02")->Value = AObj->VMS_EVSP_NM; pADO->Parameters->ParamByName("p03")->Value = AObj->DSPL_STRT_NODE_NM; pADO->Parameters->ParamByName("p04")->Value = AObj->DSPL_END_NODE_NM; pADO->Parameters->ParamByName("p05")->Value = sDetrId; pADO->Parameters->ParamByName("p06")->Value = AObj->USE_YN; pADO->Parameters->ParamByName("p07")->Value = AObj->ROAD_NM; pADO->Parameters->ParamByName("p08")->Value = AObj->SPOT_NM; pADO->Parameters->ParamByName("p09")->Value = AObj->AXIS_YN; pADO->Parameters->ParamByName("p10")->Value = "0"; pADO->ExecSQL(); //VMS LINK ±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£ sQry = "DELETE FROM TB_VMS_EVSP_RLTN_LINK WHERE VMS_EVSP_ID = :p01"; pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_EVSP_ID; pADO->ExecSQL(); #if 0 sQry = "INSERT INTO TB_VMS_EVSP_RLTN_IFSC(VMS_EVSP_ID, IFSC_ID, ORD) VALUES(:p01, :p02, :p03)"; #else sQry = "INSERT INTO TB_VMS_EVSP_RLTN_LINK(VMS_EVSP_ID, LINK_ID, ORD) VALUES(:p01, :p02, :p03)"; #endif ii = 0; pADO->SQL->Clear(); pADO->SQL->Text = sQry; FOR_STL(TVmsEvspLink *, pLink, AObj->FLists) { pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_EVSP_ID; pADO->Parameters->ParamByName("p02")->Value = pLink->LINK_ID; pADO->Parameters->ParamByName("p03")->Value = String(pLink->ORD); pADO->ExecSQL(); ii++; } return true; } catch(EDatabaseError &E) { DBERRORLOG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£Á¤º¸ÀúÀå", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("VMS±ä±ÞÂ÷·®¿ì¼±½ÅÈ£±¸°£Á¤º¸ÀúÀå", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //---------------------------------------------------------------------------