?? cdrwritecombined.cpp
字號:
/*********************************************************************** * Module: CExceptionADO.h * Author: asus * Modified: 2006年4月27日 10:35:46 * Purpose: Declaration of the class CExceptionADO * Comment: 合并數(shù)據(jù)的接口類 ***********************************************************************/#include "CDRWriteCombined.h"#include<stdio.h>#include<stdlib.h>#include<string.h>C_CDRWriteCombined::C_CDRWriteCombined(){ }C_CDRWriteCombined::~C_CDRWriteCombined(){ }void C_CDRWriteCombined::ClearArray(vector<S_InsertArray*> *vChange){ int i,all; if(vChange != NULL) { all = vChange->size(); for(i=0;i< all;i++) { S_InsertArray* p = vChange->at(i); if(p != NULL) { delete p; p = NULL; } } vChange->clear(); }}void C_CDRWriteCombined::ClearArrays( vector<S_InsertArray*> *vCdr, vector<S_InsertArray*> *vChange, vector<S_InsertArray*> *vLlotv, vector<S_InsertArray*> *vLcomm){ ClearArray(vCdr); ClearArray(vChange); ClearArray(vLlotv); ClearArray(vLcomm);}bool C_CDRWriteCombined::InsertSCDR(S_CSCDR* pCDR, int nCdrs, S_LCLOC* pChanageLoc, int nChangeLoc, S_LLOTV* pLOTV, int nLOTV, S_LCOMM* pCommon, int nCommon, int nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99 char szTableDate[10], char pOutSzSeqId[21]){ int i; int result; snprintf(szTableDate, 20, "%s", GetSysdate()); snprintf(pCDR->TableName, LEN_TABLENAME+1, "CSCDR%s", szTableDate); if((result = DbCSCDRInsert(pCDR, &m_Out)) != SQL_OK) { return false; } char szSeqId[LEN_SEQ+1]; snprintf(szSeqId, LEN_SEQ+1, "%s", pCDR->SeqId); for(i=0;i<nLOTV;i++) { snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CS%s", szTableDate); snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId); if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK) { return false; } } for(i=0;i<nCommon;i++) { snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CS%s", szTableDate); snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId); if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK) { return false; } } Commit();#ifdef UUU_1 int i1; int result; vector<S_InsertArray*> vCdr; vector<S_InsertArray*> vChange; vector<S_InsertArray*> vLlotv; vector<S_InsertArray*> vLcomm; for(i1=0;i1<nCdrs;i1++) { S_InsertArray* p = new S_InsertArray; memset(p,0, sizeof(S_InsertArray)); snprintf(p->SeqId, 20, "%s", pCDR[i1].SeqId); p->bRead = false; vCdr.push_back(p); // cout << "SCDR " <<i << "#" << p->SeqId<< "#" << endl; } for(i1=0;i1<nLOTV;i1++) { S_InsertArray* p = new S_InsertArray; memset(p,0, sizeof(S_InsertArray)); snprintf(p->SeqId, 20, "%s", pLOTV[i1].SeqId); p->bRead = false; vLlotv.push_back(p); // cout << "nLOTV " <<i << "#" << p->SeqId<< "#" << endl; } for(i1=0;i1<nCommon;i1++) { S_InsertArray* p = new S_InsertArray; memset(p,0, sizeof(S_InsertArray)); snprintf(p->SeqId, 20, "%s", pCommon[i1].SeqId); p->bRead = false; vLcomm.push_back(p); // cout << "nCommon " <<i << "#" << p->SeqId << "#"<< endl; } int jj; int i; for(jj=0;jj<nCdrs;jj++) { snprintf(szTableDate, 20, "%s", GetSysdate()); snprintf(pCDR[jj].TableName, LEN_TABLENAME+1, "CSCDR%s", szTableDate); // printf("@@@%s@@@\n", pCDR[i].LevelOfCamelService); if((result = DbCSCDRInsert(&pCDR[jj], &m_Out)) != SQL_OK) { ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm); return false; } char szSeqId[LEN_SEQ+1]; snprintf(szSeqId, LEN_SEQ+1, "%s", m_Out.SeqId); S_InsertArray* pTemp = vCdr.at(jj); char* szSeqId2 = pTemp->SeqId; for(i=0;i<nLOTV;i++) { S_InsertArray *p = vLlotv.at(i); if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0) { p->bRead = true; //滿足要求,則插入相應(yīng)的表中 snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CS%s", szTableDate); snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId); if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK) { ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm); return false; } } } for(i=0;i<nCommon;i++) { S_InsertArray *p = vLcomm.at(i); if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0) { p->bRead = true; snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CS%s", szTableDate); snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId); if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK) { ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm); return false; } } } } Commit(); ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);#endif return true;}bool C_CDRWriteCombined::InsertGCDR(S_CGCDR* pCDR, int nCdrs, S_LCLOC* pChanageLoc, int nChangeLoc, S_LLOTV* pLOTV, int nLOTV, S_LCOMM* pCommon, int nCommon, int nFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99 char szTableDate[10], char pOutSzSeqId[21]){ int i; int result; snprintf(szTableDate, 20, "%s", GetSysdate()); snprintf(pCDR->TableName, LEN_TABLENAME+1, "CGCDR%s", szTableDate); if((result = DbCGCDRInsert(pCDR, &m_Out)) != SQL_OK) { return false; } char szSeqId[LEN_SEQ+1]; snprintf(szSeqId, LEN_SEQ+1, "%s", pCDR->SeqId); for(i=0;i<nLOTV;i++) { snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CG%s", szTableDate); snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId); if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK) { return false; } } for(i=0;i<nCommon;i++) { snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CG%s", szTableDate); snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId); if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK) { return false; } } Commit();#ifdef UUU_1 int i; int result; int jj; vector<S_InsertArray*> vCdr; vector<S_InsertArray*> vChange; vector<S_InsertArray*> vLlotv; vector<S_InsertArray*> vLcomm; for(i=0;i<nCdrs;i++) { S_InsertArray* p = new S_InsertArray; memset(p,0, sizeof(S_InsertArray)); snprintf(p->SeqId, 20, "%s", pCDR[i].SeqId); p->bRead = false; vCdr.push_back(p);// cout << "SCDR " <<i << "#" << p->SeqId<< "#" << endl; } for(i=0;i<nLOTV;i++) { S_InsertArray* p = new S_InsertArray; memset(p,0, sizeof(S_InsertArray)); snprintf(p->SeqId, 20, "%s", pLOTV[i].SeqId); p->bRead = false; vLlotv.push_back(p); // cout << "nLOTV " <<i << "#" << p->SeqId<< "#" << endl; } for(i=0;i<nCommon;i++) { S_InsertArray* p = new S_InsertArray; memset(p,0, sizeof(S_InsertArray)); snprintf(p->SeqId, 20, "%s", pCommon[i].SeqId); p->bRead = false; vLcomm.push_back(p);// cout << "nCommon " <<i << "#" << p->SeqId << "#"<< endl; } for(jj=0;jj<nCdrs;jj++) { snprintf(szTableDate, 20, "%s", GetSysdate()); snprintf(pCDR[jj].TableName, LEN_TABLENAME+1, "CGCDR%s", szTableDate); // cout << "####### " << szTableDate << " #####" << endl; // cout << "####### " << pCDR[i].TableName << " #####" << endl; // cout << "@@@" <<pCDR[i].CallDuration << "@@@" << endl; //cout << "@@@" <<pCDR[i].LocationAreaCode << "@@@" << endl; // printf("*****%s****\n", pCDR[i].CallDuration); if((result = DbCGCDRInsert(&pCDR[jj], &m_Out)) != SQL_OK) { ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm); return false; } char szSeqId[LEN_SEQ+1]; snprintf(szSeqId, LEN_SEQ+1, "%s", m_Out.SeqId); S_InsertArray* pTemp = vCdr.at(jj); char* szSeqId2 = pTemp->SeqId; for(i=0;i<nLOTV;i++) { S_InsertArray *p = vLlotv.at(i); if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0) { p->bRead = true; //滿足要求,則插入相應(yīng)的表中 snprintf(pLOTV[i].TableName, LEN_TABLENAME+1, "LLOTV_CG%s", szTableDate); snprintf(pLOTV[i].SeqId, LEN_SEQ+1, "%s", szSeqId); if((result = DbLLOTVInsert(&pLOTV[i], &m_Out)) != SQL_OK) { ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm); return false; } } } // printf("TIMES3 = %s\n",szSeqId2); for(i=0;i<nCommon;i++) { S_InsertArray *p = vLcomm.at(i); if(!p->bRead && strcmp(szSeqId2, p->SeqId) == 0) { // printf("from:%s to:%s \n", szSeqId2, p->SeqId); p->bRead = true; snprintf(pCommon[i].TableName, LEN_TABLENAME+1, "LCOMM_CG%s", szTableDate); snprintf(pCommon[i].SeqId, LEN_SEQ+1, "%s", szSeqId);/* cout << "CauseForRecordClosing:"<<pCommon[i].CauseForRecordClosing << endl; cout << "LRSN:"<<pCommon[i].LRSN << endl; cout << "NodeId:"<<pCommon[i].NodeId << endl; cout << "RecordExtensions:"<<pCommon[i].RecordExtensions << endl; cout << "RNC:"<<pCommon[i].RNC << endl; cout << "RSN:"<<pCommon[i].RSN << endl; cout << "SeqId:"<<pCommon[i].SeqId << endl; cout << "SGSNAddr:"<<pCommon[i].SGSNAddr << endl; cout << "SGSNChange:"<<pCommon[i].SGSNChange << endl; cout << "SubId:"<<pCommon[i].SubId << endl; cout << "SystemType:"<<pCommon[i].SystemType << endl;*/ if((result = DbLCOMMInsert(&pCommon[i], &m_Out)) != SQL_OK) { ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm); // printf("ERROR\n"); return false; } } }// printf("TIMES4 = %s\n",szSeqId2); }// exit(0); Commit(); ClearArrays(&vCdr, &vChange, &vLlotv, &vLcomm);#endif return true;}void C_CDRWriteCombined::Test(){ S_CSCDR pSCDR; S_LCLOC pSChanageLoc[2]; S_LLOTV pSLOTV[2]; S_LCOMM pSCommon[2]; int nSLOTV=2; int nSChangeLoc=2; int nSCommon=2; int nSFlagR4V99=1; //0 - normal ; 1 - R4 ; 2- R99 char szSTableDate[10]; char pSOutSzSeqId[21]; memset(&pSCDR,0,sizeof(pSCDR)); memset(pSChanageLoc,0,sizeof(pSChanageLoc)); memset(pSLOTV,0,sizeof(pSLOTV)); memset(pSCommon,0,sizeof(pSCommon)); char a[1000]; memset(a,'1',1000); memset(&pSCDR,0,sizeof(pSCDR)); memset(&pSChanageLoc,0,sizeof(pSChanageLoc)); memset(&pSLOTV,0,sizeof(pSLOTV)); memset(&pSCommon,0,sizeof(pSCommon)); pSChanageLoc[0].SeqId[0] = '0'; pSLOTV[0].SeqId[0] = '0'; pSCommon[0].SeqId[0] = '0'; pSChanageLoc[1].SeqId[0] = '1'; pSLOTV[1].SeqId[0] = '1'; pSCommon[1].SeqId[0] = '0'; memset(&pSCDR, 0, sizeof(pSCDR)); pSCDR.RecordType = 2; char NetworkInitiatedPDPContext=1;/*int*/ memcpy(pSCDR.ServedIMSI,"11111111111111111111111111111111",LEN_ServedIMSI); memcpy(pSCDR.ServedIMEI,"11111111111111111111111111",LEN_ServedIMEI); memcpy(pSCDR.SGSNIPAddress,"11111111111111111111111111111111111111",46-1); memcpy(pSCDR.MSNetworkCapability,"12345678",LEN_MSNetworkCapability); memcpy(pSCDR.RoutingAreaCode,"12345678",9-1); memcpy(pSCDR.LocationAreaCode,"1234567890123456",17-1); memcpy(pSCDR.CellIdentity,"123456789012345678901234567",25-1); memcpy(pSCDR.ChargingID,"1234567890",10); memcpy(pSCDR.GGSNAddress,"1234567890",46-1); memcpy(pSCDR.AccessPointNameNI,a,64-1); memcpy(pSCDR.PDPTypeNumber,a,9-1); memcpy(pSCDR.ServedPDPAddress,a,46-1); memcpy(pSCDR.RecordOpenTime,"20001010202020",LEN_DATETIME ); memcpy(pSCDR.CallDuration,a,12); pSCDR.Diagnostics[0]=1; pSCDR.APNSelectionMode=1; memcpy(pSCDR.AccessPointNameOI,a,38-1); memcpy(pSCDR.ServedMSISDN,a,LEN_ServedMSISDN); memcpy(pSCDR.ChargingCharacteristics,a,LEN_ChargingCharacteristics); memcpy(pSCDR.ConsolidationResult,a,3-1); pSCDR.ChargingCharacterSelectionMode=2; memcpy(pSCDR.SCFAddress,a,LEN_SCFAddress); memcpy(pSCDR.ServiceKey,a,10-1); pSCDR.DefaultTransacHandling=9; memcpy(pSCDR.CAMELAPNNI,a,64-1); memcpy(pSCDR.CAMELAPNOI,a,38-1); memcpy(pSCDR.NumberOfDPEncounter,a,10); memcpy(pSCDR.LevelOfCamelService,a,3); memcpy(pSCDR.FreeFormatData,a,160); pSCDR.FFDAppendIndicator=3; pSCDR.DefaultSMSHandling=3; memcpy(pSCDR.CAMELCallingPartyNumber,a,14); memcpy(pSCDR.CAMELAccessDestinationSubNumber,a,43); memcpy(pSCDR.CAMELSMSAdress,a,20); memcpy(pSCDR.SmsReferenceNumber,a,9-1); memcpy(pSCDR.Diagnostics,a,2); pSCDR.Diagnostics[2]=0; pSCDR.DynamicAddressFlag=2; pSCDR.AnonyAccessIndicator=2; memcpy(pSCDR.APNOperatorIdentifier,a,37);/* both for R99 & R4 */ printf("=======SCDR==========\n"); InsertSCDR((S_CSCDR*)&pSCDR, 1, (S_LCLOC*)&pSChanageLoc, nSChangeLoc, (S_LLOTV*)&pSLOTV, nSLOTV, (S_LCOMM*)&pSCommon, nSCommon, nSFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99 szSTableDate, pSOutSzSeqId); S_CGCDR pGCDR; S_LCLOC pGChanageLoc[2]; S_LLOTV pGLOTV[2]; S_LCOMM pGCommon[12]; int nGLOTV=1; int nGChangeLoc=1; int nGCommon=12; int nGFlagR4V99=1; //0 - normal ; 1 - R4 ; 2- R99 char szGTableDate[10]; char pGOutSzSeqId[21]; printf("S=%s T=%s\n", pSCDR.SeqId, pSCDR.TableName);// printf("=======GCDR==========\n"); /* memset(&pGCDR,0,sizeof(pGCDR)); memset(pGChanageLoc,0,sizeof(pGChanageLoc)); memset(pGLOTV,0,sizeof(pGLOTV)); memset(pGCommon,0,sizeof(pGCommon)); memset(&pGCDR, 0, sizeof(pGCDR)); pGCDR.RecordType = 2; memcpy(pGCDR.ServedIMSI,"11111111111111111111111111111111",LEN_ServedIMSI);// memcpy(pGCDR.ServedIMEI,"11111111111111111111111111",LEN_ServedIMEI); memcpy(pGCDR.SGSNIPAddress,"11111111111111111111111111111111111111",46-1);// memcpy(pGCDR.MSNetworkCapability,"12345678",8);// memcpy(pGCDR.RoutingAreaCode,"12345678",9-1);// memcpy(pGCDR.LocationAreaCode,"1234567890123456",17-1);// memcpy(pGCDR.CellIdentity,"123456789012345678901234567",25-1); memcpy(pGCDR.ChargingID,"1234567890",10); memcpy(pGCDR.GGSNAddress,"1234567890",46-1); memcpy(pGCDR.AccessPointNameNI,a,64-1); memcpy(pGCDR.PDPTypeNumber,a,9-1); memcpy(pGCDR.ServedPDPAddress,a,46-1); memcpy(pGCDR.RecordOpenTime,"20001010202020",LEN_DATETIME ); memcpy(pGCDR.CallDuration,a,12); pGCDR.Diagnostics[0]=1; pGCDR.APNSelectionMode=1;// memcpy(pGCDR.AccessPointNameOI,a,38-1); memcpy(pGCDR.ServedMSISDN,a,LEN_ServedMSISDN); memcpy(pGCDR.ChargingCharacteristics,a,LEN_ChargingCharacteristics); memcpy(pGCDR.ConsolidationResult,a,3-1); pGCDR.ChargingCharacterSelectionMode=2;// memcpy(pGCDR.SCFAddress,a,LEN_SCFAddress);// memcpy(pGCDR.ServiceKey,a,10-1);// pGCDR.DefaultTransacHandling=9;// memcpy(pGCDR.CAMELAPNNI,a,64-1);// memcpy(pGCDR.CAMELAPNOI,a,38-1);// memcpy(pGCDR.NumberOfDPEncounter,a,10);/// memcpy(pGCDR.LevelOfCamelService,a,3);// memcpy(pGCDR.FreeFormatData,a,160);// pGCDR.FFDAppendIndicator=3;// pGCDR.DefaultSMSHandling=3;// memcpy(pGCDR.CAMELCallingPartyNumber,a,14);// memcpy(pGCDR.CAMELAccessDestinationSubNumber,a,43);// memcpy(pGCDR.CAMELSMSAdress,a,20);// memcpy(pGCDR.SmsReferenceNumber,a,9-1); pGCDR.DynamicAddressFlag=7; pGCDR.AnonyAccessIndicator=2; snprintf(pGCDR.RemotePdpAddr,45,"192.168.0.1"); snprintf(pGCDR.SgsnPlmnIdentifier, 4, "001");// memcpy(pGCDR.APNOperatorIdentifier,a,37); for(int i=0;i<12;i++) { pGCommon[i].SeqId[0] = '0'; } for(int i=0;i<1;i++) { InsertGCDR((S_CGCDR*)&pGCDR, 1, (S_LCLOC*)&pGChanageLoc, nGChangeLoc, (S_LLOTV*)&pGLOTV, nGLOTV, (S_LCOMM*)&pGCommon, nGCommon, nGFlagR4V99, //0 - normal ; 1 - R4 ; 2- R99 szGTableDate, pGOutSzSeqId); printf("S=%s T=%s\n", pGCDR.SeqId, pGCDR.TableName); }*/ printf("Say Good Bye to CDRWriteCombined.cpp\n");}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -