BOOL GetMonitorListByFile(CMonitorList &lstMonitor,const char *FileTitle) { CString strFileName; strFileName.Format("%s/MonitorManager/%s.txt",g_strRootPath.getText(),FileTitle); puts(strFileName); FILE *pf=fopen(strFileName.getText(),"r+"); char buf[256]={0}; if(pf) { CString strid=""; LoadConfig lc; lc.LoadAll(); while(!feof(pf)) { char *p=fgets(buf,255,pf); //puts(p); if(p!=NULL) { strid=p; strid.Replace("\r",""); strid.Replace("\n",""); Monitor *pM=new Monitor; try{ if(lc.CreateSingleMonitor(pM,strid.getText())) { puts("Create ok"); lstMonitor.push_back(pM); puts("push ok"); } else { puts("Create failed"); delete pM; } memset(buf,0,256); }catch(...) { delete pM; } }else break; } fclose(pf); }else throw MSException("Open file failed"); return (lstMonitor.size()>0); }
bool MakeMonitorListByBuf(CMonitorList &lstMonitor,const char *buf) { if(g_pOption==NULL) return false; const char *pt=buf; string str; LoadConfig lc; lc.m_pOption=g_pOption; lc.LoadAll(); do{ str=pt; if(str.empty()) break; Monitor *pM=new Monitor(); if(pM==NULL) break; try{ if(lc.CreateSingleMonitor(pM,str.c_str())) { puts("Create ok"); lstMonitor.push_back(pM); puts("push ok"); } else { puts("Create failed"); delete pM; } }catch(...) { puts("Create exception"); delete pM; } pt+=str.size()+1; }while(pt[0]!='\0'); return true; }
int SerialData::Serial(FILE *pf,CMonitorList &MonitorList,Groups *pGroups,Subsequent *pSubsequent,TASKMAP &TaskMap,bool out) { if(pf==NULL) return -2; STRINGMAP strmap; if(out) { fputs("//****SiteView ECC serial data file****\r\n",pf); fputs("//****Data version 7.01****\r\n",pf); fputs("[MonitorList_Begin]\r\n",pf); CMonitorList::iterator it; for(it=MonitorList.begin();it!=MonitorList.end();it++) { strmap.clear(); if(!(*it)->ToTextMap(strmap)) continue; fputs("[Monitor_Begin]\r\n",pf); SerialStringMap(strmap,pf); fputs("[Monitor_End]\r\n",pf); } fputs("[MonitorList_End]\r\n",pf); strmap.clear(); if(!pGroups->ToTextMap(strmap)) { fclose(pf); return -3; } fputs("[Groups_Begin]\r\n",pf); SerialStringMap(strmap,pf); fputs("[Groups_End]\r\n",pf); strmap.clear(); if(!pSubsequent->ToTextMap(strmap)) { fclose(pf); return -4; } fputs("[Subsequent_Begin]\r\n",pf); SerialStringMap(strmap,pf); fputs("[Subsequent_End]\r\n",pf); fputs("[TaskMap_Begin]\r\n",pf); TASKMAP::iterator tit; Task *ptask=NULL; while(TaskMap.findnext(tit)) { strmap.clear(); if((ptask=(*tit).getvalue())==NULL) continue; if(!ptask->ToTextMap(strmap)) continue; fputs("[Task_Begin]\r\n",pf); SerialStringMap(strmap,pf); fputs("[Task_End]\r\n",pf); } fputs("[TaskMap_End]\r\n",pf); fclose(pf); }else { string sline; char line[2048]={0}; char *pc=NULL; pc=fgets(line,2048,pf); if(pc==NULL) return -5; sline=line; int pos=0; if((pos=(int)sline.find("//"))!=0) return -6; if((pos=(int)sline.find("SiteView ECC serial data file"))<0) return -7; pc=fgets(line,2048,pf); if(pc==NULL) return -10; sline=line; if((pos=(int)sline.find("//"))!=0) return -8; if((pos=(int)sline.find("Data version 7.01"))<0) return -9; int i=0; bool flag=false; while(fgets(line,2048,pf)!=NULL) { sline=line; switch(i) { case 0: if((pos=(int)sline.find("[MonitorList_Begin]"))!=0) { continue; } else { flag=true; while(true) { bool mflag=false; strmap.clear(); while((pc=fgets(line,2048,pf))!=NULL) { sline=line; if((pos=(int)sline.find("[Monitor_Begin]"))!=0) { if((pos=(int)sline.find("[MonitorList_End]"))==0) { flag=false; i++; break; } continue; } else break; } if(pc==NULL) return -11; if(!flag) break; while((pc=fgets(line,2048,pf))!=NULL) { sline=line; if((pos=(int)sline.find("[Monitor_End]"))==0) { mflag=true; break; } CovertStringToMap(sline,strmap); } if(pc==NULL) return -12; if(mflag) { Monitor *pm=new Monitor(); if(Univ::seid!=1) pm->m_isRefresh= true; if(pm->FromTextMap(strmap)) MonitorList.push_back(pm); } } } break; case 1: if((pos=(int)sline.find("[Groups_Begin]"))!=0) { continue; }else { strmap.clear(); flag=false; while((pc=fgets(line,2048,pf))!=NULL) { sline=line; if((pos=(int)sline.find("[Groups_End]"))==0) { i++; flag=true; break; } CovertStringToMap(sline,strmap); } if(pc==NULL) return -13; if(flag) pGroups->FromTextMap(strmap); } break; case 2: if((pos=(int)sline.find("[Subsequent_Begin]"))!=0) { continue; }else { strmap.clear(); flag=false; while((pc=fgets(line,2048,pf))!=NULL) { sline=line; if((pos=(int)sline.find("[Subsequent_End]"))==0) { i++; flag=true; break; } CovertStringToMap(sline,strmap); } if(pc==NULL) return -13; if(flag) pSubsequent->FromTextMap(strmap); } break; case 3: if((pos=(int)sline.find("[TaskMap_Begin]"))!=0) { continue; }else { flag=true; while(true) { bool mflag=false; strmap.clear(); while((pc=fgets(line,2048,pf))!=NULL) { sline=line; if((pos=(int)sline.find("[Task_Begin]"))!=0) { if((pos=(int)sline.find("[TaskMap_End]"))==0) { flag=false; i++; break; } continue; } else break; } if(pc==NULL) return -11; if(!flag) { return 0; } while((pc=fgets(line,2048,pf))!=NULL) { sline=line; if((pos=(int)sline.find("[Task_End]"))==0) { mflag=true; break; } CovertStringToMap(sline,strmap); } if(pc==NULL) return -12; if(mflag) { Task *pm=new Task(); if(pm->FromTextMap(strmap)) TaskMap[pm->m_taskname.c_str()]=pm; } } } break; case 4: return 0; default :break; } } } return 0; }