[mapguide-commits] r5895 - in trunk/MgDev/Web/src: mapviewerjava mapviewernet

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Jun 1 08:18:28 EDT 2011


Author: jng
Date: 2011-06-01 05:18:28 -0700 (Wed, 01 Jun 2011)
New Revision: 5895

Modified:
   trunk/MgDev/Web/src/mapviewerjava/legend.jsp
   trunk/MgDev/Web/src/mapviewernet/legend.aspx
Log:
#1451: Use StringBuilder and StringBuffer for legend.aspx and legend.jsp respectively as these perform significantly faster than raw string concatenation (due to immutability of strings). For large (100+ layer) map legends, this should have a notice performance improvement. PHP strings are mutable and does not require such optimization.

Modified: trunk/MgDev/Web/src/mapviewerjava/legend.jsp
===================================================================
--- trunk/MgDev/Web/src/mapviewerjava/legend.jsp	2011-06-01 12:16:08 UTC (rev 5894)
+++ trunk/MgDev/Web/src/mapviewerjava/legend.jsp	2011-06-01 12:18:28 UTC (rev 5895)
@@ -65,7 +65,7 @@
 boolean summary = false;
 int layerCount = 0;
 int intermediateVar = 0;
-String output = "\nvar layerData = new Array();\n";
+StringBuffer output = new StringBuffer("\nvar layerData = new Array();\n");
 
 %>
 
@@ -76,9 +76,6 @@
 
 try
 {
-    output = "\nvar layerData = new Array();\n";
-    intermediateVar = 0;
-
     // Initialize web tier with the site configuration file.
     InitializeWebTier();
 
@@ -129,7 +126,7 @@
     //load html template code and format it
     //
     String templ = LoadTemplate("/viewerfiles/legendupdate.templ");
-    String vals[] = { String.valueOf(updateType), output, GetSurroundVirtualPath(request) + "legend.jsp"};
+    String vals[] = { String.valueOf(updateType), output.toString(), GetSurroundVirtualPath(request) + "legend.jsp"};
     String outputString = Substitute(templ, vals);
 
     writer.write(outputString);
@@ -282,7 +279,7 @@
                     if(node.children != null)
                     {
                         arrChildName = "c" + (intermediateVar++);
-                        output = output + "var " + arrChildName + " = new Array();\n";
+                        output.append("var " + arrChildName + " = new Array();\n");
                     }
                     else
                         arrChildName = "null";
@@ -290,7 +287,7 @@
                     MgLayerGroup rtLayerGroup = (MgLayerGroup)node.rtObject;
                     if(fulldata)
                     {
-                        output = output + String.format("var %s = new GroupItem(\"%s\", %s, %s, %s, %s, \"%s\", \"%s\", %s);\n",
+                        output.append(String.format("var %s = new GroupItem(\"%s\", %s, %s, %s, %s, \"%s\", \"%s\", %s);\n",
                                                            new Object[] {groupName,
                                                            StrEscape(rtLayerGroup.GetLegendLabel()),
                                                            rtLayerGroup.GetExpandInLegend()? "true": "false",
@@ -299,24 +296,24 @@
                                                            rtLayerGroup.GetDisplayInLegend()? "true": "false",
                                                            rtLayerGroup.GetObjectId(),
                                                            StrEscape(rtLayerGroup.GetName()),
-                                                           rtLayerGroup.GetLayerGroupType() == MgLayerGroupType.BaseMap? "true": "false"});
+                                                           rtLayerGroup.GetLayerGroupType() == MgLayerGroupType.BaseMap? "true": "false"}));
                     }
                     else
                     {
-                        output = output + String.format("var %s = new GroupSummary(\"%s\", \"%s\", %s, %s);\n",
+                        output.append(String.format("var %s = new GroupSummary(\"%s\", \"%s\", %s, %s);\n",
                                                            new Object[] {groupName,
                                                            StrEscape(rtLayerGroup.GetName()),
                                                            rtLayerGroup.GetObjectId(),
                                                            arrChildName,
-                                                           parentName});
+                                                           parentName}));
                     }
-                    output = output + String.format("%s[%d] = %s;\n", new Object[] {container, Integer.valueOf(treeIndex), groupName});
+                    output.append(String.format("%s[%d] = %s;\n", new Object[] {container, Integer.valueOf(treeIndex), groupName}));
                     ++treeIndex;
 
                     if(node.children != null)
                     {
                         BuildClientSideTree(node.children, node, groupName, fulldata, arrChildName, resSrvc, null);
-                        output = output + String.format("%s.children = %s;\n", new Object[] {groupName, arrChildName});
+                        output.append(String.format("%s.children = %s;\n", new Object[] {groupName, arrChildName}));
                     }
                 }
             }
@@ -331,7 +328,7 @@
                         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",
+                        output.append(String.format("var %s = new LayerItem(\"%s\", \"%s\", %s, %s, %s, %s, %s, \"%s\", \"%s\", %s);\n",
                                                            new Object[] {layerName,
                                                            StrEscape(rtLayer.GetLegendLabel()),
                                                            rtLayer.GetName(),
@@ -342,12 +339,12 @@
                                                            rtLayer.GetSelectable()? "true": "false",
                                                            resId.ToString(),
                                                            objectId,
-                                                           rtLayer.GetLayerType() == MgLayerType.BaseMap? "true": "false"});
+                                                           rtLayer.GetLayerType() == MgLayerType.BaseMap? "true": "false"}));
 
-                        output = output + String.format("%s[%d] = %s;\n",
+                        output.append(String.format("%s[%d] = %s;\n",
                                                            new Object[] {container,
                                                            Integer.valueOf(treeIndex),
-                                                           layerName});
+                                                           layerName}));
                         ++treeIndex;
 
                         if(layerMap == null || !layerMap.containsKey(objectId))
@@ -357,12 +354,12 @@
                     }
                     else
                     {
-                        output = output + String.format("%s[%d] = new LayerSummary(\"%s\", \"%s\", \"%s\");\n",
+                        output.append(String.format("%s[%d] = new LayerSummary(\"%s\", \"%s\", \"%s\");\n",
                                                             new Object[] {container,
                                                             Integer.valueOf(i),
                                                             StrEscape(rtLayer.GetName()),
                                                             rtLayer.GetObjectId(),
-                                                            rtLayer.GetLayerDefinition().ToString()});
+                                                            rtLayer.GetLayerDefinition().ToString()}));
                     }
                 }
             }
@@ -410,12 +407,12 @@
                 minScale = minElt.item(0).getChildNodes().item(0).getNodeValue().toString();
             if(maxElt.getLength() > 0)
                 maxScale = maxElt.item(0).getChildNodes().item(0).getNodeValue().toString();
-            output = output + String.format("var %s = new ScaleRangeItem(%s, %s, %s);\n",
+            output.append(String.format("var %s = new ScaleRangeItem(%s, %s, %s);\n",
                                         new Object[]{scaleRangeVarName,
                                         minScale,
                                         maxScale,
-                                        layerVarName});
-            output = output + String.format("%s.children[%d] = %s;\n", new Object[] {layerVarName, Integer.valueOf(sc), scaleRangeVarName});
+                                        layerVarName}));
+            output.append(String.format("%s.children[%d] = %s;\n", new Object[] {layerVarName, Integer.valueOf(sc), scaleRangeVarName}));
 
             if(type != 0)
                 break;
@@ -455,18 +452,18 @@
                                 filterText = subItems2.item(0).getNodeValue();
                         }
 
-                        output = output + String.format("%s.children[%d] = new StyleItem(\"%s\", \"%s\", %d, %d);\n",
+                        output.append(String.format("%s.children[%d] = new StyleItem(\"%s\", \"%s\", %d, %d);\n",
                                                     new Object[]{scaleRangeVarName,
                                                     Integer.valueOf(styleIndex++),
                                                     StrEscape(labelText.trim()),
                                                     StrEscape(filterText.trim()),
                                                     ts+1,
-                                                    catIndex++});
+                                                    catIndex++}));
                     }
                 }
             }
         }
-        output = output + String.format("%s.lyrtype = %d;\n", new Object[]{layerVarName, new Integer(type) });
+        output.append(String.format("%s.lyrtype = %d;\n", new Object[]{layerVarName, new Integer(type) }));
     }
     catch(Exception e)
     {

Modified: trunk/MgDev/Web/src/mapviewernet/legend.aspx
===================================================================
--- trunk/MgDev/Web/src/mapviewernet/legend.aspx	2011-06-01 12:16:08 UTC (rev 5894)
+++ trunk/MgDev/Web/src/mapviewernet/legend.aspx	2011-06-01 12:18:28 UTC (rev 5895)
@@ -20,6 +20,7 @@
 <%@ Import Namespace="System.Collections" %>
 <%@ Import Namespace="System.Collections.Specialized" %>
 <%@ Import Namespace="System.Web" %>
+<%@ Import Namespace="System.Text" %>
 <%@ Import Namespace="System.Globalization" %>
 <%@ Import Namespace="System.Xml" %>
 <%@ Import Namespace="OSGeo.MapGuide" %>
@@ -64,7 +65,7 @@
 bool summary = false;
 int layerCount = 0;
 int intermediateVar = 0;
-String output = "\nvar layerData = new Array();\n";
+StringBuilder output = new StringBuilder("\nvar layerData = new Array();\n");
 </script>
 
 <%
@@ -122,7 +123,7 @@
         //
         String templ = LoadTemplate(Request, "../viewerfiles/legendupdate.templ");
         String[] vals = { updateType.ToString(NumberFormatInfo.InvariantInfo),
-            output,
+            output.ToString(),
             GetSurroundVirtualPath(Request) + "legend.aspx"};
         String outputString = Substitute(templ, vals);
 
@@ -282,7 +283,7 @@
                     if(node.children != null)
                     {
                         arrChildName = "c" + (intermediateVar++);
-                        output = output + "var " + arrChildName + " = new Array();\n";
+                        output.Append("var " + arrChildName + " = new Array();\n");
                     }
                     else
                     {
@@ -292,7 +293,7 @@
                     MgLayerGroup rtLayerGroup = (MgLayerGroup)node.rtObject;
                     if(fulldata)
                     {
-                        output = output + String.Format("var {0} = new GroupItem(\"{1}\", {2}, {3}, {4},{5}, \"{6}\", \"{7}\", {8});\n",
+                        output.Append(String.Format("var {0} = new GroupItem(\"{1}\", {2}, {3}, {4},{5}, \"{6}\", \"{7}\", {8});\n",
                                                         groupName,
                                                         StrEscape(rtLayerGroup.GetLegendLabel()),
                                                         rtLayerGroup.GetExpandInLegend()? "true": "false",
@@ -301,24 +302,24 @@
                                                         rtLayerGroup.GetDisplayInLegend() ? "true" : "false",
                                                         rtLayerGroup.GetObjectId(),
                                                         StrEscape(rtLayerGroup.GetName()),
-                                                        rtLayerGroup.GetLayerGroupType() == MgLayerGroupType.BaseMap? "true": "false");
+                                                        rtLayerGroup.GetLayerGroupType() == MgLayerGroupType.BaseMap? "true": "false"));
                     }
                     else
                     {
-                        output = output + String.Format("var {0} = new GroupSummary(\"{1}\", \"{2}\", {3}, {4});\n",
+                        output.Append(String.Format("var {0} = new GroupSummary(\"{1}\", \"{2}\", {3}, {4});\n",
                                                         groupName,
                                                         StrEscape(rtLayerGroup.GetName()),
                                                         rtLayerGroup.GetObjectId(),
                                                         arrChildName,
-                                                        parentName);
+                                                        parentName));
                     }
-                    output = output + String.Format("{0}[{1}] = {2};\n", container, treeIndex, groupName);
+                    output.Append(String.Format("{0}[{1}] = {2};\n", container, treeIndex, groupName));
                     ++treeIndex;
 
                     if(node.children != null)
                     {
                         BuildClientSideTree(node.children, node, groupName, fulldata, arrChildName, resSrvc, null);
-                        output = output + String.Format("{0}.children = {1};\n", groupName, arrChildName);
+                        output.Append(String.Format("{0}.children = {1};\n", groupName, arrChildName));
                     }
                 }
             }
@@ -333,7 +334,7 @@
                         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",
+                        output.Append(String.Format("var {0} = new LayerItem(\"{1}\", \"{2}\", {3}, {4}, {5}, {6}, {7}, \"{8}\", \"{9}\", {10});\n",
                                                         layerName,
                                                         rtLayer.GetLegendLabel(),
                                                         StrEscape(rtLayer.GetName()),
@@ -344,12 +345,12 @@
                                                         rtLayer.GetSelectable() ? "true" : "false",
                                                         resId.ToString(),
                                                         objectId,
-                                                        rtLayer.GetLayerType() == MgLayerType.BaseMap? "true": "false");
+                                                        rtLayer.GetLayerType() == MgLayerType.BaseMap? "true": "false"));
 
-                        output = output + String.Format("{0}[{1}] = {2};\n",
+                        output.Append(String.Format("{0}[{1}] = {2};\n",
                                                         container,
                                                         treeIndex,
-                                                        layerName);
+                                                        layerName));
                         ++treeIndex;
 
                         if(layerMap == null || !layerMap.ContainsKey(objectId))
@@ -359,12 +360,12 @@
                     }
                     else
                     {
-                        output = output + String.Format("{0}[{1}] = new LayerSummary(\"{2}\", \"{3}\", \"{4}\");\n",
+                        output.Append(String.Format("{0}[{1}] = new LayerSummary(\"{2}\", \"{3}\", \"{4}\");\n",
                                                             container,
                                                             i,
                                                             rtLayer.GetName(),
                                                             rtLayer.GetObjectId(),
-                                                            rtLayer.GetLayerDefinition().ToString());
+                                                            rtLayer.GetLayerDefinition().ToString()));
                     }
                 }
             }
@@ -410,12 +411,12 @@
             if(maxElt.Count > 0)
                 maxScale = maxElt[0].ChildNodes[0].Value;
             String scaleRangeVarName = "sc" + (intermediateVar++);
-            output = output + String.Format("var {0} = new ScaleRangeItem({1}, {2}, {3});\n",
+            output.Append(String.Format("var {0} = new ScaleRangeItem({1}, {2}, {3});\n",
                                         scaleRangeVarName,
                                         minScale,
                                         maxScale,
-                                        layerVarName);
-            output = output + String.Format("{0}.children[{1}] = {2};\n", layerVarName, sc, scaleRangeVarName);
+                                        layerVarName));
+            output.Append(String.Format("{0}.children[{1}] = {2};\n", layerVarName, sc, scaleRangeVarName));
 
             if(type != 0)
                 break;
@@ -447,18 +448,18 @@
                         if(filter != null && filter.Count > 0 && filter[0].ChildNodes.Count > 0)
                             filterText = filter[0].ChildNodes[0].Value;
 
-                        output = output + String.Format("{0}.children[{1}] = new StyleItem(\"{2}\", \"{3}\", {4}, {5});\n",
+                        output.Append(String.Format("{0}.children[{1}] = new StyleItem(\"{2}\", \"{3}\", {4}, {5});\n",
                                                     scaleRangeVarName,
                                                     styleIndex++,
                                                     StrEscape(labelText.Trim()),
                                                     StrEscape(filterText.Trim()),
                                                     ts+1,
-                                                    catIndex++);
+                                                    catIndex++));
                     }
                 }
             }
         }
-        output = output + String.Format("{0}.lyrtype = {1};\n", layerVarName, type.ToString(NumberFormatInfo.InvariantInfo) );
+        output.Append(String.Format("{0}.lyrtype = {1};\n", layerVarName, type.ToString(NumberFormatInfo.InvariantInfo) ));
     }
     catch(Exception e)
     {



More information about the mapguide-commits mailing list