用QTextStream来输出Container的信息。

Signed-off-by: dmy@lab <dmy@lab.lab>
This commit is contained in:
dmy@lab 2015-01-07 21:57:50 +08:00
parent cd22eecbca
commit 1e3ad32bfa
4 changed files with 66 additions and 35 deletions

View File

@ -1,7 +1,7 @@
#include "elementhashtable.h"
#include <iostream>
ElementHashtable::ElementHashtable(QObject *parent) :
QObject(parent),currentHT(NULL)
QObject(parent),currentHT(NULL),tpRecorder(NULL)
{
}
@ -96,9 +96,14 @@ bool ElementHashtable::GoPath()
continue;//有些Terminal是没有Node的
}
std::cout<<node.toStdString()<<std::endl;
TopologyRecorder tpRecorder(this->eleHT,this->FDSet);
tpRecorder.startWithNode(node);
tpRecorder.exportTo("");
if(this->tpRecorder!=NULL)
{
delete this->tpRecorder;
this->tpRecorder=NULL;
}
this->tpRecorder=new TopologyRecorder(this->eleHT,this->FDSet);
this->tpRecorder->startWithNode(node);
this->tpRecorder->exportTo("");
break;
}
}
@ -155,6 +160,8 @@ bool ElementHashtable::Parse(const QString& xmlPWPath,const QString& xmlZWPath){
return true;
}
void ElementHashtable::SetACLineID(const QString &id)//寻找的线路ID
{
this->lineID=id;
@ -163,3 +170,15 @@ void ElementHashtable::SetFDSet(const QVector<QString> &FDSet)//FeeDer集合
{
this->FDSet=FDSet;
}
void ElementHashtable::ShowContainerInfo(const QString& fileName)
{
QString relPath="./../output/";
QFile file(relPath+fileName+".txt");
if(file.open(QFile::ReadOnly))
{
QTextStream stream(&file);
this->tpRecorder->showContainerInfo(stream);
file.close();
}
}

View File

@ -6,6 +6,7 @@
#include <QString>
#include <QDebug>
#include <QFile>
#include <QTextStream>
#include <QHash>
#include <QVector>
#include "BasicElementInfo.h"
@ -28,6 +29,7 @@ public:
bool GoPath();
void SetACLineID(const QString &id);//寻找的线路ID
void SetFDSet(const QVector<QString> &FDSet);//FeeDer集合
void ShowContainerInfo(const QString& fileName);
private:
bool child(QXmlStreamReader &reader);
bool setCurrentHashTable(QHash<QString,BasicElementInfo *> *t);
@ -38,6 +40,7 @@ private:
QHash<QString,BasicElementInfo *> *currentHT;
QString lineID;
QVector<QString> FDSet;
TopologyRecorder *tpRecorder;
signals:
public slots:

View File

@ -7,37 +7,7 @@ TopologyRecorder::TopologyRecorder(const QHash<QString,BasicElementInfo *>& elem
TopologyRecorder::~TopologyRecorder()
{
const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
std::cout<<"total tf"<<this->tfs.length()<<std::endl;
//统计一下每个Container下有多少个变压器
QHash<QString,QVector<QString> > s;
for(QVector<QString>::iterator ite=this->tfs.begin();
ite!=this->tfs.end();
ite++)
{
PowerTransformer *pf=static_cast<PowerTransformer *>(ht[*ite]);
QString container;
container=pf->getEquipmentMemberOf_EquipmentContainer();
s[container].push_back(*ite);
}
std::cout<<"container "<<s.keys().length()<<std::endl;
QList<QString> keys=s.keys();
for(QList<QString>::iterator ite=keys.begin();
ite!=keys.end();
ite++)
{
QString k=*ite;
std::cout<<k.toStdString();
Substation *sb=static_cast<Substation *>(ht[k]);
std::cout<<", "<<sb->getNamingDescription().toStdString();
QVector<QString> v=s[k];
foreach (QString n, v) {
std::cout<<", "<<n.toStdString();
PowerTransformer *pf=static_cast<PowerTransformer *>(ht[n]);
std::cout<<"("<<pf->getNamingDescription().toStdString()<<")";
}
std::cout<<std::endl;
}
}
bool TopologyRecorder::isEquipmentNeeded(const QString& substatinID)
@ -61,6 +31,43 @@ void TopologyRecorder::exportTo(const QString& path)
this->cimExporter.exportTo(path);
}
void TopologyRecorder::showContainerInfo(QTextStream &stream)
{
const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
stream<<"total tf"<<this->tfs.length()<<"\n";
//统计一下每个Container下有多少个变压器
QHash<QString,QVector<QString> > s;
for(QVector<QString>::iterator ite=this->tfs.begin();
ite!=this->tfs.end();
ite++)
{
PowerTransformer *pf=static_cast<PowerTransformer *>(ht[*ite]);
QString container;
container=pf->getEquipmentMemberOf_EquipmentContainer();
s[container].push_back(*ite);
}
std::cout<<"container "<<s.keys().length()<<std::endl;
QList<QString> keys=s.keys();
for(QList<QString>::iterator ite=keys.begin();
ite!=keys.end();
ite++)
{
QString k=*ite;
stream<<k;
Substation *sb=static_cast<Substation *>(ht[k]);
stream<<"("<<sb->getNamingDescription()<<")";
QVector<QString> v=s[k];
foreach (QString n, v) {
std::cout<<", "<<n.toStdString();
PowerTransformer *pf=static_cast<PowerTransformer *>(ht[n]);
stream<<"("<<pf->getNamingDescription()<<")";
}
stream<<"\n";
}
}
bool TopologyRecorder::startWithNode(const QString& node)
{
if(node=="")

View File

@ -5,6 +5,7 @@
#include <QHash>
#include <QString>
#include <QPair>
#include <QTextStream>
#include "BasicElementInfo.h"
#include "breaker.h"
#include "aclinesegment.h"
@ -31,6 +32,7 @@ class TopologyRecorder:public QObject
public:
TopologyRecorder(const QHash<QString,BasicElementInfo *>& elementHT,const QVector<QString> &FDSet,QObject *parent=0);
~TopologyRecorder();
void showContainerInfo(QTextStream &stream);
bool startWithNode(const QString& node);
void exportTo(const QString& path);
private: