#include "loadmapping.h" #include QHash > *LoadMapping::ht=NULL; LoadMapping::LoadMapping() { if(!LoadMapping::ht) { LoadMapping::ht=new QHash >; } } LoadMapping::~LoadMapping() { } bool LoadMapping::load(const QString &loadDir,const QString &matchdDir,const QString &exceptionFile) { if(LoadMapping::ht->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]; loadInfo->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)); loads.push_back(t); this->loadsToLoadInfo[sep.at(i)]=t; } this->loads[SFDid]=loads; } file.close(); } } return true; }