00001 #ifndef SERIALIZERDPT_H_
00002 #define SERIALIZERDPT_H_
00003
00004 #include "DomainPluginTypes.h"
00005 #include "Serializer.h"
00006
00007 #define BOOL_TO_INT(x) ( true == x ) ? 1 : 0
00008 #define INT_TO_BOOL(x) ( 1 == x ) ? true : false
00009
00010
00011
00012 #define SN_NS_HOSTNAME "hostName"
00013 #define SN_NS_IPADDR "ipAddr"
00014 #define SN_NS "NS"
00015 #define SN_PHONE_CC "cc"
00016 #define SN_PHONE_AREA "area"
00017 #define SN_PHONE_NUMBER "number"
00018 #define SN_PHONE_EXT "ext"
00019 #define SN_CONTACT_CID "cID"
00020 #define SN_CONTACT_FNAME "fName"
00021 #define SN_CONTACT_MNAME "mName"
00022 #define SN_CONTACT_LNAME "lName"
00023 #define SN_CONTACT_ORG "org"
00024 #define SN_CONTACT_EMAIL "eMail"
00025 #define SN_CONTACT_ADDR1 "address1"
00026 #define SN_CONTACT_ADDR2 "address2"
00027 #define SN_CONTACT_CITY "city"
00028 #define SN_CONTACT_STATE "state"
00029 #define SN_CONTACT_STATE_NAME "stateName"
00030 #define SN_CONTACT_ZIP "zip"
00031 #define SN_CONTACT_COUNTRY "country"
00032 #define SN_CONTACT_PHONE "phone"
00033 #define SN_CONTACT_FAX "fax"
00034 #define SN_CONTACT_EXT "ext"
00035 #define SN_CONTACT_HANDLE "handle"
00036 #define SN_CONTACT_BIRTHDAY "birthday"
00037 #define SN_DOMAIN "domain"
00038 #define SN_DOMAIN_TLD "tld"
00039 #define SN_DOMAIN_SLD "sld"
00040 #define SN_DOMAIN_EXT "ext"
00041 #define SN_DOMAIN_PERIOD "period"
00042 #define SN_DOMAIN_NSES "nses"
00043 #define SN_DOMAIN_CONTACTS "contacts"
00044 #define SN_DOMAIN_CONTACT_OWNER "owner"
00045 #define SN_DOMAIN_CONTACT_ADMIN "admin"
00046 #define SN_DOMAIN_CONTACT_BILL "bill"
00047 #define SN_DOMAIN_CONTACT_TECH "tech"
00048 #define SN_DOMAIN_EXP_DATE "expdate"
00049 #define SN_DOMAIN_REG_DATE "regdate"
00050 #define SN_DOMAIN_STATUS "status" //actually is OpStatus, lets rename it
00051 #define SN_RENEW_REQUIRED "renewRequired"
00052 #define SN_DOMAIN_OPERATION_TYPE "typeoper"
00053 #define SN_DOMAIN_LOCK_VALUE "value"
00054 #define SN_DOMAIN_WHOIS_PRIVACY_VALUE "value"
00055 #define SN_MSG "msg"
00056 #define SN_LOG "log"
00057 #define SN_DOMAIN_TRANSFERKEY "transferkey"
00058 #define SN_EXT "ext" //used in validateExtData
00059 #define SN_EXT_KEY "paramID"
00060 #define SN_EXT_TYPE "type"
00061 #define SN_EXT_TITLE "title"
00062 #define SN_EXT_DESCR "descr"
00063 #define SN_EXT_DEFVALUE "defval"
00064 #define SN_EXT_REQUIRED "req"
00065 #define SN_EXT_STATUS "status"
00066 #define SN_DATA "data"
00067 #define SN_CB_STATUS "status"
00068 #define SN_CB_TYPE "type"
00069 #define SN_CB_RESULT "result"
00070
00071
00072 #include <pluginconfig.h>
00073
00074 template<class PLUGINTOOLKIT_DECL T> class PLUGINTOOLKIT_DECL AbstractSerializer {
00075 public:
00076 virtual T unserialize(Str &input) {PluginDataType in = Serializer::unserialize(input); return fromDataType(in);};
00077 virtual Str serialize(T &input) {PluginDataType in = toDataType(input); return Serializer::serialize(in);};
00078
00079
00080 virtual T fromDataType(PluginDataType&) = 0;
00081 virtual PluginDataType toDataType(T&) = 0;
00082 };
00083
00084 class PLUGINTOOLKIT_DECL DTNameServerSerializer : public AbstractSerializer<DTNameServer> {
00085 public:
00086 DTNameServer fromDataType(PluginDataType&);
00087 PluginDataType toDataType(DTNameServer&);
00088 };
00089
00090 class PLUGINTOOLKIT_DECL DTNameServersSerializer : public AbstractSerializer<DTNameServers> {
00091 public:
00092 DTNameServers fromDataType(PluginDataType&);
00093 PluginDataType toDataType(DTNameServers&);
00094 };
00095
00096 class PLUGINTOOLKIT_DECL DTDomainChkSerializer : public AbstractSerializer<DTDomainChk> {
00097 public:
00098 DTDomainChk fromDataType(PluginDataType&);
00099 PluginDataType toDataType(DTDomainChk&);
00100 };
00101
00102 class PLUGINTOOLKIT_DECL DTDomainTransferChkSerializer : public AbstractSerializer<DTDomainTransferChk> {
00103 public:
00104 DTDomainTransferChk fromDataType(PluginDataType&);
00105 PluginDataType toDataType(DTDomainTransferChk&);
00106 };
00107
00108 class PLUGINTOOLKIT_DECL DTPhoneSerializer : public AbstractSerializer<DTPhone> {
00109 public:
00110 DTPhone fromDataType(PluginDataType&);
00111 PluginDataType toDataType(DTPhone&);
00112 };
00113
00114 class PLUGINTOOLKIT_DECL DTExtDataSerializer : public AbstractSerializer<DTExtData> {
00115 public:
00116 DTExtData fromDataType(PluginDataType&);
00117 PluginDataType toDataType(DTExtData&);
00118 };
00119
00120 class PLUGINTOOLKIT_DECL DTContactSerializer : public AbstractSerializer<DTContact> {
00121 public:
00122 DTContact fromDataType(PluginDataType&);
00123 PluginDataType toDataType(DTContact&);
00124 };
00125
00126 class PLUGINTOOLKIT_DECL DTContactsSerializer : public AbstractSerializer<DTContacts> {
00127 public:
00128 DTContacts fromDataType(PluginDataType&);
00129 PluginDataType toDataType(DTContacts&);
00130 };
00131
00132 class PLUGINTOOLKIT_DECL DTInCheckAvailabilitySerializer : public AbstractSerializer<DTInCheckAvailability> {
00133 public:
00134 DTInCheckAvailability fromDataType(PluginDataType&);
00135 PluginDataType toDataType(DTInCheckAvailability&);
00136 };
00137
00138 class PLUGINTOOLKIT_DECL DTOutCheckAvailabilitySerializer : public AbstractSerializer<DTOutCheckAvailability> {
00139 public:
00140 DTOutCheckAvailability fromDataType(PluginDataType&);
00141 PluginDataType toDataType(DTOutCheckAvailability&);
00142 };
00143
00144 class PLUGINTOOLKIT_DECL DTInCheckTransferSerializer : public AbstractSerializer<DTInCheckTransfer> {
00145 public:
00146 DTInCheckTransfer fromDataType(PluginDataType&);
00147 PluginDataType toDataType(DTInCheckTransfer&);
00148 };
00149
00150 class PLUGINTOOLKIT_DECL DTOutCheckTransferSerializer : public AbstractSerializer<DTOutCheckTransfer> {
00151 public:
00152 DTOutCheckTransfer fromDataType(PluginDataType&);
00153 PluginDataType toDataType(DTOutCheckTransfer&);
00154 };
00155
00156 class PLUGINTOOLKIT_DECL DTInRegisterDomainSerializer : public AbstractSerializer<DTInRegisterDomain> {
00157 public:
00158 DTInRegisterDomain fromDataType(PluginDataType&);
00159 PluginDataType toDataType(DTInRegisterDomain&);
00160 };
00161
00162 class PLUGINTOOLKIT_DECL DTInTransferDomainSerializer : public AbstractSerializer<DTInTransferDomain> {
00163 public:
00164 DTInTransferDomain fromDataType(PluginDataType&);
00165 PluginDataType toDataType(DTInTransferDomain&);
00166 };
00167
00168 class PLUGINTOOLKIT_DECL DTInRenewDomainSerializer : public AbstractSerializer<DTInRenewDomain> {
00169 public:
00170 DTInRenewDomain fromDataType(PluginDataType&);
00171 PluginDataType toDataType(DTInRenewDomain&);
00172 };
00173
00174 class PLUGINTOOLKIT_DECL DTInSetLockSerializer : public AbstractSerializer<DTInSetLock> {
00175 public:
00176 DTInSetLock fromDataType(PluginDataType&);
00177 PluginDataType toDataType(DTInSetLock&);
00178 };
00179
00180 class PLUGINTOOLKIT_DECL DTInSetWhoisPrivacySerializer : public AbstractSerializer<DTInSetWhoisPrivacy> {
00181 public:
00182 DTInSetWhoisPrivacy fromDataType(PluginDataType&);
00183 PluginDataType toDataType(DTInSetWhoisPrivacy&);
00184 };
00185
00186 class PLUGINTOOLKIT_DECL DTInTerminateDomainSerializer : public AbstractSerializer<DTInTerminateDomain> {
00187 public:
00188 DTInTerminateDomain fromDataType(PluginDataType&);
00189 PluginDataType toDataType(DTInTerminateDomain&);
00190 };
00191
00192 class PLUGINTOOLKIT_DECL DTOutTerminateDomainSerializer : public AbstractSerializer<DTOutTerminateDomain> {
00193 public:
00194 DTOutTerminateDomain fromDataType(PluginDataType&);
00195 PluginDataType toDataType(DTOutTerminateDomain&);
00196 };
00197
00198 class PLUGINTOOLKIT_DECL DTRegisteredDomainInfoSerializer : public AbstractSerializer<DTRegisteredDomainInfo> {
00199 public:
00200 DTRegisteredDomainInfo fromDataType(PluginDataType&);
00201 PluginDataType toDataType(DTRegisteredDomainInfo&);
00202 };
00203
00204
00205
00206 template<class PLUGINTOOLKIT_DECL T> class PLUGINTOOLKIT_DECL AbstractDTOutOperationDomainRRTSerializer : public AbstractSerializer<T> {
00207 public:
00208 PluginDataType toDataType(T &input) {
00209 PluginDataType in;
00210
00211 in.setStr(SN_MSG, input.msg);
00212 in.setStr(SN_LOG, input.log);
00213
00214
00215 DTExtDataSerializer extSerializer;
00216 PluginDataType ext = extSerializer.toDataType(input.extData);
00217 in.setInt(SN_DOMAIN_STATUS, input.opStatus);
00218 in.set(SN_DOMAIN_EXT, ext);
00219
00220
00221 in.setStr(SN_DOMAIN_EXP_DATE, input.expDate);
00222
00223 return in;
00224 }
00225
00226 T fromDataType(PluginDataType &input) {
00227 T in;
00228
00229
00230 in.msg = input.getStr(SN_MSG);
00231 in.log = input.getStr(SN_LOG);
00232
00233
00234 Int opStatus = input.getInt(SN_DOMAIN_STATUS);
00235 in.opStatus = DTDomainOpStatus(opStatus.c_type());
00236 DTExtDataSerializer extSerializer;
00237 PluginDataType ext = input.get(SN_DOMAIN_EXT);
00238 in.extData = extSerializer.fromDataType(ext);
00239
00240
00241 in.expDate = input.getStr(SN_DOMAIN_EXP_DATE);
00242
00243 return in;
00244 }
00245 };
00246
00247 class PLUGINTOOLKIT_DECL DTOutRegisterDomainSerializer : public AbstractDTOutOperationDomainRRTSerializer<DTOutRegisterDomain> {};
00248 class PLUGINTOOLKIT_DECL DTOutRenewDomainSerializer : public AbstractDTOutOperationDomainRRTSerializer<DTOutRenewDomain> {};
00249 class PLUGINTOOLKIT_DECL DTOutTransferDomainSerializer : public AbstractDTOutOperationDomainRRTSerializer<DTOutTransferDomain> {};
00250
00251
00252 template<class PLUGINTOOLKIT_DECL T> class PLUGINTOOLKIT_DECL AbstractDTInOperationDomainStatusSerializer : public AbstractSerializer<T> {
00253 public:
00254 PluginDataType toDataType(T &input) {
00255 PluginDataType in;
00256
00257 in.setStr(SN_DOMAIN_SLD, input.sld);
00258 in.setStr(SN_DOMAIN_TLD, input.tld);
00259 DTExtDataSerializer extSerializer;
00260 PluginDataType ext = extSerializer.toDataType(input.extData);
00261 in.set(SN_DOMAIN_EXT, ext);
00262
00263 return in;
00264 }
00265
00266 T fromDataType(PluginDataType &input) {
00267 T in;
00268
00269 in.sld = input.getStr(SN_DOMAIN_SLD);
00270 in.tld = input.getStr(SN_DOMAIN_TLD);
00271 Int opType = input.getInt(SN_DOMAIN_OPERATION_TYPE);
00272 DTExtDataSerializer extSerializer;
00273 PluginDataType ext = input.get(SN_DOMAIN_EXT);
00274 in.extData = extSerializer.fromDataType(ext);
00275
00276 return in;
00277 }
00278 };
00279
00280 class PLUGINTOOLKIT_DECL DTInGetDomainStatusSerializer : public AbstractDTInOperationDomainStatusSerializer<DTInGetDomainStatus> {
00281 public:
00282 PluginDataType toDataType(DTInGetDomainStatus&);
00283 DTInGetDomainStatus fromDataType(PluginDataType&);
00284 };
00285
00286 class PLUGINTOOLKIT_DECL DTInGetDomainDetailsSerializer : public AbstractDTInOperationDomainStatusSerializer<DTInGetDomainDetails> {};
00287
00288
00289
00290 template<class PLUGINTOOLKIT_DECL T> class PLUGINTOOLKIT_DECL AbstractDTOutOperationDomainStatusSerializer : public AbstractSerializer<T> {
00291 public:
00292 PluginDataType toDataType(T &input) {
00293 PluginDataType in;
00294
00295 in.setStr(SN_MSG, input.msg);
00296 in.setStr(SN_LOG, input.log);
00297
00298
00299 in.setInt(SN_DOMAIN_STATUS, input.opStatus);
00300 DTExtDataSerializer extSerializer;
00301 PluginDataType ext = extSerializer.toDataType(input.extData);
00302 in.set(SN_DOMAIN_EXT, ext);
00303
00304 return in;
00305 }
00306
00307 T fromDataType(PluginDataType &input) {
00308 T in;
00309
00310 in.msg = input.getStr(SN_MSG);
00311 in.log = input.getStr(SN_LOG);
00312
00313
00314 in.opStatus = DTDomainOpStatus(input.getInt(SN_DOMAIN_STATUS).c_type());
00315 DTExtDataSerializer extSerializer;
00316 PluginDataType ext = input.get(SN_DOMAIN_EXT);
00317 in.extData = extSerializer.fromDataType(ext);
00318
00319 return in;
00320 }
00321 };
00322
00323
00324
00325
00326 template<class PLUGINTOOLKIT_DECL T> class PLUGINTOOLKIT_DECL AbstractDTInOperationContactsSerializer : public AbstractSerializer<T> {
00327 public:
00328 PluginDataType toDataType ( T &input) {
00329 PluginDataType in;
00330
00331 in.setStr(SN_DOMAIN_SLD, input.sld);
00332 in.setStr(SN_DOMAIN_TLD, input.tld);
00333
00334 DTExtDataSerializer extSerializer;
00335 PluginDataType ext = extSerializer.toDataType(input.extData);
00336 in.set(SN_DOMAIN_EXT, ext);
00337
00338
00339 DTContactsSerializer contactsSerializer;
00340 PluginDataType contacts = contactsSerializer.toDataType(input.contacts);
00341
00342 in.set(SN_DOMAIN_CONTACTS, contacts);
00343
00344 return in;
00345 }
00346
00347 T fromDataType (PluginDataType &input) {
00348 T in;
00349
00350 in.sld = input.getStr(SN_DOMAIN_SLD);
00351 in.tld = input.getStr(SN_DOMAIN_TLD);
00352
00353 DTExtDataSerializer extSerializer;
00354 PluginDataType ext = input.get(SN_DOMAIN_EXT);
00355 in.extData = extSerializer.fromDataType(ext);
00356
00357
00358 DTContactsSerializer contactsSerializer;
00359 PluginDataType contacts = input.get(SN_DOMAIN_CONTACTS);
00360 in.contacts = contactsSerializer.fromDataType(contacts);
00361
00362 return in;
00363 }
00364 };
00365
00366
00367
00368 class PLUGINTOOLKIT_DECL DTInRegisterContactsSerializer : public AbstractDTInOperationContactsSerializer<DTInRegisterContacts> {};
00369 class PLUGINTOOLKIT_DECL DTInGetContactsStatusSerializer : public AbstractDTInOperationContactsSerializer<DTInGetContactsStatus> {};
00370 class PLUGINTOOLKIT_DECL DTInUpdateDomainContactsSerializer : public AbstractDTInOperationContactsSerializer<DTInUpdateDomainContacts> {};
00371 class PLUGINTOOLKIT_DECL DTInGetDomainContactsStatusSerializer : public AbstractDTInOperationContactsSerializer<DTInGetDomainContactsStatus> {};
00372
00373 class PLUGINTOOLKIT_DECL DTOutRegisterContactsSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutRegisterContacts> {};
00374 class PLUGINTOOLKIT_DECL DTOutGetContactsStatusSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutGetContactsStatus> {};
00375 class PLUGINTOOLKIT_DECL DTOutUpdateDomainContactsSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutUpdateDomainContacts> {};
00376 class PLUGINTOOLKIT_DECL DTOutGetDomainContactsStatusSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutGetDomainContactsStatus> {};
00377
00378 class PLUGINTOOLKIT_DECL DTOutSetLockSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutSetLock> {};
00379 class PLUGINTOOLKIT_DECL DTOutSetWhoisPrivacySerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutSetWhoisPrivacy> {};
00380
00381
00382
00383
00384 template<class PLUGINTOOLKIT_DECL T> class PLUGINTOOLKIT_DECL AbstractDTInOperationNameServersSerializer : public AbstractSerializer<T> {
00385 PluginDataType toDataType ( T &input) {
00386 PluginDataType in;
00387
00388 in.setStr(SN_DOMAIN_SLD, input.sld);
00389 in.setStr(SN_DOMAIN_TLD, input.tld);
00390
00391 DTExtDataSerializer extSerializer;
00392 PluginDataType ext = extSerializer.toDataType(input.extData);
00393 in.set(SN_DOMAIN_EXT, ext);
00394
00395
00396 DTNameServersSerializer nsesSerializer;
00397 PluginDataType nses = nsesSerializer.toDataType(input.nameServers);
00398 in.set(SN_DOMAIN_NSES, nses);
00399
00400 return in;
00401 }
00402
00403 T fromDataType (PluginDataType &input) {
00404 T in;
00405
00406 in.sld = input.getStr(SN_DOMAIN_SLD);
00407 in.tld = input.getStr(SN_DOMAIN_TLD);
00408
00409 DTExtDataSerializer extSerializer;
00410 PluginDataType ext = input.get(SN_DOMAIN_EXT);
00411 in.extData = extSerializer.fromDataType(ext);
00412
00413
00414 DTNameServersSerializer nsesSerializer;
00415 PluginDataType nses = input.get(SN_DOMAIN_NSES);
00416 in.nameServers = nsesSerializer.fromDataType(nses);
00417
00418 return in;
00419 }
00420 };
00421
00422
00423
00424 class PLUGINTOOLKIT_DECL DTOutGetDomainStatusSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutGetDomainStatus> {
00425 public:
00426 DTOutGetDomainStatus fromDataType(PluginDataType&);
00427 PluginDataType toDataType(DTOutGetDomainStatus&);
00428 };
00429
00430
00431
00432 class PLUGINTOOLKIT_DECL DTInUpdateDomainNameServersSerializer : public AbstractDTInOperationNameServersSerializer<DTInUpdateDomainNameServers> {};
00433 class PLUGINTOOLKIT_DECL DTInRegisterNameServersSerializer : public AbstractDTInOperationNameServersSerializer<DTInRegisterNameServers> {};
00434 class PLUGINTOOLKIT_DECL DTInGetNameServersStatusSerializer : public AbstractDTInOperationNameServersSerializer<DTInGetNameServersStatus> {};
00435 class PLUGINTOOLKIT_DECL DTInGetDomainNameServersStatusSerializer : public AbstractDTInOperationNameServersSerializer<DTInGetDomainNameServersStatus> {};
00436
00437 class PLUGINTOOLKIT_DECL DTOutRegisterNameServersSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutRegisterNameServers> {};
00438 class PLUGINTOOLKIT_DECL DTOutGetNameServersStatusSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutGetNameServersStatus> {};
00439 class PLUGINTOOLKIT_DECL DTOutUpdateDomainNameServersSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutUpdateDomainNameServers> {};
00440 class PLUGINTOOLKIT_DECL DTOutGetDomainNameServersStatusSerializer : public AbstractDTOutOperationDomainStatusSerializer<DTOutGetDomainNameServersStatus> {};
00441
00442
00443 class PLUGINTOOLKIT_DECL DTOutGetDomainDetailsSerializer : public AbstractSerializer<DTOutGetDomainDetails> {
00444 public:
00445 DTOutGetDomainDetails fromDataType(PluginDataType&);
00446 PluginDataType toDataType(DTOutGetDomainDetails&);
00447 };
00448
00449 class PLUGINTOOLKIT_DECL DTInValidateExtDataSerializer : public AbstractSerializer<DTInValidateExtData> {
00450 public:
00451 DTInValidateExtData fromDataType(PluginDataType&);
00452 PluginDataType toDataType(DTInValidateExtData&);
00453 };
00454
00455 class PLUGINTOOLKIT_DECL DTOutValidateExtDataSerializer : public AbstractSerializer<DTOutValidateExtData> {
00456 public:
00457 DTOutValidateExtData fromDataType(PluginDataType&);
00458 PluginDataType toDataType(DTOutValidateExtData&);
00459 };
00460
00461 class PLUGINTOOLKIT_DECL DTTypedExtDataItemSerializer : public AbstractSerializer<DTTypedExtDataItem> {
00462 public:
00463 DTTypedExtDataItem fromDataType(PluginDataType&);
00464 PluginDataType toDataType(DTTypedExtDataItem&);
00465 };
00466
00467 class PLUGINTOOLKIT_DECL DTInCallbackSerializer : public AbstractSerializer<DTInCallback> {
00468 public:
00469 DTInCallback fromDataType(PluginDataType&);
00470 PluginDataType toDataType(DTInCallback&);
00471 };
00472
00473 class PLUGINTOOLKIT_DECL DTCallbackResultSerializer : public AbstractSerializer<DTCallbackResult> {
00474 public:
00475 DTCallbackResult fromDataType(PluginDataType&);
00476 PluginDataType toDataType(DTCallbackResult&);
00477 };
00478
00479 class PLUGINTOOLKIT_DECL DTOutCallbackSerializer : public AbstractSerializer<DTOutCallback> {
00480 public:
00481 DTOutCallback fromDataType(PluginDataType&);
00482 PluginDataType toDataType(DTOutCallback&);
00483 };
00484
00485
00486
00487 #endif