[mapguide-commits] r7493 - sandbox/jng/createruntimemap/Web/src/HttpHandler

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Tue May 14 07:31:00 PDT 2013


Author: jng
Date: 2013-05-14 07:31:00 -0700 (Tue, 14 May 2013)
New Revision: 7493

Modified:
   sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp
   sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.h
Log:
Update the CREATERUNTIMEMAP response format:
 * Include missing FiniteDisplayScale list
 * Include missing background color property
 * Include missing group type (to determine if tiled/dynamic)
 * Include missing selectable flag for layers
 * Do not generate a group/layer hierarchy. Generate a flat layer/group list instead. Include parent object ids on child groups/layers, and let the client application build this hierarchy instead.
 * Relocate MdfModel::LayerDefinition pointer cleanup code to safeguard against exceptions.

Modified: sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp
===================================================================
--- sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp	2013-05-13 12:29:10 UTC (rev 7492)
+++ sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.cpp	2013-05-14 14:31:00 UTC (rev 7493)
@@ -91,6 +91,7 @@
 MgByteReader* MgHttpCreateRuntimeMap::BuildRuntimeMapXml(MgResourceIdentifier* mdfId, CREFSTRING mapName)
 {
     Ptr<MgByteReader> byteReader;
+    LayerDefinitionMap layerDefinitionMap;
     MG_HTTP_HANDLER_TRY()
 
     Ptr<MgMap> map = new MgMap();
@@ -144,6 +145,10 @@
     xml.append("<MapDefinition>");
     xml.append(MgUtil::WideCharToMultiByte(mdfId->ToString()));
     xml.append("</MapDefinition>\n");
+    // ------------------------------ Background Color ---------------------------------- //
+    xml.append("<BackgroundColor>");
+    xml.append(MgUtil::WideCharToMultiByte(map->GetBackgroundColor()));
+    xml.append("</BackgroundColor>");
     // ------------------------------ Coordinate System --------------------------------- //
     xml.append("<CoordinateSystem>\n");
     xml.append("<Wkt>");
@@ -187,7 +192,6 @@
     xml.append(sExtents);
     xml.append("</Extents>");
     // ---------------------- Optional things if requested -------------------- //
-    LayerDefinitionMap layerDefinitionMap;
     if ((m_requestDataMask & REQUEST_LAYER_STRUCTURE) == REQUEST_LAYER_STRUCTURE)
     {
         //Build our LayerDefinition map for code below that requires it
@@ -207,7 +211,8 @@
             {
                 STRING ldfId = layerIds->GetItem(i);
                 STRING content = layerContents->GetItem(i);
-                layerDefinitionMap[ldfId] = MgLayerBase::GetLayerDefinition(content);
+                MdfModel::LayerDefinition* ldf = MgLayerBase::GetLayerDefinition(content);
+                layerDefinitionMap[ldfId] = ldf;
             }
         }
 
@@ -216,60 +221,47 @@
         Ptr<MgLayerCollection> layers = map->GetLayers();
         for (INT32 i = 0; i < groups->GetCount(); i++)
         {
-            Ptr<MgLayerGroup> grp = groups->GetItem(i);
-            STRING grpName = grp->GetName();
-            Ptr<MgLayerGroup> parent = grp->GetGroup();
-            if (NULL == parent.p)
-            {
-                m_topLevelGroups.push_back(grp->GetName());
-            }
-            else
-            {
-                STRING parentName = parent->GetName();
-                if (m_groupParentMap.find(parentName) == m_groupParentMap.end())
-                {
-                    m_groupParentMap[parentName] = GroupNameList();
-                }
-                m_groupParentMap[parentName].push_back(grpName);
-            }
+            Ptr<MgLayerGroup> group = groups->GetItem(i);
+            Ptr<MgLayerGroup> parent = group->GetGroup();
+            CreateGroupItem(mappingService, group, parent, xml);
         }
         for (INT32 i = 0; i < layers->GetCount(); i++)
         {
             Ptr<MgLayerBase> layer = layers->GetItem(i);
-            STRING layerName = layer->GetName();
             Ptr<MgLayerGroup> parent = layer->GetGroup();
-            if (NULL == parent.p)
-            {
-                m_topLevelLayers.push_back(layerName);
-            }
-            else
-            {
-                STRING parentName = parent->GetName();
-                if (m_layerParentMap.find(parentName) == m_layerParentMap.end())
-                {
-                    m_layerParentMap[parentName] = LayerNameList();
-                }
-                m_layerParentMap[parentName].push_back(layerName);
-            }
+            
+            MdfModel::LayerDefinition* layerDef = NULL;
+            Ptr<MgResourceIdentifier> layerid = layer->GetLayerDefinition();
+            LayerDefinitionMap::iterator it = layerDefinitionMap.find(layerid->ToString());
+            if (it != layerDefinitionMap.end())
+                layerDef = it->second;
+
+            CreateLayerItem(mappingService, layer, parent, layerDef, xml);
         }
-        // ------------------------------ Groups ---------------------------------- //
-        for (GroupNameList::iterator it = m_topLevelGroups.begin(); it != m_topLevelGroups.end(); it++)
+    }
+    // ------------------------ Finite Display Scales (if any) ------------------------- //
+    INT32 fsCount = map->GetFiniteDisplayScaleCount();
+    if (fsCount > 0)
+    {
+        for (INT32 i = 0; i < fsCount; i++)
         {
-            STRING groupName = (*it);
-            Ptr<MgLayerGroup> group = groups->GetItem(groupName);
-            CreateGroupItem(mappingService, group, xml, layers, groups, layerDefinitionMap);
+            xml.append("<FiniteDisplayScale>");
+            double dScale = map->GetFiniteDisplayScaleAt(i);
+            std::string sScale;
+            MgUtil::DoubleToString(dScale, sScale);
+            xml.append(sScale);
+            xml.append("</FiniteDisplayScale>\n");
         }
-
-        for (LayerNameList::iterator it = m_topLevelLayers.begin(); it != m_topLevelLayers.end(); it++)
-        {
-            STRING layerName = (*it);
-            Ptr<MgLayerBase> layer = layers->GetItem(layerName);
-            CreateLayerItem(mappingService, layer, xml, layers, layerDefinitionMap);
-        }
     }
     xml.append("</RuntimeMap>");
 
-    //Cleanup our LayerDefinition pointers
+    Ptr<MgByteSource> byteSource = new MgByteSource((BYTE_ARRAY_IN)xml.c_str(), (INT32)xml.length());
+    byteSource->SetMimeType(MgMimeType::Xml);
+    byteReader = byteSource->GetReader();
+
+    MG_HTTP_HANDLER_CATCH(L"MgHttpCreateRuntimeMap.BuildRuntimeMapXml")
+
+    //Cleanup our LayerDefinition pointers. Do it here so we don't leak on any exception
     for (LayerDefinitionMap::iterator it = layerDefinitionMap.begin(); it != layerDefinitionMap.end(); it++)
     {
         MdfModel::LayerDefinition* ldf = it->second;
@@ -277,16 +269,12 @@
     }
     layerDefinitionMap.clear();
 
-    Ptr<MgByteSource> byteSource = new MgByteSource((BYTE_ARRAY_IN)xml.c_str(), (INT32)xml.length());
-    byteSource->SetMimeType(MgMimeType::Xml);
-    byteReader = byteSource->GetReader();
+    MG_HTTP_HANDLER_THROW()
 
-    MG_HTTP_HANDLER_CATCH_AND_THROW(L"MgHttpCreateRuntimeMap.BuildRuntimeMapXml")
-
     return byteReader.Detach();
 }
 
-void MgHttpCreateRuntimeMap::CreateGroupItem(MgMappingService* mappingService, MgLayerGroup* group, std::string& xml, MgLayerCollection* layers, MgLayerGroupCollection* groups, const LayerDefinitionMap& layerDefMap)
+void MgHttpCreateRuntimeMap::CreateGroupItem(MgMappingService* mappingService, MgLayerGroup* group, MgLayerGroup* parent, std::string& xml)
 {
     MG_HTTP_HANDLER_TRY()
 
@@ -295,12 +283,24 @@
     xml.append("<Name>");
     xml.append(MgUtil::WideCharToMultiByte(groupName));
     xml.append("</Name>\n");
+    xml.append("<Type>");
+    INT32 gType = group->GetLayerGroupType();
+    std::string sType;
+    MgUtil::Int32ToString(gType, sType);
+    xml.append(sType);
+    xml.append("</Type>\n");
     xml.append("<LegendLabel>");
     xml.append(MgUtil::WideCharToMultiByte(MgUtil::ReplaceEscapeCharInXml(group->GetLegendLabel())));
     xml.append("</LegendLabel>\n");
     xml.append("<ObjectId>");
     xml.append(MgUtil::WideCharToMultiByte(group->GetObjectId()));
     xml.append("</ObjectId>\n");
+    if (NULL != parent)
+    {
+        xml.append("<ParentId>");
+        xml.append(MgUtil::WideCharToMultiByte(parent->GetObjectId()));
+        xml.append("</ParentId>\n");
+    }
     xml.append("<DisplayInLegend>");
     xml.append(group->GetDisplayInLegend() ? "true" : "false");
     xml.append("</DisplayInLegend>\n");
@@ -313,35 +313,12 @@
     xml.append("<ActuallyVisible>");
     xml.append(group->IsVisible() ? "true" : "false");
     xml.append("</ActuallyVisible>\n");
-    if (m_groupParentMap.find(groupName) != m_groupParentMap.end())
-    {
-        GroupNameList childGroups = m_groupParentMap[groupName];
-        for (GroupNameList::iterator it = childGroups.begin(); it != childGroups.end(); it++)
-        {
-            STRING childGroupName = (*it);
-            Ptr<MgLayerGroup> childGroup = groups->GetItem(childGroupName);
-            //Yes, we're using recursion. Stack overflow would probably only happen
-            //if we have a map with several thousand level deep group hierarchy. So
-            //for all intents and purposes: We're safe.
-            CreateGroupItem(mappingService, childGroup, xml, layers, groups, layerDefMap);
-        }
-    }
-    if (m_layerParentMap.find(groupName) != m_layerParentMap.end())
-    {
-        LayerNameList childLayers = m_layerParentMap[groupName];
-        for (LayerNameList::iterator it = childLayers.begin(); it != childLayers.end(); it++)
-        {
-            STRING childLayerName = (*it);
-            Ptr<MgLayerBase> childLayer = layers->GetItem(childLayerName);
-            CreateLayerItem(mappingService, childLayer, xml, layers, layerDefMap);
-        }
-    }
     xml.append("</Group>");
 
     MG_HTTP_HANDLER_CATCH_AND_THROW(L"MgHttpCreateRuntimeMap.CreateGroupItem")
 }
 
-void MgHttpCreateRuntimeMap::CreateLayerItem(MgMappingService* mappingService, MgLayerBase* layer, std::string& xml, MgLayerCollection* layers, const LayerDefinitionMap& layerDefMap)
+void MgHttpCreateRuntimeMap::CreateLayerItem(MgMappingService* mappingService, MgLayerBase* layer, MgLayerGroup* parent, MdfModel::LayerDefinition* ldf, std::string& xml)
 {
     MG_HTTP_HANDLER_TRY()
 
@@ -365,6 +342,15 @@
     xml.append("<ObjectId>");
     xml.append(MgUtil::WideCharToMultiByte(layer->GetObjectId()));
     xml.append("</ObjectId>\n");
+    if (NULL != parent)
+    {
+        xml.append("<ParentId>");
+        xml.append(MgUtil::WideCharToMultiByte(parent->GetObjectId()));
+        xml.append("</ParentId>\n");
+    }
+    xml.append("<Selectable>");
+    xml.append(layer->GetSelectable() ? "true" : "false");
+    xml.append("</Selectable>\n");
     xml.append("<DisplayInLegend>");
     xml.append(layer->GetDisplayInLegend() ? "true" : "false");
     xml.append("</DisplayInLegend>\n");
@@ -392,138 +378,136 @@
         xml.append("</Geometry>\n");
         xml.append("</FeatureSource>\n");
     }
-    if ((m_requestDataMask & REQUEST_LAYER_ICONS) == REQUEST_LAYER_ICONS)
+    
+    if (NULL != ldf)
     {
-        //Our layer def map is already populated if this mask was set
-        if (layerDefMap.find(ldfId) != layerDefMap.end())
+        MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(ldf);
+        if (NULL != vl)
         {
-            MdfModel::VectorLayerDefinition* vl = dynamic_cast<MdfModel::VectorLayerDefinition*>(layerDefMap.at(ldfId));
-            if (NULL != vl)
+            MdfModel::VectorScaleRangeCollection* vsrs = vl->GetScaleRanges();
+            for (INT32 i = 0; i < vsrs->GetCount(); i++)
             {
-                MdfModel::VectorScaleRangeCollection* vsrs = vl->GetScaleRanges();
-                for (INT32 i = 0; i < vsrs->GetCount(); i++)
-                {
-                    MdfModel::VectorScaleRange* vsr = vsrs->GetAt(i);
-                    xml.append("<ScaleRange>\n");
-                    xml.append("<MinScale>");
-                    std::string sMinScale;
-                    MgUtil::DoubleToString(vsr->GetMinScale(), sMinScale);
-                    xml.append(sMinScale);
-                    xml.append("</MinScale>\n");
-                    xml.append("<MaxScale>");
-                    std::string sMaxScale;
-                    MgUtil::DoubleToString(vsr->GetMaxScale(), sMaxScale);
-                    xml.append(sMaxScale);
-                    xml.append("</MaxScale>\n");
+                MdfModel::VectorScaleRange* vsr = vsrs->GetAt(i);
+                xml.append("<ScaleRange>\n");
+                xml.append("<MinScale>");
+                std::string sMinScale;
+                MgUtil::DoubleToString(vsr->GetMinScale(), sMinScale);
+                xml.append(sMinScale);
+                xml.append("</MinScale>\n");
+                xml.append("<MaxScale>");
+                std::string sMaxScale;
+                MgUtil::DoubleToString(vsr->GetMaxScale(), sMaxScale);
+                xml.append(sMaxScale);
+                xml.append("</MaxScale>\n");
 
-                    double dScale = (vsr->GetMaxScale() + vsr->GetMinScale()) / 2.0;
-                    MdfModel::FeatureTypeStyleCollection* ftsc = vsr->GetFeatureTypeStyles();
+                double dScale = (vsr->GetMaxScale() + vsr->GetMinScale()) / 2.0;
+                MdfModel::FeatureTypeStyleCollection* ftsc = vsr->GetFeatureTypeStyles();
 
-                    INT32 nIconCount = 0;
-                    for (INT32 j = 0; j < ftsc->GetCount(); j++)
+                INT32 nIconCount = 0;
+                for (INT32 j = 0; j < ftsc->GetCount(); j++)
+                {
+                    MdfModel::FeatureTypeStyle* fts = ftsc->GetAt(j);
+                    if (fts->IsShowInLegend())
                     {
-                        MdfModel::FeatureTypeStyle* fts = ftsc->GetAt(j);
-                        if (fts->IsShowInLegend())
-                        {
-                            MdfModel::RuleCollection* rules = fts->GetRules();
-                            nIconCount += rules->GetCount();
-                        }
+                        MdfModel::RuleCollection* rules = fts->GetRules();
+                        nIconCount += rules->GetCount();
                     }
+                }
 
-                    //This theme will be compressed if we're over the specified limit for this scale range
-                    bool bCompress = (nIconCount > m_iconLimitPerScaleRange);
+                //This theme will be compressed if we're over the specified limit for this scale range
+                bool bCompress = (nIconCount > m_iconLimitPerScaleRange);
 
-                    for (INT32 j = 0; j < ftsc->GetCount(); j++)
-                    {
-                        MdfModel::FeatureTypeStyle* fts = ftsc->GetAt(j);
-                        if (!fts->IsShowInLegend())
-                            continue;
+                for (INT32 j = 0; j < ftsc->GetCount(); j++)
+                {
+                    MdfModel::FeatureTypeStyle* fts = ftsc->GetAt(j);
+                    if (!fts->IsShowInLegend())
+                        continue;
 
-                        MdfModel::PointTypeStyle*       pts = dynamic_cast<MdfModel::PointTypeStyle*>(fts);
-                        MdfModel::LineTypeStyle*        lts = dynamic_cast<MdfModel::LineTypeStyle*>(fts);
-                        MdfModel::AreaTypeStyle*        ats = dynamic_cast<MdfModel::AreaTypeStyle*>(fts);
-                        MdfModel::CompositeTypeStyle*   cts = dynamic_cast<MdfModel::CompositeTypeStyle*>(fts);
+                    MdfModel::PointTypeStyle*       pts = dynamic_cast<MdfModel::PointTypeStyle*>(fts);
+                    MdfModel::LineTypeStyle*        lts = dynamic_cast<MdfModel::LineTypeStyle*>(fts);
+                    MdfModel::AreaTypeStyle*        ats = dynamic_cast<MdfModel::AreaTypeStyle*>(fts);
+                    MdfModel::CompositeTypeStyle*   cts = dynamic_cast<MdfModel::CompositeTypeStyle*>(fts);
                         
-                        INT32 geomType = 0;
-                        if (pts)
-                            geomType = 1;
-                        else if (lts)
-                            geomType = 2;
-                        else if (ats)
-                            geomType = 3;
-                        else if (cts)
-                            geomType = 4;
-                        INT32 catIndex = 0;
+                    INT32 geomType = 0;
+                    if (pts)
+                        geomType = 1;
+                    else if (lts)
+                        geomType = 2;
+                    else if (ats)
+                        geomType = 3;
+                    else if (cts)
+                        geomType = 4;
+                    INT32 catIndex = 0;
 
-                        MdfModel::RuleCollection* rules = fts->GetRules();
-                        for (INT32 r = 0; r < rules->GetCount(); r++)
+                    MdfModel::RuleCollection* rules = fts->GetRules();
+                    for (INT32 r = 0; r < rules->GetCount(); r++)
+                    {
+                        MdfModel::Rule* rule = rules->GetAt(r);
+                        bool bRequestIcon = false;
+                        if (!bCompress)
                         {
-                            MdfModel::Rule* rule = rules->GetAt(r);
-                            bool bRequestIcon = false;
-                            if (!bCompress)
-                            {
-                                bRequestIcon = true;
-                            }
-                            else //This is a compressed theme
-                            {
-                                bRequestIcon = (r == 0 || r == rules->GetCount() - 1); //Only first and last rule
-                            }
+                            bRequestIcon = true;
+                        }
+                        else //This is a compressed theme
+                        {
+                            bRequestIcon = (r == 0 || r == rules->GetCount() - 1); //Only first and last rule
+                        }
 
-                            xml.append("<Rule>\n");
-                            //GeometryType and ThemeCategory are required so that deferred icon requests can be made
-                            //back to the mapagent, especially if we exceed the icons-per-scale-range limit
-                            xml.append("<GeometryType>");
-                            std::string sGeomType;
-                            MgUtil::Int32ToString(geomType, sGeomType);
-                            xml.append(sGeomType);
-                            xml.append("</GeometryType>\n");
-                            xml.append("<ThemeCategory>");
-                            std::string sThemeCat;
-                            MgUtil::Int32ToString(catIndex, sThemeCat);
-                            xml.append(sThemeCat);
-                            xml.append("</ThemeCategory>\n");
-                            xml.append("<LegendLabel>");
-                            xml.append(MgUtil::WideCharToMultiByte(MgUtil::ReplaceEscapeCharInXml(rule->GetLegendLabel())));
-                            xml.append("</LegendLabel>\n");
-                            xml.append("<Filter>");
-                            xml.append(MgUtil::WideCharToMultiByte(MgUtil::ReplaceEscapeCharInXml(rule->GetFilter())));
-                            xml.append("</Filter>\n");
-                            if (bRequestIcon)
-                            {
-                                xml.append("<Icon>");
-                                //TODO: We should have a batched form of this API
-                                Ptr<MgByteReader> iconReader = mappingService->GenerateLegendImage(layerDefId, dScale, 16, 16, MgImageFormats::Png, geomType, catIndex);
-                                xml.append("<MimeType>");
-                                //BUG? No mime type in the MgByteReader
-                                xml.append(MgUtil::WideCharToMultiByte(MgMimeType::Png));
-                                //xml.append(MgUtil::WideCharToMultiByte(iconReader->GetMimeType()));
-                                xml.append("</MimeType>\n");
-                                xml.append("<Content>");
-                                Ptr<MgByteSink> sink = new MgByteSink(iconReader);
-                                Ptr<MgByte> bytes = sink->ToBuffer();
-                                Ptr<MgMemoryStreamHelper> streamHelper = new MgMemoryStreamHelper((INT8*) bytes->Bytes(), bytes->GetLength(), false);
-                                std::string b64 = streamHelper->ToBase64();
-                                xml.append(b64);
-                                xml.append("</Content>\n");
-                                xml.append("</Icon>");
-                            }
-                            xml.append("</Rule>\n");
-
-                            catIndex++;
+                        xml.append("<Rule>\n");
+                        //GeometryType and ThemeCategory are required so that deferred icon requests can be made
+                        //back to the mapagent, especially if we exceed the icons-per-scale-range limit
+                        xml.append("<GeometryType>");
+                        std::string sGeomType;
+                        MgUtil::Int32ToString(geomType, sGeomType);
+                        xml.append(sGeomType);
+                        xml.append("</GeometryType>\n");
+                        xml.append("<ThemeCategory>");
+                        std::string sThemeCat;
+                        MgUtil::Int32ToString(catIndex, sThemeCat);
+                        xml.append(sThemeCat);
+                        xml.append("</ThemeCategory>\n");
+                        xml.append("<LegendLabel>");
+                        xml.append(MgUtil::WideCharToMultiByte(MgUtil::ReplaceEscapeCharInXml(rule->GetLegendLabel())));
+                        xml.append("</LegendLabel>\n");
+                        xml.append("<Filter>");
+                        xml.append(MgUtil::WideCharToMultiByte(MgUtil::ReplaceEscapeCharInXml(rule->GetFilter())));
+                        xml.append("</Filter>\n");
+                        if (bRequestIcon)
+                        {
+                            xml.append("<Icon>");
+                            //TODO: We should have a batched form of this API
+                            Ptr<MgByteReader> iconReader = mappingService->GenerateLegendImage(layerDefId, dScale, 16, 16, MgImageFormats::Png, geomType, catIndex);
+                            xml.append("<MimeType>");
+                            //BUG? No mime type in the MgByteReader
+                            xml.append(MgUtil::WideCharToMultiByte(MgMimeType::Png));
+                            //xml.append(MgUtil::WideCharToMultiByte(iconReader->GetMimeType()));
+                            xml.append("</MimeType>\n");
+                            xml.append("<Content>");
+                            Ptr<MgByteSink> sink = new MgByteSink(iconReader);
+                            Ptr<MgByte> bytes = sink->ToBuffer();
+                            Ptr<MgMemoryStreamHelper> streamHelper = new MgMemoryStreamHelper((INT8*) bytes->Bytes(), bytes->GetLength(), false);
+                            std::string b64 = streamHelper->ToBase64();
+                            xml.append(b64);
+                            xml.append("</Content>\n");
+                            xml.append("</Icon>");
                         }
-                    }
+                        xml.append("</Rule>\n");
 
-                    xml.append("</ScaleRange>\n");
+                        catIndex++;
+                    }
                 }
+
+                xml.append("</ScaleRange>\n");
             }
-            else
-            {
-                xml.append("<ScaleRange/>");
-            }
         }
         else
+        {
             xml.append("<ScaleRange/>");
+        }
     }
+    else
+        xml.append("<ScaleRange/>");
+
     xml.append("</Layer>");
 
     MG_HTTP_HANDLER_CATCH_AND_THROW(L"MgHttpCreateRuntimeMap.CreateLayerItem")

Modified: sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.h
===================================================================
--- sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.h	2013-05-13 12:29:10 UTC (rev 7492)
+++ sandbox/jng/createruntimemap/Web/src/HttpHandler/HttpCreateRuntimeMap.h	2013-05-14 14:31:00 UTC (rev 7493)
@@ -19,10 +19,6 @@
 #define _HTTP_CREATE_RUNTIME_MAP_
 
 typedef std::map<STRING, MdfModel::LayerDefinition*> LayerDefinitionMap;
-typedef std::list<STRING> LayerNameList;
-typedef std::list<STRING> GroupNameList;
-typedef std::map<STRING, LayerNameList> LayerParentMap;
-typedef std::map<STRING, GroupNameList> GroupParentMap;
 
 class MgHttpCreateRuntimeMap : public MgHttpRequestResponseHandler
 {
@@ -66,17 +62,12 @@
 
 private:
     MgByteReader* BuildRuntimeMapXml(MgResourceIdentifier* mdfId, CREFSTRING mapName);
-    void CreateGroupItem(MgMappingService* mappingService, MgLayerGroup* group, std::string& xml, MgLayerCollection* layers, MgLayerGroupCollection* groups, const LayerDefinitionMap& layerDefMap);
-    void CreateLayerItem(MgMappingService* mappingService, MgLayerBase* layer, std::string& xml, MgLayerCollection* layers, const LayerDefinitionMap& layerDefMap);
+    void CreateGroupItem(MgMappingService* mappingService, MgLayerGroup* group, MgLayerGroup* parent, std::string& xml);
+    void CreateLayerItem(MgMappingService* mappingService, MgLayerBase* layer, MgLayerGroup* parent, MdfModel::LayerDefinition* ldf, std::string& xml);
 
     STRING m_mapDefinition;
     INT32 m_requestDataMask;
     INT32 m_iconLimitPerScaleRange;
-
-    LayerParentMap m_layerParentMap;
-    GroupParentMap m_groupParentMap;
-    LayerNameList m_topLevelLayers;
-    GroupNameList m_topLevelGroups;
 };
 
 #endif  // _HTTP_CREATE_RUNTIME_MAP_



More information about the mapguide-commits mailing list