Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #ifndef WOC_PROCESSOR_TRANS_H
00007 #define WOC_PROCESSOR_TRANS_H
00008
00009 #include <QList>
00010 #include <QMap>
00011 #include <QObject>
00012 #include <QPair>
00013 #include <QStringList>
00014
00016 class WocTransaction
00017 {
00018 public:
00020 WocTransaction(const QDomElement&);
00022 bool isValid()const{return m_valid;}
00023
00025 QString name()const{return m_name;}
00026
00028 bool hasInput(QString v)const;
00030 QStringList inputNames()const;
00032 QString inputType(QString)const;
00033
00035 bool hasOutput(QString v)const;
00037 QStringList outputNames()const;
00039 QString outputType(QString)const;
00040
00042 bool hasCall(QString c)const{return m_call.contains(c);}
00044 QString callFunction(QString c)const{return m_call[c].first;}
00046 QString callInclude(QString c)const{return m_call[c].second.trimmed();}
00047
00049 enum AuthMode {
00051 Checked,
00053 Auth,
00055 Open
00056 };
00057 AuthMode authMode()const{return m_mode;}
00058
00060 static bool isListType(QString t){return t.startsWith("List:");}
00062 static QString plainType(QString t){
00063 if(t.startsWith("List:"))t=t.mid(5);
00064 QStringList l=t.split("/",QString::SkipEmptyParts);
00065 if(l.size()>0)t=l[0];else t="unknown";
00066 return t;
00067 }
00069 QString typeSerializer(QString t)const{
00070 QStringList l=t.split("/",QString::SkipEmptyParts);
00071 if(l.size()>1)return l[1];
00072 else return "";
00073 }
00075 static bool isIntType(QString t){QString pt=plainType(t);return pt=="int" || pt=="int32" || pt=="int64";}
00077 static bool isBoolType(QString t){return plainType(t)=="bool";}
00079 static bool isStringType(QString t){QString p=plainType(t);return p=="astring"||p=="string";}
00081 static bool isBlobType(QString t){QString p=plainType(t);return p=="blob";}
00083 static bool isAttributeType(QString t){return t=="astring"||t=="int"||t=="int32"||t=="int64"||t=="bool";}
00085 static bool isElementType(QString t){return !isAttributeType(t);}
00087 static bool isObjectType(QString t){QString p=plainType(t);return p!="astring"&&p!="string"&&p!="int"&&p!="int32"&&p!="int64"&&p!="bool"&&p!="blob";}
00088
00090 QStringList docStrings()const{return m_docstrings;}
00092 QString inputDoc(QString v)const
00093 {if(m_indoc.contains(v))return m_indoc[v];else return "";}
00095 QString outputDoc(QString v)const
00096 {if(m_outdoc.contains(v))return m_outdoc[v];else return "";}
00098 QString privilegeDoc(QString p)const
00099 {if(m_privdoc.contains(p))return m_privdoc[p];else return "";}
00100
00102 QStringList privileges()const{return m_privileges;}
00103
00105 bool isDbUpdating()const{return m_update;}
00106 private:
00107 QString m_name;
00108 bool m_valid,m_update;
00109 AuthMode m_mode;
00110 QMap<QString,QPair<QString,QString> > m_call;
00111 QList<QPair<QString,QString> >m_input,m_output;
00112 QStringList m_privileges;
00113
00114 QStringList m_docstrings;
00115 QMap<QString,QString>m_indoc,m_outdoc,m_privdoc;
00116 };
00117
00118 #endif