FeatureClass* DescribeFeatureTypeHandler::GetFeatureClassByMap(WebRequest* pWebRequest, WebContext* pWebContext, User* pUser) { const char* typeName = NULL; Layer* pLayer = NULL; GLogger *pLogger = augeGetLoggerInstance(); DescribeFeatureTypeRequest* pRequest = static_cast<DescribeFeatureTypeRequest*>(pWebRequest); typeName = pRequest->GetTypeName(); const char* mapName = pRequest->GetMapName(); if(mapName==NULL) { GError* pError = augeGetErrorInstance(); pError->SetError("No Map is attached"); return NULL; } CartoManager* pCartoManager = augeGetCartoManagerInstance(); Map *pMap = pCartoManager->LoadMap(pUser->GetID(), mapName); if(pMap==NULL) { char msg[AUGE_MSG_MAX]; g_sprintf(msg, "Cannot load map [%s]", mapName); GError* pError = augeGetErrorInstance(); pError->SetError(msg); return NULL; } pLayer = pMap->GetLayer(typeName); if(pLayer==NULL) { char msg[AUGE_MSG_MAX]; g_sprintf(msg, "Cannot Find %s has not FeatureType [%s]",pWebContext->GetService(), typeName); pLogger->Error(msg, __FILE__, __LINE__); GError* pError = augeGetErrorInstance(); pError->SetError(msg); return NULL; } if(pLayer->GetType()!=augeLayerFeature) { char msg[AUGE_MSG_MAX]; g_sprintf(msg, "%s is not a Feature Layer",typeName); pLogger->Error(msg, __FILE__, __LINE__); GError* pError = augeGetErrorInstance(); pError->SetError(msg); return NULL; } FeatureClass* pFeatureClass = NULL; FeatureLayer* pFLayer = static_cast<FeatureLayer*>(pLayer); pFeatureClass = pFLayer->GetFeatureClass(); if(pFeatureClass==NULL) { char msg[AUGE_MSG_MAX]; g_sprintf(msg, "Cannot Get FeatureType %s",typeName); pLogger->Error(msg, __FILE__, __LINE__); GError* pError = augeGetErrorInstance(); pError->SetError(msg); return NULL; } pFeatureClass->AddRef(); return pFeatureClass; }