Sort and format.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5649 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/tools/soyc-vis/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java b/tools/soyc-vis/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
index 500178c..ef11572 100644
--- a/tools/soyc-vis/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
+++ b/tools/soyc-vis/src/com/google/gwt/soyc/MakeTopLevelHtmlForPerm.java
@@ -130,8 +130,126 @@
return escaped;
}
- public void makeBreakdownShell(SizeBreakdown breakdown)
- throws IOException {
+ /**
+ * Adds a header line indicating which breakdown is being analyzed.
+ */
+ private static void addHeaderWithBreakdownContext(SizeBreakdown breakdown,
+ final PrintWriter outFile) {
+ outFile.println("<hr>");
+ outFile.println("<b>(Analyzing code subset: " + breakdown.getDescription()
+ + ")</b>");
+ outFile.println("<hr>");
+ }
+
+ private static String classesInPackageFileName(SizeBreakdown breakdown,
+ String packageName) {
+ return breakdown.getId() + "_" + packageName + "_Classes.html";
+ }
+
+ /**
+ * Convert a potentially long string into a short file name. The current
+ * implementation simply hashes the long name.
+ */
+ private static String filename(String longFileName) {
+ try {
+ return Util.computeStrongName(longFileName.getBytes(Util.DEFAULT_ENCODING));
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Return a {@link File} object for a file to be emitted into the output
+ * directory.
+ */
+ private static File getOutFile(String localFileName) {
+ File outDir = new File(GlobalInformation.settings.out.get());
+ return new File(outDir, localFileName);
+ }
+
+ private static String makeCodeTypeHtml(SizeBreakdown breakdown,
+ Map<String, CodeCollection> nameToCodeColl) throws IOException {
+ String outFileName = breakdown.getId() + "_codeTypeBreakdown.html";
+ float maxSize = 0f;
+ float sumSize = 0f;
+ TreeMap<Float, String> sortedCodeTypes = new TreeMap<Float, String>(
+ Collections.reverseOrder());
+
+ // TODO(kprobst): turn this into a multimap?
+ // com.google.common.collect.TreeMultimap
+ for (String codeType : nameToCodeColl.keySet()) {
+ float curSize = nameToCodeColl.get(codeType).getCumPartialSize(breakdown);
+ sumSize += curSize;
+
+ if (curSize != 0f) {
+ sortedCodeTypes.put(curSize, codeType);
+ if (curSize > maxSize) {
+ maxSize = curSize;
+ }
+ }
+ }
+
+ final PrintWriter outFile = new PrintWriter(getOutFile(outFileName));
+
+ outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
+ outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
+ outFile.println("<html>");
+ outFile.println("<head>");
+ outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
+ outFile.println("<link rel=\"stylesheet\" href=\"roundedCorners.css\" media=\"screen\">");
+ outFile.println("</head>");
+ outFile.println("<body>");
+
+ int yOffset = 0;
+ for (Float size : sortedCodeTypes.keySet()) {
+
+ String codeType = sortedCodeTypes.get(size);
+ String drillDownFileName = breakdown.getId() + "_" + codeType
+ + "Classes.html";
+
+ float ratio = (size / maxSize) * 79;
+ float perc = (size / sumSize) * 100;
+
+ if (ratio < 3) {
+ ratio = 3;
+ }
+
+ outFile.println("<div id=\"box\" style=\"width:" + ratio + "%; top: "
+ + yOffset + "px; left: 110px;\">");
+ outFile.println("<div id=\"lb\">");
+ outFile.println("<div id=\"rb\">");
+ outFile.println("<div id=\"bb\"><div id=\"blc\"><div id=\"brc\">");
+ outFile.println("<div id=\"tb\"><div id=\"tlc\"><div id=\"trc\">");
+ outFile.println("<div id=\"content\">");
+ outFile.println("</div>");
+ outFile.println("</div></div></div></div>");
+ outFile.println("</div></div></div></div>");
+ outFile.println("</div>");
+
+ int yOffsetText = yOffset + 8;
+ outFile.printf("<div class=\"barlabel\" style=\"top:" + yOffsetText
+ + "px; left:5px;\">%.1f</div>\n", size);
+ outFile.printf("<div class=\"barlabel\" style=\"top:" + yOffsetText
+ + "px; left:70px;\">%.1f", perc);
+ outFile.println("%</div>\n");
+ outFile.println("<div class=\"barlabel\" style=\"top:" + yOffsetText
+ + "px; left:110px;\"><a href=\"" + drillDownFileName
+ + "\" target=\"_top\">" + codeType + "</a></div>");
+
+ yOffset = yOffset + 25;
+ }
+ outFile.println("</body>");
+ outFile.println("</html>");
+ outFile.close();
+
+ return outFileName;
+ }
+
+ private static String shellFileName(SizeBreakdown breakdown) {
+ return breakdown.getId() + "-overallBreakdown.html";
+ }
+
+ public void makeBreakdownShell(SizeBreakdown breakdown) throws IOException {
// this will contain the place holder iframes where the actual information
// is going to go.
@@ -162,7 +280,8 @@
File outputDir = getOutFile("images");
copyFileOrDirectory(inputDir, outputDir, classPath, inputFileName, true);
- final PrintWriter outFile = new PrintWriter(getOutFile(shellFileName(breakdown)));
+ final PrintWriter outFile = new PrintWriter(
+ getOutFile(shellFileName(breakdown)));
outFile.println("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">");
outFile.println("<html>");
outFile.println("<head>");
@@ -343,6 +462,95 @@
}
}
+ public void makeDependenciesHtml(Map<String, ArrayList<String>> dependencies)
+ throws IOException {
+
+ String origOutFileName = "methodDependencies-";
+ PrintWriter outFile = null;
+ String curPackageName = "";
+ String curClassName = "";
+
+ for (String method : dependencies.keySet()) {
+ // this key set is already in alphabetical order
+ // get the package of this method, i.e., everything up to .[A-Z]
+
+ String packageName = method;
+ packageName = packageName.replaceAll("\\.\\p{Upper}.*", "");
+
+ String className = method;
+ className = className.replaceAll("::.*", "");
+
+ if ((curPackageName.compareTo("") == 0)
+ || (curPackageName.compareTo(packageName) != 0)) {
+
+ curPackageName = packageName;
+ if (outFile != null) {
+ // finish up the current file
+ outFile.println("</table>");
+ outFile.println("<center>");
+
+ outFile.println("</div>");
+ outFile.println("</body>");
+ outFile.println("</html>");
+ outFile.close();
+ }
+
+ String outFileName = origOutFileName + filename(curPackageName)
+ + ".html";
+ outFile = new PrintWriter(getOutFile(outFileName));
+
+ outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
+ outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
+ outFile.println("<html>");
+ outFile.println("<head>");
+ outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
+ outFile.println("<title>Method Dependencies</title>");
+ outFile.println("</head>");
+
+ outFile.println("<style type=\"text/css\">");
+ outFile.println("body {background-color: #728FCE}");
+ outFile.println("h2 {background-color: transparent}");
+ outFile.println("p {background-color: fuchsia}");
+ outFile.println("</style>");
+
+ outFile.println("<body>");
+ outFile.println("<center>");
+ outFile.println("<h2>Method Dependencies for package " + curPackageName
+ + "</h2>");
+ outFile.println("</center>");
+ outFile.println("<hr>");
+
+ outFile.println("<center>");
+ outFile.println("<table border=\"1\" width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
+ }
+ outFile.println("<tr>");
+ if (curClassName.compareTo(className) != 0) {
+ outFile.println("<td width=\"80%\"><a name=\"" + className + "\">"
+ + "<a name=\"" + method + "\">" + method
+ + "</a></a><font color=\"green\"> called by</font></td>");
+ curClassName = className;
+ } else {
+ outFile.println("<td width=\"80%\"><a name=\"" + method + "\">"
+ + method + "</a><font color=\"green\"> called by</font></td>");
+ }
+ outFile.println("</tr>");
+
+ for (int i = 0; i < dependencies.get(method).size(); i++) {
+ String depMethod = dependencies.get(method).get(i);
+
+ outFile.println("<tr>");
+ outFile.println("<td width=\"20%\"></td>");
+ if (i != dependencies.get(method).size() - 1) {
+ outFile.println("<td width=\"60%\">" + depMethod
+ + "<font color=\"green\"> called by</font></td>");
+ } else {
+ outFile.println("<td width=\"60%\">" + depMethod + "</td>");
+ }
+ outFile.println("</tr>");
+ }
+ }
+ }
+
public void makeLiteralsClassesTableHtmls(SizeBreakdown breakdown)
throws IOException {
Map<String, LiteralsCollection> nameToLitColl = breakdown.nameToLitColl;
@@ -377,14 +585,15 @@
outFile.println("<table border=\"1\" width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
for (String literal : nameToLitColl.get(literalType).literalToLocations.keySet()) {
-
- if ((literalType.compareTo("string") != 0)||(nameToLitColl.get("string").stringLiteralToType.get(literal).compareTo("otherStrings") != 0)){
-
-
+
+ if ((literalType.compareTo("string") != 0)
+ || (nameToLitColl.get("string").stringLiteralToType.get(literal).compareTo(
+ "otherStrings") != 0)) {
+
if (literal.trim().compareTo("") == 0) {
literal = "[whitespace only string]";
}
-
+
String newLiteral = "";
if (literal.length() > 80) {
int i;
@@ -398,22 +607,22 @@
} else {
newLiteral = literal;
}
-
+
String escliteral = escapeXml(newLiteral);
-
+
outFile.println("<tr>");
outFile.println("<td width=\"40%\">" + escliteral + "</td>");
-
+
int ct = 0;
if ((nameToLitColl.containsKey(literalType))
&& (nameToLitColl.get(literalType).literalToLocations.containsKey(literal))) {
for (String location : nameToLitColl.get(literalType).literalToLocations.get(literal)) {
-
+
if (ct > 0) {
outFile.println("<tr>");
outFile.println("<td width=\"40%\"> </td>");
}
-
+
String newLocation = "";
if (location.length() > 80) {
int i;
@@ -427,9 +636,9 @@
} else {
newLocation = location;
}
-
+
outFile.println("<td width=\"40%\">" + newLocation + "</td>");
-
+
if (ct > 0) {
outFile.println("</tr>");
}
@@ -439,11 +648,11 @@
System.err.println("either literalType " + literalType
+ " not known, or no location for literal " + literal);
}
-
+
outFile.println("</tr>");
}
}
-
+
outFile.println("</table>");
outFile.println("<center>");
@@ -454,6 +663,145 @@
}
}
+ /**
+ * Make size breakdowns for each package for one code collection.
+ */
+ public void makePackageClassesHtmls(SizeBreakdown breakdown)
+ throws IOException {
+ for (String packageName : GlobalInformation.packageToClasses.keySet()) {
+
+ TreeMap<Float, String> sortedClasses = new TreeMap<Float, String>(
+ Collections.reverseOrder());
+ float maxSize = 0f;
+
+ int maxDepCount = 1;
+
+ for (String className : GlobalInformation.packageToClasses.get(packageName)) {
+
+ float curSize = 0f;
+ if (!breakdown.classToPartialSize.containsKey(className)) {
+ // This class not present in this code collection
+ } else {
+ curSize = breakdown.classToPartialSize.get(className);
+ }
+
+ int depCount = 0;
+ if (GlobalInformation.classToWhatItDependsOn.containsKey(className)) {
+ depCount = GlobalInformation.classToWhatItDependsOn.get(className).size();
+ }
+
+ if (curSize != 0f) {
+
+ sortedClasses.put(curSize, className);
+ if (curSize > maxSize) {
+ maxSize = curSize;
+ }
+ if (depCount > maxDepCount) {
+ maxDepCount = depCount;
+ }
+ }
+ }
+
+ PrintWriter outFile = new PrintWriter(
+ getOutFile(classesInPackageFileName(breakdown, packageName)));
+
+ outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
+ outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
+ outFile.println("<html>");
+ outFile.println("<head>");
+ outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
+ outFile.println("<link rel=\"stylesheet\" href=\"classLevel.css\" media=\"screen\">");
+ outFile.println("<title>Classes in package \"" + packageName
+ + "\"</title>");
+ outFile.println("</head>");
+ outFile.println("<body>");
+
+ outFile.println("<center>");
+ outFile.println("<h2>Classes in package \"" + packageName + "\"</h2>");
+ addHeaderWithBreakdownContext(breakdown, outFile);
+ outFile.println("</center>");
+
+ outFile.println("<div style=\"width:90%; height:80%; overflow-y:auto; overflow-x:auto; top: 120px; left:70px; position:absolute; background-color:white\"");
+
+ int yOffset = 0;
+ for (Float size : sortedClasses.keySet()) {
+
+ String className = sortedClasses.get(size);
+
+ // TODO(kprobst): switch out the commented/uncommented lines below when
+ // showing dependencies
+ // float ratio = (size / maxSize) * 45;
+ float ratio = (size / maxSize) * 85;
+
+ if (ratio < 3) {
+ ratio = 3;
+ }
+
+ // TODO(kprobst): not currently used, but will be for dependencies
+ // get the dependency count
+ int depCount = 0;
+ if (GlobalInformation.classToWhatItDependsOn.containsKey(className)) {
+ depCount = GlobalInformation.classToWhatItDependsOn.get(className).size();
+ }
+ float depRatio = ((float) depCount / (float) maxDepCount) * 45f;
+ if (depRatio < 3.0) {
+ depRatio = 3;
+ }
+
+ outFile.println("<div class=\"box\" style=\"width:" + ratio
+ + "%; top: " + yOffset + "px; left: 60px;\">");
+ outFile.println("<div id=\"lb\">");
+ outFile.println("<div id=\"rb\">");
+ outFile.println("<div id=\"bb\"><div id=\"blc\"><div id=\"brc\">");
+ outFile.println("<div id=\"tb\"><div id=\"tlc\"><div id=\"trc\">");
+ outFile.println("<div id=\"content\">");
+ outFile.println("</div>");
+ outFile.println("</div></div></div></div>");
+ outFile.println("</div></div></div></div>");
+ outFile.println("</div>");
+
+ // TODO(kprobst): not currently used, but will be for dependencies
+ /*
+ * outFile.println("<div class=\"box-right\" style=\"width:" + depRatio
+ * + "%; top: " + yOffset + "px; left: 50%\">");
+ * outFile.println("<div id=\"lb\">");
+ * outFile.println("<div id=\"rb\">");
+ * outFile.println("<div id=\"bb\"><div id=\"blc\"><div id=\"brc\">");
+ * outFile.println("<div id=\"tb\"><div id=\"tlc\"><div id=\"trc\">");
+ * outFile.println("<div id=\"content\">"); outFile.println("</div>");
+ * outFile.println("</div></div></div></div>");
+ * outFile.println("</div></div></div></div>");
+ * outFile.println("</div>");
+ */
+
+ int yOffsetText = yOffset + 8;
+ outFile.printf("<div class=\"barlabel\" style=\"top:" + yOffsetText
+ + "px; left:5px;\">%.1f</div>\n", size);
+ if (GlobalInformation.displayDependencies == true) {
+ outFile.println("<div class=\"barlabel\" style=\"top:" + yOffsetText
+ + "px; left:70px;\"><a href=\"methodDependencies-"
+ + filename(packageName) + ".html#" + className + "\">"
+ + className + "</a></div>");
+ } else {
+ outFile.println("<div class=\"barlabel\" style=\"top:" + yOffsetText
+ + "px; left:70px;\">" + className + "</div>");
+ }
+ /*
+ * //TODO(kprobst) make this a link String drillDownFileName = className
+ * + "Deps.html"; outFile.println("<div class=\"barlabel\" style=\"top:"
+ * + yOffsetText + "px; left:50%;\"><a href=\"" + drillDownFileName +
+ * "\" target=\"_top\">Dependencies: " + depCount + "</a></div>");
+ */
+ yOffset = yOffset + 25;
+ }
+
+ outFile.println("</div>");
+ outFile.println("</body>");
+ outFile.println("</html>");
+ outFile.close();
+ }
+ }
+
public void makeStringLiteralsClassesTableHtmls(SizeBreakdown breakdown)
throws IOException {
Map<String, LiteralsCollection> nameToLitColl = breakdown.nameToLitColl;
@@ -482,26 +830,26 @@
outFile.println("<h2>Literals of type \"" + literalType + "\"</h2>");
addHeaderWithBreakdownContext(breakdown, outFile);
outFile.println("</center>");
-
- if (literalType.compareTo("otherStrings") == 0){
+
+ if (literalType.compareTo("otherStrings") == 0) {
outFile.println("<center>");
outFile.println("(JavaScript variable names are not displayed.)");
outFile.println("</center>");
}
- else{
+ else {
outFile.println("<center>");
outFile.println("<table border=\"1\" width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
-
+
for (String literal : nameToLitColl.get("string").stringLiteralToType.keySet()) {
-
+
if (nameToLitColl.get("string").stringLiteralToType.get(literal).compareTo(
literalType) == 0) {
-
+
if (literal.trim().compareTo("") == 0) {
literal = "[whitespace only string]";
}
-
+
String newLiteral = "";
if (literal.length() > 80) {
int i;
@@ -515,26 +863,33 @@
} else {
newLiteral = literal;
}
-
+
String escliteral = escapeXml(newLiteral);
-
+
outFile.println("<tr>");
outFile.println("<td width=\"40%\">" + escliteral + "</td>");
-
+
int ct = 0;
-
+
if (nameToLitColl.get("string").literalToLocations.containsKey(literal)) {
-
+
for (String location : nameToLitColl.get("string").literalToLocations.get(literal)) {
-
- if ((location.indexOf("Line 0") == -1)&&(location.compareTo(GlobalInformation.backupLocation) != 0)){ //i.e., if we actually know the location
+
+ if ((location.indexOf("Line 0") == -1)
+ && (location.compareTo(GlobalInformation.backupLocation) != 0)) { // i.e.,
+ // if
+ // we
+ // actually
+ // know
+ // the
+ // location
if (ct > 0) {
outFile.println("<tr>");
outFile.println("<td width=\"40%\"> </td>");
}
-
+
String newLocation = "";
- if (location.length() > 80){
+ if (location.length() > 80) {
int i;
for (i = 80; i < location.length(); i = i + 80) {
String part1 = location.substring(i - 80, i);
@@ -546,17 +901,19 @@
} else {
newLocation = location;
}
-
- outFile.println("<td width=\"40%\"> " + newLocation + " </td>");
-
+
+ outFile.println("<td width=\"40%\"> " + newLocation
+ + " </td>");
+
if (ct > 0) {
outFile.println("</tr>");
}
ct++;
}
}
- if (ct == 0){
- outFile.println("<td width=\"40%\"> " + GlobalInformation.backupLocation + " </td>");
+ if (ct == 0) {
+ outFile.println("<td width=\"40%\"> "
+ + GlobalInformation.backupLocation + " </td>");
}
} else {
System.err.println("no location given for string literal: "
@@ -565,11 +922,11 @@
outFile.println("</tr>");
}
}
-
+
outFile.println("</table>");
outFile.println("<center>");
}
-
+
outFile.println("</div>");
outFile.println("</body>");
outFile.println("</html>");
@@ -682,121 +1039,6 @@
outFile.close();
}
- /**
- * Adds a header line indicating which breakdown is being analyzed.
- */
- private static void addHeaderWithBreakdownContext(SizeBreakdown breakdown,
- final PrintWriter outFile) {
- outFile.println("<hr>");
- outFile.println("<b>(Analyzing code subset: " + breakdown.getDescription()
- + ")</b>");
- outFile.println("<hr>");
- }
-
- private static String classesInPackageFileName(SizeBreakdown breakdown,
- String packageName) {
- return breakdown.getId() + "_" + packageName + "_Classes.html";
- }
-
- /**
- * Convert a potentially long string into a short file name. The current
- * implementation simply hashes the long name.
- */
- private static String filename(String longFileName) {
- try {
- return Util.computeStrongName(longFileName.getBytes(Util.DEFAULT_ENCODING));
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Return a {@link File} object for a file to be emitted into the output
- * directory.
- */
- private static File getOutFile(String localFileName) {
- File outDir = new File(GlobalInformation.settings.out.get());
- return new File(outDir, localFileName);
- }
-
- private static String makeCodeTypeHtml(SizeBreakdown breakdown,
- Map<String, CodeCollection> nameToCodeColl) throws IOException {
- String outFileName = breakdown.getId() + "_codeTypeBreakdown.html";
- float maxSize = 0f;
- float sumSize = 0f;
- TreeMap<Float, String> sortedCodeTypes = new TreeMap<Float, String>(
- Collections.reverseOrder());
-
- // TODO(kprobst): turn this into a multimap?
- // com.google.common.collect.TreeMultimap
- for (String codeType : nameToCodeColl.keySet()) {
- float curSize = nameToCodeColl.get(codeType).getCumPartialSize(breakdown);
- sumSize += curSize;
-
- if (curSize != 0f) {
- sortedCodeTypes.put(curSize, codeType);
- if (curSize > maxSize) {
- maxSize = curSize;
- }
- }
- }
-
- final PrintWriter outFile = new PrintWriter(getOutFile(outFileName));
-
- outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
- outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
- outFile.println("<html>");
- outFile.println("<head>");
- outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
- outFile.println("<link rel=\"stylesheet\" href=\"roundedCorners.css\" media=\"screen\">");
- outFile.println("</head>");
- outFile.println("<body>");
-
- int yOffset = 0;
- for (Float size : sortedCodeTypes.keySet()) {
-
- String codeType = sortedCodeTypes.get(size);
- String drillDownFileName = breakdown.getId() + "_" + codeType
- + "Classes.html";
-
- float ratio = (size / maxSize) * 79;
- float perc = (size / sumSize) * 100;
-
- if (ratio < 3) {
- ratio = 3;
- }
-
- outFile.println("<div id=\"box\" style=\"width:" + ratio + "%; top: "
- + yOffset + "px; left: 110px;\">");
- outFile.println("<div id=\"lb\">");
- outFile.println("<div id=\"rb\">");
- outFile.println("<div id=\"bb\"><div id=\"blc\"><div id=\"brc\">");
- outFile.println("<div id=\"tb\"><div id=\"tlc\"><div id=\"trc\">");
- outFile.println("<div id=\"content\">");
- outFile.println("</div>");
- outFile.println("</div></div></div></div>");
- outFile.println("</div></div></div></div>");
- outFile.println("</div>");
-
- int yOffsetText = yOffset + 8;
- outFile.printf("<div class=\"barlabel\" style=\"top:" + yOffsetText
- + "px; left:5px;\">%.1f</div>\n", size);
- outFile.printf("<div class=\"barlabel\" style=\"top:" + yOffsetText
- + "px; left:70px;\">%.1f", perc);
- outFile.println("%</div>\n");
- outFile.println("<div class=\"barlabel\" style=\"top:" + yOffsetText
- + "px; left:110px;\"><a href=\"" + drillDownFileName
- + "\" target=\"_top\">" + codeType + "</a></div>");
-
- yOffset = yOffset + 25;
- }
- outFile.println("</body>");
- outFile.println("</html>");
- outFile.close();
-
- return outFileName;
- }
-
private String makeLiteralsHtml(SizeBreakdown breakdown,
Map<String, LiteralsCollection> nameToLitColl) throws IOException {
String outFileName = breakdown.getId() + "_literalsBreakdown.html";
@@ -1029,236 +1271,4 @@
return outFileName;
}
-
- private static String shellFileName(SizeBreakdown breakdown) {
- return breakdown.getId() + "-overallBreakdown.html";
- }
-
- public void makeDependenciesHtml(Map<String, ArrayList<String>> dependencies)
- throws IOException {
-
- String origOutFileName = "methodDependencies-";
- PrintWriter outFile = null;
- String curPackageName = "";
- String curClassName = "";
-
- for (String method : dependencies.keySet()) {
- // this key set is already in alphabetical order
- // get the package of this method, i.e., everything up to .[A-Z]
-
- String packageName = method;
- packageName = packageName.replaceAll("\\.\\p{Upper}.*", "");
-
- String className = method;
- className = className.replaceAll("::.*", "");
-
- if ((curPackageName.compareTo("") == 0)
- || (curPackageName.compareTo(packageName) != 0)) {
-
- curPackageName = packageName;
- if (outFile != null) {
- // finish up the current file
- outFile.println("</table>");
- outFile.println("<center>");
-
- outFile.println("</div>");
- outFile.println("</body>");
- outFile.println("</html>");
- outFile.close();
- }
-
- String outFileName = origOutFileName + filename(curPackageName)
- + ".html";
- outFile = new PrintWriter(getOutFile(outFileName));
-
- outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
- outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
- outFile.println("<html>");
- outFile.println("<head>");
- outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
- outFile.println("<title>Method Dependencies</title>");
- outFile.println("</head>");
-
- outFile.println("<style type=\"text/css\">");
- outFile.println("body {background-color: #728FCE}");
- outFile.println("h2 {background-color: transparent}");
- outFile.println("p {background-color: fuchsia}");
- outFile.println("</style>");
-
- outFile.println("<body>");
- outFile.println("<center>");
- outFile.println("<h2>Method Dependencies for package " + curPackageName
- + "</h2>");
- outFile.println("</center>");
- outFile.println("<hr>");
-
- outFile.println("<center>");
- outFile.println("<table border=\"1\" width=\"80%\" style=\"font-size: 11pt;\" bgcolor=\"white\">");
- }
- outFile.println("<tr>");
- if (curClassName.compareTo(className) != 0) {
- outFile.println("<td width=\"80%\"><a name=\"" + className + "\">"
- + "<a name=\"" + method + "\">" + method
- + "</a></a><font color=\"green\"> called by</font></td>");
- curClassName = className;
- } else {
- outFile.println("<td width=\"80%\"><a name=\"" + method + "\">"
- + method + "</a><font color=\"green\"> called by</font></td>");
- }
- outFile.println("</tr>");
-
- for (int i = 0; i < dependencies.get(method).size(); i++) {
- String depMethod = dependencies.get(method).get(i);
-
- outFile.println("<tr>");
- outFile.println("<td width=\"20%\"></td>");
- if (i != dependencies.get(method).size() - 1) {
- outFile.println("<td width=\"60%\">" + depMethod
- + "<font color=\"green\"> called by</font></td>");
- } else {
- outFile.println("<td width=\"60%\">" + depMethod + "</td>");
- }
- outFile.println("</tr>");
- }
- }
- }
-
- /**
- * Make size breakdowns for each package for one code collection.
- */
- public void makePackageClassesHtmls(SizeBreakdown breakdown)
- throws IOException {
- for (String packageName : GlobalInformation.packageToClasses.keySet()) {
-
- TreeMap<Float, String> sortedClasses = new TreeMap<Float, String>(
- Collections.reverseOrder());
- float maxSize = 0f;
-
- int maxDepCount = 1;
-
- for (String className : GlobalInformation.packageToClasses.get(packageName)) {
-
- float curSize = 0f;
- if (!breakdown.classToPartialSize.containsKey(className)) {
- // This class not present in this code collection
- } else {
- curSize = breakdown.classToPartialSize.get(className);
- }
-
- int depCount = 0;
- if (GlobalInformation.classToWhatItDependsOn.containsKey(className)) {
- depCount = GlobalInformation.classToWhatItDependsOn.get(className).size();
- }
-
- if (curSize != 0f) {
-
- sortedClasses.put(curSize, className);
- if (curSize > maxSize) {
- maxSize = curSize;
- }
- if (depCount > maxDepCount) {
- maxDepCount = depCount;
- }
- }
- }
-
- PrintWriter outFile = new PrintWriter(
- getOutFile(classesInPackageFileName(breakdown, packageName)));
-
- outFile.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"");
- outFile.println("\"http://www.w3.org/TR/html4/strict.dtd\">");
- outFile.println("<html>");
- outFile.println("<head>");
- outFile.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=ISO-8859-1\">");
- outFile.println("<link rel=\"stylesheet\" href=\"classLevel.css\" media=\"screen\">");
- outFile.println("<title>Classes in package \"" + packageName
- + "\"</title>");
- outFile.println("</head>");
- outFile.println("<body>");
-
- outFile.println("<center>");
- outFile.println("<h2>Classes in package \"" + packageName + "\"</h2>");
- addHeaderWithBreakdownContext(breakdown, outFile);
- outFile.println("</center>");
-
- outFile.println("<div style=\"width:90%; height:80%; overflow-y:auto; overflow-x:auto; top: 120px; left:70px; position:absolute; background-color:white\"");
-
- int yOffset = 0;
- for (Float size : sortedClasses.keySet()) {
-
- String className = sortedClasses.get(size);
-
- // TODO(kprobst): switch out the commented/uncommented lines below when
- // showing dependencies
- // float ratio = (size / maxSize) * 45;
- float ratio = (size / maxSize) * 85;
-
- if (ratio < 3) {
- ratio = 3;
- }
-
- // TODO(kprobst): not currently used, but will be for dependencies
- // get the dependency count
- int depCount = 0;
- if (GlobalInformation.classToWhatItDependsOn.containsKey(className)) {
- depCount = GlobalInformation.classToWhatItDependsOn.get(className).size();
- }
- float depRatio = ((float) depCount / (float) maxDepCount) * 45f;
- if (depRatio < 3.0) {
- depRatio = 3;
- }
-
- outFile.println("<div class=\"box\" style=\"width:" + ratio
- + "%; top: " + yOffset + "px; left: 60px;\">");
- outFile.println("<div id=\"lb\">");
- outFile.println("<div id=\"rb\">");
- outFile.println("<div id=\"bb\"><div id=\"blc\"><div id=\"brc\">");
- outFile.println("<div id=\"tb\"><div id=\"tlc\"><div id=\"trc\">");
- outFile.println("<div id=\"content\">");
- outFile.println("</div>");
- outFile.println("</div></div></div></div>");
- outFile.println("</div></div></div></div>");
- outFile.println("</div>");
-
- // TODO(kprobst): not currently used, but will be for dependencies
- /*
- * outFile.println("<div class=\"box-right\" style=\"width:" + depRatio
- * + "%; top: " + yOffset + "px; left: 50%\">");
- * outFile.println("<div id=\"lb\">");
- * outFile.println("<div id=\"rb\">");
- * outFile.println("<div id=\"bb\"><div id=\"blc\"><div id=\"brc\">");
- * outFile.println("<div id=\"tb\"><div id=\"tlc\"><div id=\"trc\">");
- * outFile.println("<div id=\"content\">"); outFile.println("</div>");
- * outFile.println("</div></div></div></div>");
- * outFile.println("</div></div></div></div>");
- * outFile.println("</div>");
- */
-
- int yOffsetText = yOffset + 8;
- outFile.printf("<div class=\"barlabel\" style=\"top:" + yOffsetText
- + "px; left:5px;\">%.1f</div>\n", size);
- if (GlobalInformation.displayDependencies == true) {
- outFile.println("<div class=\"barlabel\" style=\"top:" + yOffsetText
- + "px; left:70px;\"><a href=\"methodDependencies-"
- + filename(packageName) + ".html#" + className + "\">"
- + className + "</a></div>");
- } else {
- outFile.println("<div class=\"barlabel\" style=\"top:" + yOffsetText
- + "px; left:70px;\">" + className + "</div>");
- }
- /*
- * //TODO(kprobst) make this a link String drillDownFileName = className
- * + "Deps.html"; outFile.println("<div class=\"barlabel\" style=\"top:"
- * + yOffsetText + "px; left:50%;\"><a href=\"" + drillDownFileName +
- * "\" target=\"_top\">Dependencies: " + depCount + "</a></div>");
- */
- yOffset = yOffset + 25;
- }
-
- outFile.println("</div>");
- outFile.println("</body>");
- outFile.println("</html>");
- outFile.close();
- }
- }
}
diff --git a/tools/soyc-vis/src/com/google/gwt/soyc/SoycDashboard.java b/tools/soyc-vis/src/com/google/gwt/soyc/SoycDashboard.java
index 64f7f70..2bf62b5 100644
--- a/tools/soyc-vis/src/com/google/gwt/soyc/SoycDashboard.java
+++ b/tools/soyc-vis/src/com/google/gwt/soyc/SoycDashboard.java
@@ -380,7 +380,7 @@
if (curFragment == 0) {
breakdowns.add(GlobalInformation.initialCodeBreakdown);
}
- if (curFragment == (GlobalInformation.numSplitPoints+1)) {
+ if (curFragment == (GlobalInformation.numSplitPoints + 1)) {
breakdowns.add(GlobalInformation.leftoversBreakdown);
}
if (curFragment >= 1 && curFragment <= GlobalInformation.numSplitPoints) {