diff --git a/.gitignore b/.gitignore index b6affff..b5a843c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ *.orig debug release -Makefile* \ No newline at end of file +Makefile* +testHasttable/*Debug +testHasttable/*Release \ No newline at end of file diff --git a/testHasttable/BasicElementInfo.cpp b/testHasttable/BasicElementInfo.cpp index 1b08039..aed7e4e 100644 --- a/testHasttable/BasicElementInfo.cpp +++ b/testHasttable/BasicElementInfo.cpp @@ -33,18 +33,28 @@ bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader) QStringRef id; elementName=reader.name(); this->name=elementName.toString(); - this->id=id.toString(); qDebug()<id=id.toString(); } - +// if(elementName.toString()=="Terminal") +// { +// if(reader.attributes().hasAttribute("rdf:ID")) +// { +// std::cout<id.toStdString()<derivedParse(reader); if(reader.isEndElement() && reader.name()==elementName) { diff --git a/testHasttable/busbarsection.cpp b/testHasttable/busbarsection.cpp index 8903974..ad05e9a 100644 --- a/testHasttable/busbarsection.cpp +++ b/testHasttable/busbarsection.cpp @@ -7,16 +7,23 @@ BusbarSection::BusbarSection(QObject *parent):BasicElementInfo(parent) bool BusbarSection::derivedParse(QXmlStreamReader& reader) { +// std::cout<terminal=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref qDebug()<<"got "<<"ConductingEquipment.Terminals "<terminal<<"\n"; +// std::cout<<"ConductingEquipment.Terminals"<terminal.toStdString()<terminal; +} + bool BusbarSection::parse(QXmlStreamReader& reader) { // std::cout<<"BusbarSection"<getName()=="BusbarSection") { - std::cout<<"BusbarSection"<<"\n"; +// std::cout<<"BusbarSection"<<"\n"; + BusbarSection *foo=static_cast(p); + QString terminal=foo->getTerminal(); + //找Terminal的东西 + Terminal *terminalP=static_cast(ht[terminal]); + std::cout<getID().toStdString()<getConductingEquipment().toStdString()< *NodeToTerminal::ht=NULL; +NodeToTerminal::NodeToTerminal() +{ + if(!NodeToTerminal::ht) + { + NodeToTerminal::ht=new QHash; + } +} + +void NodeToTerminal::add(const QString& key,const QString& value) +{ + (*NodeToTerminal::ht)[key]=value; +} + +bool NodeToTerminal::contains(const QString& key) +{ + return NodeToTerminal::ht->contains(key); +} + +QString NodeToTerminal::value(const QString& key) +{ + return NodeToTerminal::ht->value(key); +} + +NodeToTerminal::~NodeToTerminal() +{ + if(NodeToTerminal::ht) + { + delete NodeToTerminal::ht; + NodeToTerminal::ht=NULL; + } +} diff --git a/testHasttable/nodetoterminal.h b/testHasttable/nodetoterminal.h new file mode 100644 index 0000000..32e0a41 --- /dev/null +++ b/testHasttable/nodetoterminal.h @@ -0,0 +1,19 @@ +#ifndef NODETOTERMINAL_H +#define NODETOTERMINAL_H +//一个通过Node检索Terminal的表,做成单例形式 +#include +#include +class NodeToTerminal +{ +public: + explicit NodeToTerminal(); + ~NodeToTerminal(); + void add(const QString& key,const QString& value); + bool contains(const QString& key); + QString value(const QString& key); +private: + static QHash *ht; + + +}; +#endif // NODETOTERMINAL_H diff --git a/testHasttable/object_script.testHasttable.Debug b/testHasttable/object_script.testHasttable.Debug deleted file mode 100644 index a91cfd8..0000000 --- a/testHasttable/object_script.testHasttable.Debug +++ /dev/null @@ -1,17 +0,0 @@ -INPUT( -./debug/main.o -./debug/elementhashtable.o -./debug/subcontrolarea.o -./debug/BasicElementInfo.o -./debug/regexextract.o -./debug/busbarsection.o -./debug/terminal.o -./debug/aclinesegment.o -./debug/breaker.o -./debug/compensator.o -./debug/disconnector.o -./debug/powertransformer.o -./debug/synchronousmachine.o -./debug/moc_elementhashtable.o -./debug/moc_BasicElementInfo.o -); diff --git a/testHasttable/object_script.testHasttable.Release b/testHasttable/object_script.testHasttable.Release deleted file mode 100644 index a0273f1..0000000 --- a/testHasttable/object_script.testHasttable.Release +++ /dev/null @@ -1,17 +0,0 @@ -INPUT( -./release/main.o -./release/elementhashtable.o -./release/subcontrolarea.o -./release/BasicElementInfo.o -./release/regexextract.o -./release/busbarsection.o -./release/terminal.o -./release/aclinesegment.o -./release/breaker.o -./release/compensator.o -./release/disconnector.o -./release/powertransformer.o -./release/synchronousmachine.o -./release/moc_elementhashtable.o -./release/moc_BasicElementInfo.o -); diff --git a/testHasttable/terminal.cpp b/testHasttable/terminal.cpp index ad91329..079f080 100644 --- a/testHasttable/terminal.cpp +++ b/testHasttable/terminal.cpp @@ -4,6 +4,8 @@ Terminal::Terminal(QObject *parent):BasicElementInfo(parent) { } + + bool Terminal::derivedParse(QXmlStreamReader& reader) { if("Terminal.ConnectivityNode"==reader.name() && reader.attributes().hasAttribute("rdf:resource")) @@ -12,6 +14,8 @@ bool Terminal::derivedParse(QXmlStreamReader& reader) cn=reader.attributes().value("rdf:resource").toString(); this->connectivityNode=cn.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref qDebug()<<"got "<<"Terminal.ConnectivityNode "<connectivityNode<<"\n"; + NodeToTerminal nt; + nt.add(this->connectivityNode,this->id); } if("Terminal.ConductingEquipment"==reader.name() && reader.attributes().hasAttribute("rdf:resource")) @@ -24,6 +28,13 @@ bool Terminal::derivedParse(QXmlStreamReader& reader) return true; } + +QString Terminal::getConductingEquipment() +{ + return this->conductingEquipment; +} + + bool Terminal::parse(QXmlStreamReader& reader) { return this->parseBasicInfo(reader); diff --git a/testHasttable/terminal.h b/testHasttable/terminal.h index ec54a1a..f7f0227 100644 --- a/testHasttable/terminal.h +++ b/testHasttable/terminal.h @@ -2,11 +2,13 @@ #define TERMINAL_H #include #include "BasicElementInfo.h" +#include "nodetoterminal.h" class Terminal:public BasicElementInfo { public: explicit Terminal(QObject *parent = 0); virtual bool parse(QXmlStreamReader& reader); + QString getConductingEquipment(); protected: virtual bool derivedParse(QXmlStreamReader& reader); QString conductingEquipment; diff --git a/testHasttable/testHasttable.pro b/testHasttable/testHasttable.pro index 24ec2e1..e053269 100644 --- a/testHasttable/testHasttable.pro +++ b/testHasttable/testHasttable.pro @@ -28,7 +28,8 @@ SOURCES += main.cpp \ compensator.cpp \ disconnector.cpp \ powertransformer.cpp \ - synchronousmachine.cpp + synchronousmachine.cpp \ + nodetoterminal.cpp HEADERS += \ elementhashtable.h \ @@ -42,7 +43,8 @@ HEADERS += \ compensator.h \ disconnector.h \ powertransformer.h \ - synchronousmachine.h + synchronousmachine.h \ + nodetoterminal.h #release{ DEFINES += QT_NO_DEBUG_OUTPUT