GFilter* GetCountRequest::ParseXmlFilter(FeatureClass* pFeatureClass) { if(m_pxDoc==NULL) { return NULL; } XElement* pxRoot = m_pxDoc->GetRootNode(); XElement* pxQuery = (XElement*)pxRoot->GetFirstChild("Query"); if(pxQuery==NULL) { return NULL; } GFilter* pFilter = NULL; FilterFactory* pFilterFactory = augeGetFilterFactoryInstance(); XElement* pxFilter = (XElement*)pxQuery->GetFirstChild("Filter"); if(pxFilter!=NULL) { FilterReader* reader = pFilterFactory->CreateFilerReader(pFeatureClass->GetFields()); pFilter = reader->Read(pxFilter); reader->Release(); } return pFilter; }
bool GetCountRequest::Create(XDocument* pxDoc) { XElement *pxRoot = NULL; XAttribute *pxAttr = NULL; m_pxDoc = pxDoc; pxRoot = pxDoc->GetRootNode(); pxAttr = pxRoot->GetAttribute("version"); if(pxAttr!=NULL) { SetVersion(pxAttr->GetValue()); } pxAttr = pxRoot->GetAttribute("mapName"); if(pxAttr!=NULL) { SetMapName(pxAttr->GetValue(),false); } pxAttr = pxRoot->GetAttribute("sourceName"); if(pxAttr!=NULL) { SetSourceName(pxAttr->GetValue()); } XElement* pxQuery = (XElement*)pxRoot->GetFirstChild("Query"); if(pxQuery==NULL) { return NULL; } pxAttr = pxQuery->GetAttribute("typeName"); if(pxAttr==NULL) { return false; } SetTypeName(pxAttr->GetValue(),false); if(m_type_name.empty()) { return false; } return true; }
bool GetFeatureRequest::Create(XDocument* pxDoc) { XElement *pxRoot = NULL; XAttribute *pxAttr = NULL; m_pxDoc = pxDoc; pxRoot = pxDoc->GetRootNode(); pxAttr = pxRoot->GetAttribute("version"); if(pxAttr!=NULL) { SetVersion(pxAttr->GetValue()); } pxAttr = pxRoot->GetAttribute("mapName"); if(pxAttr!=NULL) { SetMapName(pxAttr->GetValue(),false); } pxAttr = pxRoot->GetAttribute("sourceName"); if(pxAttr!=NULL) { SetSourceName(pxAttr->GetValue()); } pxAttr = pxRoot->GetAttribute("outputFormat"); if(pxAttr!=NULL) { GLogger* pLogger = augeGetLoggerInstance(); pLogger->Trace(pxAttr->GetValue(),__FILE__,__LINE__); SetOutputFormat(pxAttr->GetValue()); } pxAttr = pxRoot->GetAttribute("maxFeatures"); if(pxAttr!=NULL) { SetMaxFeatures(pxAttr->GetValue()); } pxAttr = pxRoot->GetAttribute("offset"); if(pxAttr!=NULL) { SetOffset(pxAttr->GetValue()); } pxAttr = pxRoot->GetAttribute("encoding"); if(pxAttr!=NULL) { SetEncoding(pxAttr->GetValue()); } XElement* pxQuery = (XElement*)pxRoot->GetFirstChild("Query"); if(pxQuery==NULL) { return NULL; } pxAttr = pxQuery->GetAttribute("typeName"); if(pxAttr==NULL) { return false; } SetTypeName(pxAttr->GetValue(), false); if(m_type_name.empty()) { return false; } //Layer* pLayer = NULL; //pLayer = pMap->GetLayer(m_type_name.c_str()); //if(pLayer==NULL) //{ // return false; //} //if(pLayer->GetType()!=augeLayerFeature) //{ // return false; //} //FeatureLayer* pFLayer = NULL; //FeatureClass* pFeatureClass = NULL; //pFLayer = static_cast<FeatureLayer*>(pLayer); //pFeatureClass = pFLayer->GetFeatureClass(); //if(pFeatureClass==NULL) //{ // return false; //} //FilterFactory* pFilterFactory = augeGetFilterFactoryInstance(); //m_pQuery = pFilterFactory->CreateQuery(); //XElement* pxFilter = (XElement*)pxQuery->GetFirstChild("Filter"); //if(pxFilter!=NULL) //{ // GFilter* pFilter = NULL; // FilterReader* reader = pFilterFactory->CreateFilerReader(pFeatureClass->GetFields()); // pFilter = reader->Read(pxFilter); // m_pQuery->SetFilter(pFilter); //} ////PropertyName //char field_name[AUGE_NAME_MAX]; //const char* property_name; //XNode* pxNode = NULL; //XNodeSet* pxNodeSet = pxQuery->GetChildren("PropertyName"); //pxNodeSet->Reset(); //while((pxNode=pxNodeSet->Next())!=NULL) //{ // property_name = pxNode->GetContent(); // ParseFieldName(property_name, field_name, AUGE_NAME_MAX); // m_pQuery->AddSubField(field_name); //} //pxNodeSet->Release(); return true; }
GQuery* GetFeatureRequest::ParseXmlQuery(FeatureClass* pFeatureClass) { if(m_pxDoc==NULL) { return NULL; } XElement* pxRoot = m_pxDoc->GetRootNode(); XElement* pxQuery = (XElement*)pxRoot->GetFirstChild("Query"); if(pxQuery==NULL) { return NULL; } FilterFactory* pFilterFactory = augeGetFilterFactoryInstance(); GQuery* pQuery = pFilterFactory->CreateQuery(); if(pQuery==NULL) { return NULL; } XElement* pxFilter = (XElement*)pxQuery->GetFirstChild("Filter"); if(pxFilter!=NULL) { GFilter* pFilter = NULL; FilterReader* reader = pFilterFactory->CreateFilerReader(pFeatureClass->GetFields()); pFilter = reader->Read(pxFilter); pQuery->SetFilter(pFilter); } XElement* pxOrderBy = (XElement*)pxQuery->GetFirstChild("OrderBy"); if(pxOrderBy!=NULL) { OrderBy* pOrderBy = ParserOrderBy(pxOrderBy); if(pOrderBy!=NULL) { pQuery->SetOrderBy(pOrderBy); } } //PropertyName char field_name[AUGE_NAME_MAX]; const char* property_name; XNode* pxNode = NULL; XNodeSet* pxNodeSet = pxQuery->GetChildren("PropertyName"); pxNodeSet->Reset(); while((pxNode=pxNodeSet->Next())!=NULL) { property_name = pxNode->GetContent(); ParseFieldName(property_name, field_name, AUGE_NAME_MAX); WebContext* pWebContext = augeGetWebContextInstance(); pQuery->AddSubField(pWebContext->ParameterEncoding(field_name)); } if(m_max_features>0) { pQuery->SetMaxFeatures(m_max_features); } if(m_offset>0) { pQuery->SetOffset(m_offset); } pxNodeSet->Release(); return pQuery; }