示例#1
0
	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;
	}
示例#2
0
	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;
	}
示例#3
0
	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;
	}
示例#4
0
	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;
	}