Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #ifndef WOC_PROCESSOR_H
00007 #define WOC_PROCESSOR_H
00008
00009 #include <QList>
00010 #include <QMap>
00011 #include <QObject>
00012 #include <QPair>
00013 #include <QStringList>
00014
00015 class QDomElement;
00016
00017 QList<QDomElement>elementsByTagName(const QDomElement&,QString);
00018
00019 inline bool str2bool(QString s)
00020 {
00021 bool b;
00022 int i=s.toInt(&b,0);
00023 if(b)return i?true:false;
00024 s=s.toLower();
00025 if(s=="yes"||s=="y"||s=="on"||s=="true"||s=="t")return true;
00026 return false;
00027 }
00028
00029 #include "procclass.h"
00030 #include "proctable.h"
00031 #include "proctrans.h"
00032
00033
00035 class WocOutput:public QObject
00036 {
00037 Q_OBJECT
00038 public:
00040 WocOutput();
00042 virtual ~WocOutput();
00043
00044 protected slots:
00046 virtual void newClass(const WocClass&)=0;
00048 virtual void newTable(const WocTable&)=0;
00050 virtual void newTransaction(const WocTransaction&)=0;
00052 virtual void finalize()=0;
00053 signals:
00054 void errorFound();
00055 };
00056
00058 class WocProcessor:public QObject
00059 {
00060 Q_OBJECT
00061 public:
00062 WocProcessor();
00063
00065 bool processFile(QString);
00067 void finalize();
00068
00070 static WocProcessor* instance(){return inst;}
00071
00073 QString baseDir()const{return m_baseDir;}
00075 QString wobDir()const{return m_wobDir;}
00077 QString projectName()const{return m_projname;}
00079 QString verComm()const{return m_verComm;}
00081 QString verNeedComm()const{return m_verNeedComm;}
00083 QString verHR()const{return m_verHR;}
00085 QMap<QString,QString> versionInfo()const{return m_verInfo;}
00087 QString dbInst()const{return m_dbInst;}
00089 QString dbSchema()const{return m_dbSchema;}
00091 QString dbVersion()const{return m_dbVer;}
00092
00094 QString xmlProjectNamespace()const{return m_xmlNS;}
00096 QString xmlPackNamespace()const{return m_xmlPackNS;}
00098 QString xmlSoap12Namespace()const{return m_xmlSoap12NS;}
00100 QString xmlSchemaNamespace()const{return m_xmlSchemaNS;}
00102 QString xmlXmlNamespace()const{return m_xmlXmlNS;}
00103
00105 enum MessageEncoding{
00107 WobEncoding=0,
00109 Soap12Encoding=1,
00111 SoapEncoding=1,
00113 DefaultEncoding=-1
00114 };
00116 MessageEncoding messageEncoding()const{return m_encmode;}
00117
00119 enum AuthMode {
00121 NoAuth=0,
00123 SessionAuth=1,
00125 BasicAuth=2,
00127 UnknownAuth=-1
00128 };
00130 AuthMode authMode()const{return m_auth;}
00131
00133 bool hasTable(QString)const;
00135 WocTable table(QString)const;
00136
00138 bool hasClass(QString)const;
00139
00141 QStringList transactionNames()const;
00143 QStringList classNames()const;
00145 QStringList tableNames()const;
00146
00148 QStringList docStrings()const{return m_docstrings;}
00149
00151 QStringList privilegeNames()const;
00152
00154 bool dbUpdatingDefault()const{return m_dbUpd;}
00155 signals:
00156 void sfinalize();
00157 void newClass(const WocClass&);
00158 void newTable(const WocTable&);
00159 void newTransaction(const WocTransaction&);
00160 public slots:
00161 void errorFound();
00162 private:
00163 QString m_baseDir,m_wobDir,m_verComm,m_verNeedComm,m_verHR,m_projname;
00164 QString m_verTarget,m_svnExe,m_gitExe;
00165 QMap<QString,QString>m_verInfo;
00166 QStringList m_verSys;
00167 QString m_dbInst,m_dbSchema,m_dbVer;
00168 QString m_xmlNS,m_xmlPackNS,m_xmlSoap12NS,m_xmlSchemaNS,m_xmlXmlNS;
00169 QStringList m_docstrings;
00170 bool m_error,m_dbUpd;
00171 MessageEncoding m_encmode;
00172 AuthMode m_auth;
00173
00174 QList<WocTable> m_tables;
00175 QList<WocClass> m_classes;
00176 QList<WocTransaction> m_transactions;
00177
00178 static WocProcessor*inst;
00179
00181 bool callSvn();
00183 bool callGit();
00185 bool callNoVer();
00186
00188 void parseNamespaces();
00189
00191 AuthMode str2AuthMode(QString);
00192 };
00193
00194
00195 #endif