SOAPSerializer.h

00001 // $Id: SOAPSerializer.h 21 2010-09-05 04:18:17Z cschwarz1 $
00002 
00003 #ifndef BASE_SOAP_SOAPSERIALIZER_H
00004 #define BASE_SOAP_SOAPSERIALIZER_H
00005 
00006 #include <map>
00007 #include <vector>
00008 #include <xercesc/dom/DOMDocument.hpp>
00009 #include <xercesc/dom/DOMElement.hpp>
00010 #include <xercesc/dom/DOMImplementation.hpp>
00011 #include <xercesc/dom/DOMNamedNodeMap.hpp>
00012 #include <xercesc/dom/DOMNode.hpp>
00013 #include <xercesc/dom/DOMText.hpp>
00014 #include "libppbase/base/DateTime.h"
00015 #include "SOAPException.h"
00016 #include "SOAPStruct.h"
00017 #include "SOAPTranscoder.h"
00018 
00019 namespace base_soap {
00021 
00025     class PPBASE_SOAP_EXPORT SOAPSerializer {
00026     public:
00028 
00035         static SOAPStruct *add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, SOAPTranscoder *transcoder = NULL);
00036 
00038         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, bool value);
00039 
00041         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, const base::DateTime &value);
00042 
00044         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, double value);
00045 
00047         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, int value);
00048 
00050         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, unsigned int value);
00051 
00053         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, long value);
00054 
00056         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, unsigned long value);
00057 
00059         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, base::longlong_t value);
00060 
00062         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, base::u_longlong_t value);
00063 
00065         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, const char *value, SOAPTranscoder *transcoder = NULL);
00066 
00068         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, const base::String &value,
00069             SOAPTranscoder *transcoder = NULL);
00070 
00072         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const std::vector<base::String> &names, const std::vector<base::String> &values,
00073             SOAPTranscoder *transcoder = NULL);
00074 
00076         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, const std::vector<base::String> &names,
00077             const std::vector<base::String> &values, SOAPTranscoder *transcoder = NULL);
00078 
00080         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name,
00081             const std::vector<std::pair<base::String, base::String> > &value, bool lower = true, SOAPTranscoder *transcoder = NULL);
00082 
00084         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name,
00085             const std::map<base::String, base::String> &value, bool lower = true, SOAPTranscoder *transcoder = NULL);
00086 
00088         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name, const std::vector<base::String> &value,
00089             SOAPTranscoder *transcoder = NULL);
00090 
00092         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const base::String &name,
00093             const std::vector<std::map<base::String, base::String> > &value, bool lower = true, SOAPTranscoder *transcoder = NULL);
00094 
00096         static void add(xercesc::DOMDocument *doc, xercesc::DOMElement *node, const SOAPException &exception);
00097 
00099         static xercesc::DOMDocument *createDocument(xercesc::DOMImplementation *impl, const base::String &qname, const base::String &nsuri = "");
00100 
00102         static xercesc::DOMElement *createElement(xercesc::DOMDocument *doc, const base::String &name, bool lower = false);
00103 
00105         static xercesc::DOMElement *createElementNode(xercesc::DOMDocument *doc, const base::String &name);
00106     
00108         static xercesc::DOMText *createTextNode(xercesc::DOMDocument *doc, const char *value, SOAPTranscoder *transcoder = NULL);
00109 
00111         static bool deserializeBool(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00112 
00114         static base::DateTime deserializeDateTime(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00115 
00117         static double deserializeDouble(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00118 
00120         static int deserializeInt(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00121 
00123         static unsigned int deserializeUInt(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00124 
00126         static long deserializeLong(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00127 
00129         static unsigned long deserializeULong(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00130 
00132         static base::longlong_t deserializeLongLong(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00133 
00135         static base::u_longlong_t deserializeULongLong(const xercesc::DOMNode *node, const base::String &name, bool *isnull = NULL);
00136 
00138         static base::String deserializeString(const xercesc::DOMNode *node, bool *isnull = NULL, SOAPTranscoder *transcoder = NULL);
00139 
00141         static std::vector<SOAPStruct*> deserializeStructArray(xercesc::DOMDocument *doc, const xercesc::DOMNode *node, const base::String &name,
00142             SOAPTranscoder *transcoder = NULL);
00143         
00145         static std::map<base::String, base::String> *deserializeMap(const xercesc::DOMNode *node, const base::String &name, SOAPTranscoder *transcoder = NULL);
00146 
00148         static std::vector<std::pair<base::String, base::String> > *deserializeVectorOfPairs(const xercesc::DOMNode *node, const base::String &name,
00149             SOAPTranscoder *transcoder = NULL);
00150 
00152         static std::vector<base::String> *deserializeVectorOfStrings(const xercesc::DOMNode *node, const base::String &name,
00153             SOAPTranscoder *transcoder = NULL);
00154 
00156         static std::vector<std::map<base::String, base::String> > *deserializeVectorOfMaps(const xercesc::DOMNode *root, const base::String &name,
00157             SOAPTranscoder *transcoder = NULL);
00158 
00160         static xercesc::DOMNode *get(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL,
00161             enum xercesc::DOMNode::NodeType type = xercesc::DOMNode::TEXT_NODE);
00162 
00164         static bool getBool(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00165 
00167         static xercesc::DOMImplementation *getDOMImplementation(const base::String &name);
00168 
00170         static base::DateTime getDateTime(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00171 
00173         static double getDouble(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00174 
00176         static int getInt(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00177 
00179         static xercesc::DOMNode *getNamedItem(xercesc::DOMNamedNodeMap *list, const char *name);
00180 
00182         static base::String getNodeName(const xercesc::DOMNode *node);
00183 
00185         static base::String getNodeValue(const xercesc::DOMNode *node, SOAPTranscoder *transcoder = NULL);
00186 
00188         static unsigned int getUInt(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00189 
00191         static long getLong(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00192 
00194         static unsigned long getULong(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00195 
00197         static base::longlong_t getLongLong(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00198 
00200         static base::u_longlong_t getULongLong(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL);
00201 
00203         static std::map<base::String, base::String> *getMap(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL,
00204             SOAPTranscoder *transcoder = NULL);
00205 
00207         static base::String getString(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL, bool *isnull = NULL,
00208             SOAPTranscoder *transcoder = NULL);
00209 
00211         static SOAPStruct *getStruct(xercesc::DOMDocument *doc, const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL,
00212             SOAPTranscoder *transcoder = NULL);
00213 
00215         static std::vector<SOAPStruct*> getStructArray(xercesc::DOMDocument *doc, const xercesc::DOMNode *node, const base::String &name,
00216             bool *exists = NULL, SOAPTranscoder *transcoder = NULL);
00217 
00219         static std::vector<std::pair<base::String, base::String> > *getVectorOfPairs(const xercesc::DOMNode *node, const base::String &name,
00220             bool *exists = NULL, SOAPTranscoder *transcoder = NULL);
00221 
00223         static std::vector<base::String> *getVectorOfStrings(const xercesc::DOMNode *node, const base::String &name, bool *exists = NULL,
00224             SOAPTranscoder *transcoder = NULL);
00225 
00227         static std::vector<std::map<base::String, base::String> > *getVectorOfMaps(const xercesc::DOMNode *root, const base::String &name, bool *exists = NULL,
00228             SOAPTranscoder *transcoder = NULL);
00229 
00231         static void renameNode(xercesc::DOMDocument *doc, xercesc::DOMNode *node, const base::String &qname, const base::String &nsuri = "",
00232             SOAPTranscoder *transcoder = NULL);
00233 
00235         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, bool value);
00236 
00238         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, const base::DateTime &value);
00239 
00241         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, double value);
00242 
00244         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, int value);
00245 
00247         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, unsigned int value);
00248 
00250         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, long value);
00251 
00253         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, unsigned long value);
00254 
00256         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, base::longlong_t value);
00257 
00259         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, base::u_longlong_t value);
00260 
00262         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, const char *value, SOAPTranscoder *transcoder = NULL);
00263 
00265         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, const base::String &value,
00266             SOAPTranscoder *transcoder =  NULL);
00267 
00269         static void serialize(xercesc::DOMDocument *doc, xercesc::DOMElement *elem, const std::vector<base::String> &names,
00270             const std::vector<base::String> &values, SOAPTranscoder *transcoder = NULL);
00271 
00273         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, const std::vector<base::String> &names,
00274             const std::vector<base::String> &values, SOAPTranscoder *transcoder = NULL);
00275 
00277         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name,
00278             const std::vector<std::pair<base::String, base::String> > &value, bool lower, SOAPTranscoder *transcoder = NULL);
00279 
00281         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, const std::map<base::String, base::String> &value,
00282             bool lower, SOAPTranscoder *transcoder = NULL);
00283 
00285         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, const std::vector<base::String> &value,
00286             SOAPTranscoder *transcoder = NULL);
00287 
00289         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name,
00290             const std::vector<std::map<base::String, base::String> > &value, bool lower, SOAPTranscoder *transcoder = NULL);
00291 
00293         static xercesc::DOMElement *serialize(xercesc::DOMDocument *doc, const base::String &name, const SOAPException &exception,
00294             SOAPTranscoder *transcoder = NULL);
00295 
00297         static void setAttribute(xercesc::DOMElement *elem, const base::String &name, const base::String &value, SOAPTranscoder *transcoder = NULL);
00298 
00300         static void setNodeValue(xercesc::DOMNode *node, const base::String &value, SOAPTranscoder *transcoder = NULL);
00301 
00303         static base::String toString(const xercesc::DOMNode *node);
00304     };
00305 }
00306 
00307 #endif