USGS

Isis 3.0 Object Programmers' Reference

Home

IsisXMLParameter.cpp
Go to the documentation of this file.
00001 
00024 using namespace std;
00025 
00026 #include <string>
00027 
00028 #include <xercesc/util/PlatformUtils.hpp>
00029 #include <xercesc/sax2/SAX2XMLReader.hpp>
00030 #include <xercesc/sax2/Attributes.hpp>
00031 
00032 #include "IString.h"
00033 
00034 #include "IsisXMLParameter.h"
00035 #include "IsisXMLChTrans.h"
00036 
00037 
00038 // Constructors
00039 
00040 IsisXMLParameter::IsisXMLParameter(char *PencodingName,
00041                                    bool &PexpandNamespaces,
00042                                    XERCES::SAX2XMLReader* &Pparser,
00043                                    IsisParameterData *Pparameter) {
00044 
00045   encodingName = PencodingName;
00046   expandNamespaces = PexpandNamespaces;
00047   parser = Pparser;
00048   parameter = Pparameter;
00049 
00050   prevDocHandler = parser->getContentHandler();
00051   prevErrorHandler = parser->getErrorHandler();
00052 
00053   parser->setContentHandler(this);
00054   parser->setErrorHandler(this);
00055 
00056   generalHandler = NULL;
00057   multipleValuesHandler = NULL;
00058   ignoreHandler = NULL;
00059   listHandler = NULL;
00060   helpersHandler = NULL;
00061 }
00062 
00063 IsisXMLParameter::~IsisXMLParameter() {
00064   if(generalHandler != NULL) {
00065     delete generalHandler;
00066     generalHandler = NULL;
00067   }
00068   if(multipleValuesHandler != NULL) {
00069     delete multipleValuesHandler;
00070     multipleValuesHandler = NULL;
00071   }
00072   if(ignoreHandler != NULL) {
00073     delete ignoreHandler;
00074     ignoreHandler = NULL;
00075   }
00076   if(listHandler != NULL) {
00077     delete listHandler;
00078     listHandler = NULL;
00079   }
00080   if(helpersHandler != NULL) {
00081     delete helpersHandler;
00082     helpersHandler = NULL;
00083   }
00084 }
00085 
00086 
00087 //  IsisXMLParameter: Overrides of the SAX DocumentHandler interface
00088 void IsisXMLParameter::characters(const XMLCh *const chars,
00089                                   const XMLSize_t length) {}
00090 
00091 
00092 void IsisXMLParameter::endElement(const XMLCh *const uri,
00093                                   const XMLCh *const localname,
00094                                   const XMLCh *const qname) {
00095   if((string)XERCES::XMLString::transcode(localname) != "list") {
00096     parser->setContentHandler(prevDocHandler);
00097     parser->setErrorHandler(prevErrorHandler);
00098   }
00099 }
00100 
00101 void IsisXMLParameter::startElement(const XMLCh *const uri,
00102                                     const XMLCh *const localname,
00103                                     const XMLCh *const qname,
00104                                     const XERCES::Attributes &attributes) {
00105   if((string)XERCES::XMLString::transcode(localname) == (string)"type") {
00106     if(generalHandler != NULL) {
00107       delete generalHandler;
00108       generalHandler = NULL;
00109     }
00110     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces,
00111                                         parser, &parameter->type);
00112   }
00113   else if((string)XERCES::XMLString::transcode(localname) == (string)"brief")  {
00114     if(generalHandler != NULL) {
00115       delete generalHandler;
00116       generalHandler = NULL;
00117     }
00118     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces,
00119                                         parser, &parameter->brief);
00120   }
00121   else if((string)XERCES::XMLString::transcode(localname) == (string)"description") {
00122     if(generalHandler != NULL) {
00123       delete generalHandler;
00124       generalHandler = NULL;
00125     }
00126     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces,
00127                                         parser, &parameter->description);
00128   }
00129   else if((string)XERCES::XMLString::transcode(localname) == (string)"default") {
00130     if(multipleValuesHandler != NULL) {
00131       delete multipleValuesHandler;
00132       multipleValuesHandler = NULL;
00133     }
00134     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00135         parser, &parameter->defaultValues);
00136   }
00137   else if((string)XERCES::XMLString::transcode(localname) == (string)"internalDefault") {
00138     if(generalHandler != NULL) {
00139       delete generalHandler;
00140       generalHandler = NULL;
00141     }
00142     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser,
00143                                         &parameter->internalDefault);
00144   }
00145   else if((string)XERCES::XMLString::transcode(localname) == (string)"count") {
00146     if(generalHandler != NULL) {
00147       delete generalHandler;
00148       generalHandler = NULL;
00149     }
00150     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser,
00151                                         &parameter->count);
00152   }
00153   else if((string)XERCES::XMLString::transcode(localname) == (string)"list") {
00154   }
00155   else if((string)XERCES::XMLString::transcode(localname) == (string)"option") {
00156     if(listHandler != NULL) {
00157       delete listHandler;
00158       listHandler = NULL;
00159     }
00160     unsigned int index = parameter->listOptions.size();
00161     parameter->listOptions.resize(index + 1);
00162     QString lo = XERCES::XMLString::transcode(attributes.getValue((XMLSize_t)0));
00163     lo = lo.toUpper();
00164     parameter->listOptions[index].value = lo;
00165     listHandler = new IsisXMLList(encodingName, expandNamespaces, parser,
00166                                   &parameter->listOptions[index]);
00167   }
00168   else if((string)XERCES::XMLString::transcode(localname) == (string)"minimum") {
00169     if(generalHandler != NULL) {
00170       delete generalHandler;
00171       generalHandler = NULL;
00172     }
00173     QString mi = XERCES::XMLString::transcode(attributes.getValue((XMLSize_t)0));
00174     parameter->minimum_inclusive = mi.toLower();
00175     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces,
00176                                         parser, &parameter->minimum);
00177   }
00178   else if((string)XERCES::XMLString::transcode(localname) == (string)"maximum") {
00179     if(generalHandler != NULL) {
00180       delete generalHandler;
00181       generalHandler = NULL;
00182     }
00183     QString mi = XERCES::XMLString::transcode(attributes.getValue((XMLSize_t)0));
00184     parameter->maximum_inclusive = mi.toLower();
00185     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser,
00186                                         &parameter->maximum);
00187   }
00188   else if((string)XERCES::XMLString::transcode(localname) == (string)"greaterThan") {
00189     if(multipleValuesHandler != NULL) {
00190       delete multipleValuesHandler;
00191       multipleValuesHandler = NULL;
00192     }
00193     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00194         parser, &parameter->greaterThan);
00195   }
00196   else if((string)XERCES::XMLString::transcode(localname) == (string)"greaterThanOrEqual") {
00197     if(multipleValuesHandler != NULL) {
00198       delete multipleValuesHandler;
00199       multipleValuesHandler = NULL;
00200     }
00201     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00202         parser, &parameter->greaterThanOrEqual);
00203   }
00204   else if((string)XERCES::XMLString::transcode(localname) == (string)"lessThan") {
00205     if(multipleValuesHandler != NULL) {
00206       delete multipleValuesHandler;
00207       multipleValuesHandler = NULL;
00208     }
00209     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00210         parser, &parameter->lessThan);
00211   }
00212   else if((string)XERCES::XMLString::transcode(localname) == (string)"lessThanOrEqual") {
00213     if(multipleValuesHandler != NULL) {
00214       delete multipleValuesHandler;
00215       multipleValuesHandler = NULL;
00216     }
00217     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00218         parser, &parameter->lessThanOrEqual);
00219   }
00220   else if((string)XERCES::XMLString::transcode(localname) == (string)"notEqual") {
00221     if(multipleValuesHandler != NULL) {
00222       delete multipleValuesHandler;
00223       multipleValuesHandler = NULL;
00224     }
00225     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00226         parser, &parameter->notEqual);
00227   }
00228   else if((string)XERCES::XMLString::transcode(localname) == (string)"odd") {
00229     if(generalHandler != NULL) {
00230       delete generalHandler;
00231       generalHandler = NULL;
00232     }
00233     parameter->odd = "TRUE";
00234     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser);
00235 
00236   }
00237   else if((string)XERCES::XMLString::transcode(localname) == (string)"exclusions") {
00238     if(multipleValuesHandler != NULL) {
00239       delete multipleValuesHandler;
00240       multipleValuesHandler = NULL;
00241     }
00242     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00243         parser, &parameter->exclude);
00244   }
00245   else if((string)XERCES::XMLString::transcode(localname) == (string)"inclusions") {
00246     if(multipleValuesHandler != NULL) {
00247       delete multipleValuesHandler;
00248       multipleValuesHandler = NULL;
00249     }
00250     multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
00251         parser, &parameter->include);
00252   }
00253   else if((string)XERCES::XMLString::transcode(localname) == (string)"filter") {
00254     if(generalHandler != NULL) {
00255       delete generalHandler;
00256       generalHandler = NULL;
00257     }
00258     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser, &parameter->filter);
00259   }
00260   else if((string)XERCES::XMLString::transcode(localname) == (string)"defaultPath") {
00261     if(generalHandler != NULL) {
00262       delete generalHandler;
00263       generalHandler = NULL;
00264     }
00265     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser,
00266                                         &parameter->path);
00267   }
00268   else if((string)XERCES::XMLString::transcode(localname) == (string)"fileMode") {
00269     if(generalHandler != NULL) {
00270       delete generalHandler;
00271       generalHandler = NULL;
00272     }
00273     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser, &parameter->fileMode);
00274   }
00275   else if((string)XERCES::XMLString::transcode(localname) == (string)"pixelType") {
00276     if(generalHandler != NULL) {
00277       delete generalHandler;
00278       generalHandler = NULL;
00279     }
00280     generalHandler = new IsisXMLHandler(encodingName, expandNamespaces, parser, &parameter->pixelType);
00281   }
00282   else if((string)XERCES::XMLString::transcode(localname) == (string)"helpers") {
00283     if(helpersHandler != NULL) {
00284       delete helpersHandler;
00285       helpersHandler = NULL;
00286     }
00287     helpersHandler = new IsisXMLHelpers(encodingName, expandNamespaces, parser,
00288                                         &parameter->helpers);
00289   }
00290   else {
00291     if(ignoreHandler != NULL) {
00292       delete ignoreHandler;
00293       ignoreHandler = NULL;
00294     }
00295     ignoreHandler = new IsisXMLIgnore(encodingName, expandNamespaces, parser,
00296                                       (string)XERCES::XMLString::transcode(localname));
00297   }
00298 }
00299 
00300 
00301 
00302