[mapguide-commits] r4370 - in sandbox/adsk/2.1/Web/src:
mapviewerjava mapviewernet mapviewerphp
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Dec 3 17:42:14 EST 2009
Author: brucedechant
Date: 2009-12-03 17:42:14 -0500 (Thu, 03 Dec 2009)
New Revision: 4370
Modified:
sandbox/adsk/2.1/Web/src/mapviewerjava/legend.jsp
sandbox/adsk/2.1/Web/src/mapviewernet/legend.aspx
sandbox/adsk/2.1/Web/src/mapviewerphp/legend.php
Log:
Fix for trac ticket 1172 - Improve legend performance by using GetResourceContents() API
http://trac.osgeo.org/mapguide/ticket/1172
Notes:
- Change to use the NEW GetResourceContents() API when generating the legend
Modified: sandbox/adsk/2.1/Web/src/mapviewerjava/legend.jsp
===================================================================
--- sandbox/adsk/2.1/Web/src/mapviewerjava/legend.jsp 2009-12-03 22:32:06 UTC (rev 4369)
+++ sandbox/adsk/2.1/Web/src/mapviewerjava/legend.jsp 2009-12-03 22:42:14 UTC (rev 4370)
@@ -29,11 +29,12 @@
class TreeItem
{
- public TreeItem(String name, boolean isGroup, Object rtObject)
+ public TreeItem(String name, boolean isGroup, Object rtObject, String layerData)
{
this.name = name;
this.isGroup = isGroup;
this.rtObject = rtObject;
+ this.layerData = layerData;
if(isGroup)
this.children = new ArrayList();
else
@@ -55,6 +56,7 @@
public ArrayList children;
public String parentName;
public TreeItem parent;
+ public String layerData;
}
String mapName = "";
@@ -103,7 +105,7 @@
int updateType = -1;
- ArrayList tree = BuildLayerTree(map);
+ ArrayList tree = BuildLayerTree(map, resourceSrvc);
if(summary)
{
updateType = 0;
@@ -182,7 +184,7 @@
%>
<%!
-ArrayList BuildLayerTree(MgMap map) throws MgException
+ArrayList BuildLayerTree(MgMap map, MgResourceService resSrvc) throws MgException
{
ArrayList tree = new ArrayList();
HashMap knownGroups = new HashMap();
@@ -192,7 +194,7 @@
for(int i = 0; i < groups.GetCount(); i++)
{
MgLayerGroup rtGroup = (MgLayerGroup)groups.GetItem(i);
- TreeItem node = new TreeItem(rtGroup.GetName(), true, rtGroup);
+ TreeItem node = new TreeItem(rtGroup.GetName(), true, rtGroup, "null");
knownGroups.put(node.name, node);
MgLayerGroup parentGroup = rtGroup.GetGroup();
if(parentGroup == null)
@@ -224,11 +226,23 @@
tree.add(node); //should not happen. place group in the root if parent is not known
}
}
+ // Get the layers
MgLayerCollection layers = map.GetLayers();
+
+ // Get the resource Ids of the layers
+ MgStringCollection resIds = new MgStringCollection();
for(int i = 0; i < layers.GetCount(); i++)
{
MgLayer rtLayer = (MgLayer) layers.GetItem(i);
- TreeItem node = new TreeItem(rtLayer.GetName(), false, rtLayer);
+ MgResourceIdentifier resId = rtLayer.GetLayerDefinition();
+ resIds.Add(resId.ToString());
+ }
+ MgStringCollection layersData = resSrvc.GetResourceContents(resIds, null);
+
+ for(int i = 0; i < layers.GetCount(); i++)
+ {
+ MgLayer rtLayer = (MgLayer) layers.GetItem(i);
+ TreeItem node = new TreeItem(rtLayer.GetName(), false, rtLayer, (String)layersData.GetItem(i));
MgLayerGroup parentGroup = rtLayer.GetGroup();
if(parentGroup == null)
tree.add(node);
@@ -326,6 +340,7 @@
if(fulldata)
{
MgResourceIdentifier resId = rtLayer.GetLayerDefinition();
+ String layerData = node.layerData;
String layerName = "lyr" + (intermediateVar++);
String objectId = rtLayer.GetObjectId();
output = output + String.format("var %s = new LayerItem(\"%s\", \"%s\", %s, %s, %s, %s, %s, \"%s\", \"%s\", %s);\n",
@@ -349,7 +364,7 @@
if(layerMap == null || !layerMap.containsKey(objectId))
{
- BuildLayerDefinitionData(resSrvc, resId, layerName);
+ BuildLayerDefinitionData(layerData, layerName);
}
}
else
@@ -369,15 +384,14 @@
%>
<%!
-void BuildLayerDefinitionData(MgResourceService resSrvc, MgResourceIdentifier resId, String layerVarName)
+void BuildLayerDefinitionData(String layerData, String layerVarName)
{
try
{
- MgByteReader layerByteReader = resSrvc.GetResourceContent(resId);
- InputStream layerStream = ByteReaderToStream(layerByteReader);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
- Document doc = builder.parse(layerStream);
+ InputStream is = new ByteArrayInputStream(layerData.getBytes("UTF-8"));
+ Document doc = builder.parse(is);
int type = 0;
NodeList scaleRanges = doc.getElementsByTagName("VectorScaleRange");
if(scaleRanges.getLength() == 0) {
@@ -466,11 +480,6 @@
}
output = output + String.format("%s.lyrtype = %d;\n", new Object[]{layerVarName, new Integer(type) });
}
- catch(MgException e)
- {
- //broken layer definition. just don't create any info for that layer
- return;
- }
catch(Exception e)
{
//broken layer definition. just don't create any info for that layer
Modified: sandbox/adsk/2.1/Web/src/mapviewernet/legend.aspx
===================================================================
--- sandbox/adsk/2.1/Web/src/mapviewernet/legend.aspx 2009-12-03 22:32:06 UTC (rev 4369)
+++ sandbox/adsk/2.1/Web/src/mapviewernet/legend.aspx 2009-12-03 22:42:14 UTC (rev 4370)
@@ -29,11 +29,12 @@
<script runat="server">
class TreeItem
{
- public TreeItem(String name, bool isGroup, Object rtObject)
+ public TreeItem(String name, bool isGroup, Object rtObject, String layerData)
{
this.name = name;
this.isGroup = isGroup;
this.rtObject = rtObject;
+ this.layerData = layerData;
if(isGroup)
this.children = new ArrayList();
else
@@ -55,6 +56,7 @@
public ArrayList children;
public String parentName;
public TreeItem parent;
+ public String layerData;
}
String mapName = "";
@@ -96,7 +98,7 @@
int updateType = -1;
- ArrayList tree = BuildLayerTree(map);
+ ArrayList tree = BuildLayerTree(map, resourceSrvc);
if(summary)
{
updateType = 0;
@@ -190,7 +192,7 @@
return number.ToString(NumberFormatInfo.InvariantInfo);
}
-ArrayList BuildLayerTree(MgMap map)
+ArrayList BuildLayerTree(MgMap map, MgResourceService resSrvc)
{
ArrayList tree = new ArrayList();
Hashtable knownGroups = new Hashtable();
@@ -200,7 +202,7 @@
for(int i = 0; i < groups.GetCount(); i++)
{
MgLayerGroup rtGroup = (MgLayerGroup)groups.GetItem(i);
- TreeItem node = new TreeItem(rtGroup.GetName(), true, rtGroup);
+ TreeItem node = new TreeItem(rtGroup.GetName(), true, rtGroup, null);
knownGroups.Add(node.name, node);
MgLayerGroup parentGroup = rtGroup.GetGroup();
if(parentGroup == null)
@@ -232,11 +234,23 @@
tree.Add(node); //should not happen. place group in the root if parent is not known
}
}
+ // Get the layers
MgLayerCollection layers = map.GetLayers();
+
+ // Get the resource Ids of the layers
+ MgStringCollection resIds = new MgStringCollection();
for(int i = 0; i < layers.GetCount(); i++)
{
MgLayer rtLayer = (MgLayer) layers.GetItem(i);
- TreeItem node = new TreeItem(rtLayer.GetName(), false, rtLayer);
+ MgResourceIdentifier resId = rtLayer.GetLayerDefinition();
+ resIds.Add(resId.ToString());
+ }
+ MgStringCollection layersData = resSrvc.GetResourceContents(resIds, null);
+
+ for(int i = 0; i < layers.GetCount(); i++)
+ {
+ MgLayer rtLayer = (MgLayer) layers.GetItem(i);
+ TreeItem node = new TreeItem(rtLayer.GetName(), false, rtLayer, (String)layersData.GetItem(i));
MgLayerGroup parentGroup = rtLayer.GetGroup();
if(parentGroup == null)
tree.Add(node);
@@ -334,6 +348,7 @@
if(fulldata)
{
MgResourceIdentifier resId = rtLayer.GetLayerDefinition();
+ String layerData = node.layerData;
String layerName = "lyr" + (intermediateVar++);
String objectId = rtLayer.GetObjectId();
output = output + String.Format("var {0} = new LayerItem(\"{1}\", \"{2}\", {3}, {4}, {5}, {6}, {7}, \"{8}\", \"{9}\", {10});\n",
@@ -357,7 +372,7 @@
if(layerMap == null || !layerMap.ContainsKey(objectId))
{
- BuildLayerDefinitionData(resSrvc, resId, layerName);
+ BuildLayerDefinitionData(layerData, layerName);
}
}
else
@@ -376,14 +391,12 @@
}
-void BuildLayerDefinitionData(MgResourceService resSrvc, MgResourceIdentifier resId, String layerVarName)
+void BuildLayerDefinitionData(String layerData, String layerVarName)
{
try
{
- MgByteReader layerByteReader = resSrvc.GetResourceContent(resId);
- String layerDefString = layerByteReader.ToString();
XmlDocument doc = new XmlDocument();
- doc.LoadXml(layerDefString);
+ doc.LoadXml(layerData);
int type = 0;
XmlNodeList scaleRanges = doc.GetElementsByTagName("VectorScaleRange");
if(scaleRanges.Count == 0)
@@ -465,11 +478,6 @@
}
output = output + String.Format("{0}.lyrtype = {1};\n", layerVarName, type.ToString(NumberFormatInfo.InvariantInfo) );
}
- catch(MgException e)
- {
- //broken layer definition. just don't create any info for that layer
- return;
- }
catch(Exception e)
{
//broken layer definition. just don't create any info for that layer
Modified: sandbox/adsk/2.1/Web/src/mapviewerphp/legend.php
===================================================================
--- sandbox/adsk/2.1/Web/src/mapviewerphp/legend.php 2009-12-03 22:32:06 UTC (rev 4369)
+++ sandbox/adsk/2.1/Web/src/mapviewerphp/legend.php 2009-12-03 22:42:14 UTC (rev 4370)
@@ -22,11 +22,12 @@
class TreeItem
{
- public function __construct($name, $isGroup, $rtObject)
+ public function __construct($name, $isGroup, $rtObject, $layerData)
{
$this->name = $name;
$this->isGroup = $isGroup;
$this->rtObject = $rtObject;
+ $this->layerData = $layerData;
if($isGroup)
$this->children = array();
else
@@ -47,6 +48,7 @@
public $rtObject;
public $children;
public $parentName;
+ public $layerData;
}
$mapName = "";
@@ -82,7 +84,7 @@
$map->Open($resourceSrvc, $mapName);
$layerMap = null;
- $tree = BuildLayerTree($map);
+ $tree = BuildLayerTree($map, $resourceSrvc);
if($summary)
{
@@ -117,7 +119,7 @@
$templ = file_get_contents("../viewerfiles/legendupdate.templ");
printf($templ, $updateType, $output, GetSurroundVirtualPath() . "legend.php");
-function BuildLayerTree($map)
+function BuildLayerTree($map, $resSrvc)
{
$tree = array();
$knownGroups = array();
@@ -127,7 +129,7 @@
for($i = 0; $i < $groups->GetCount(); $i++)
{
$rtGroup = $groups->GetItem($i);
- $node = new TreeItem($rtGroup->GetName(), true, $rtGroup);
+ $node = new TreeItem($rtGroup->GetName(), true, $rtGroup, null);
$knownGroups[$node->name] = $node;
$parentGroup = $rtGroup->GetGroup();
@@ -159,11 +161,23 @@
array_push($tree, $node); //should not happen. place group in the root if parent is not known
}
}
+ // Get the layers
$layers = $map->GetLayers();
+
+ // Get the resource Ids of the layers
+ $resIds = new MgStringCollection();
for($i = 0; $i < $layers->GetCount(); $i++)
{
$rtLayer = $layers->GetItem($i);
- $node = new TreeItem($rtLayer->GetName(), false, $rtLayer);
+ $resId = $rtLayer->GetLayerDefinition();
+ $resIds->Add($resId->ToString());
+ }
+ $layersData = $resSrvc->GetResourceContents($resIds, null);
+
+ for($i = 0; $i < $layers->GetCount(); $i++)
+ {
+ $rtLayer = $layers->GetItem($i);
+ $node = new TreeItem($rtLayer->GetName(), false, $rtLayer, $layersData->GetItem($i));
$parentGroup = $rtLayer->GetGroup();
if($parentGroup == null)
array_push($tree, $node);
@@ -245,6 +259,7 @@
if($fulldata)
{
$resId = $node->rtObject->GetLayerDefinition();
+ $layerData = $node->layerData;
$layerName = "lyr" . ($intermediateVar ++);
$objectId = $node->rtObject->GetObjectId();
$output = $output . sprintf("var %s = new LayerItem(\"%s\", \"%s\", %s, %s, %s, %s, %s, \"%s\", \"%s\", %s);\n",
@@ -265,7 +280,7 @@
++ $treeIndex;
if($layerMap == null || !isset($layerMap[$objectId]))
- BuildLayerDefinitionData($resSrvc, $resId, $layerName, $output);
+ BuildLayerDefinitionData($layerData, $layerName, $output);
}
else
{
@@ -281,21 +296,11 @@
}
}
-function BuildLayerDefinitionData($resSrvc, $resId, $layerVarName, &$output)
+function BuildLayerDefinitionData($layerData, $layerVarName, &$output)
{
global $intermediateVar;
- $xmldoc = null;
- try
- {
- $layerDef = $resSrvc->GetResourceContent($resId);
- $xmldoc = DOMDocument::loadXML(ByteReaderToString($layerDef));
- }
- catch(MgException $e)
- {
- //broken layer definition. just don't create any info for that layer
- return;
- }
+ $xmldoc = DOMDocument::loadXML($layerData);
$type = 0;
$scaleRanges = $xmldoc->getElementsByTagName('VectorScaleRange');
More information about the mapguide-commits
mailing list