#include "loadmapping.h" #include QHash > > *LoadMapping::loads=NULL; QHash > *LoadMapping::loadsToLoadInfo=NULL; LoadMapping::LoadMapping() { // if(!LoadMapping::ht) // { // LoadMapping::ht=new QHash >; // } if(!LoadMapping::loads) { LoadMapping::loads=new QHash > >; } if(!LoadMapping::loadsToLoadInfo) { LoadMapping::loadsToLoadInfo=new QHash >; } } LoadMapping::~LoadMapping() { } bool LoadMapping::broadcastUpdateByTime(const QTime& time) { QList keys; keys=LoadMapping::loadsToLoadInfo->keys(); for(QList::iterator ite=keys.begin(); ite!=keys.end(); ite++ ) { QSharedPointer t=(*LoadMapping::loadsToLoadInfo)[*ite]; t->updateByTime(time); } return true; } QSharedPointer LoadMapping::getALoad(const QString& id) { return (*this->loadsToLoadInfo)[id]; } QVector > LoadMapping::getSubstationLoad(const QString& id) { if(!this->loads->contains(id)) { return QVector >(); } return (*this->loads)[id]; } bool LoadMapping::load(const QString &loadDir,const QString &matchdDir,const QString &exceptionFile) { if(LoadMapping::loadsToLoadInfo->keys().length()>0) { return true;//只执行一次 } if(!QFileInfo::exists(loadDir)) { std::cout<<"load file not exists."<readMatch(matchdDir)) { std::cout<<"read match failed"<loadMatchException.init(exceptionFile); if(!this->readLoads(loadDir)) { std::cout<<"read load failed"<loadMatchException.contains(fileName)) { std::cout<<"ignore "<loadsToLoadInfo->contains(fileName)) { std::cout< loadInfo=(*this->loadsToLoadInfo)[fileName]; // std::cout<<"file name "<setLoadPath(filePath); } return true; } bool LoadMapping::readMatch(const QString& dir) { RecurseDir recurseDir; recurseDir.setDir((dir)); QStringList filePathList=recurseDir.getFiles(); foreach(QString filePath,filePathList) { QFileInfo fileInfo(filePath); if(!fileInfo.exists()) { return false; } QString suffix; suffix=fileInfo.suffix(); if(suffix.toLower()!="csv") { continue; } QFile file(filePath); QString line; QStringList sep; if(file.open(QFile::ReadOnly)) { QTextStream reader(&file); while(!reader.atEnd()) { line=reader.readLine().trimmed(); sep=line.split(','); if(sep.length()<2) { continue; } QString SFDid; QRegExp regExp("\\(.*\\)"); SFDid=sep.at(0); SFDid=SFDid.replace(regExp,""); // QVector > loads; for(int i=1;i t(new LoadInfo); t->setLoadName(sep.at(i)); // if(sep.at(i).trimmed()=="") // { // std::cout<<"empy "<loadsToLoadInfo)[sep.at(i)]=t; // if(SFDid=="SFD-43064") // { // std::cout<<"SFD-43064 "<getSubstationLoad("SFD-43064").length()<loads)[SFDid].push_back(t); } } file.close(); } } return true; }