From ae7f2eebccce9bb7face19125f4ed523fbf3c044 Mon Sep 17 00:00:00 2001 From: jlanuti <jlanuti> Date: Wed, 15 Nov 2006 14:52:57 +0000 Subject: [PATCH] added ordering by internal usage in output files --- .../adopters/CombineClass2Reference.java | 83 ++++++++++--------- .../component/adopters/IOutputConstants.java | 4 +- .../tools/component/xsl/combine-class2ref.xsl | 10 +-- .../tools/component/xsl/combine-pkg2ref.xsl | 8 +- .../component/xsl/combine-plugin2ref.xsl | 8 +- 5 files changed, 61 insertions(+), 52 deletions(-) diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/CombineClass2Reference.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/CombineClass2Reference.java index 840d0bc86..b3bfaa198 100644 --- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/CombineClass2Reference.java +++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/CombineClass2Reference.java @@ -19,12 +19,15 @@ import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; + import org.eclipse.wtp.releng.tools.component.ILocation; import org.eclipse.wtp.releng.tools.component.api.ComponentXMLVisitor; import org.eclipse.wtp.releng.tools.component.internal.Location; @@ -290,6 +293,19 @@ public class CombineClass2Reference implements IComponentConstants, IOutputConst generateHTMLFiles(); } + private List getOrderedReferencedCountKeys(final TreeMap referenceCounts) { + String[] keys = (String[]) referenceCounts.keySet().toArray(new String[referenceCounts.keySet().size()]); + Comparator nonAPIComparator = new Comparator() { + public int compare(Object o1, Object o2) { + UsageCount usageCount1 = (UsageCount) referenceCounts.get(o1); + UsageCount usageCount2 = (UsageCount) referenceCounts.get(o2); + return usageCount2.nonAPIUse-usageCount1.nonAPIUse; + } + }; + Arrays.sort(keys,nonAPIComparator); + return Arrays.asList(keys); + } + /** * Helper method to update the passed in component team's cached usage counts based on the * given class reference and known API's in the provided component.xml file. @@ -492,9 +508,9 @@ public class CombineClass2Reference implements IComponentConstants, IOutputConst * @throws IOException */ private void writeCompTeamCSV(ComponentTeam compTeam, Writer classWriter, Writer pkgWriter, Writer pluginWriter) throws IOException { - writeCompTeamCSV(compTeam,classWriter,CLASS_USAGE,compTeam.getClassReferenceCounts()); - writeCompTeamCSV(compTeam,pkgWriter,PACKAGE_USAGE,compTeam.getPackageReferenceCounts()); - writeCompTeamCSV(compTeam,pluginWriter,PLUGIN_USAGE,compTeam.getPluginReferenceCounts()); + writeCompTeamCSV(compTeam,classWriter,compTeam.getClassReferenceCounts()); + writeCompTeamCSV(compTeam,pkgWriter,compTeam.getPackageReferenceCounts()); + writeCompTeamCSV(compTeam,pluginWriter,compTeam.getPluginReferenceCounts()); } /** @@ -503,29 +519,20 @@ public class CombineClass2Reference implements IComponentConstants, IOutputConst * * @param compTeam * @param writer - * @param usage * @param referenceCounts * @throws IOException */ - private void writeCompTeamCSV(ComponentTeam compTeam, Writer writer, int usage, TreeMap referenceCounts) throws IOException { + private void writeCompTeamCSV(ComponentTeam compTeam, Writer writer, TreeMap referenceCounts) throws IOException { // Write the team name writer.write(compTeam.getTeamName()); writer.write(LINE_BREAK); + // Order reference counts by usage type + List orderedKeys = getOrderedReferencedCountKeys(referenceCounts); // For each name key, retrieve the corresponding usage count values - for (Iterator it = referenceCounts.keySet().iterator(); it.hasNext();) { + for (Iterator it = orderedKeys.iterator(); it.hasNext();) { String name = (String)it.next(); - UsageCount usageCount = null; - switch (usage) { - case 0: - usageCount = (UsageCount)compTeam.getClassReferenceCounts().get(name); - break; - case 1: - usageCount = (UsageCount)compTeam.getPackageReferenceCounts().get(name); - break; - case 2: - usageCount = (UsageCount)compTeam.getPluginReferenceCounts().get(name); - break; - } + // Get the corresponding usage count for the name key + UsageCount usageCount = (UsageCount)referenceCounts.get(name); // Write out the internal and api usages writer.write(name); writer.write(COMMA); @@ -544,30 +551,33 @@ public class CombineClass2Reference implements IComponentConstants, IOutputConst try { // Create a new output stream ByteArrayOutputStream baos = new ByteArrayOutputStream(); - baos.write(HTML_ROOT_BEGIN.getBytes()); + baos.write(XML_ROOT_BEGIN.getBytes()); // For each component team, write out the combined component team specific usage data for (int i=0; i<getComponentTeams().size(); i++) { ComponentTeam compTeam = (ComponentTeam) getComponentTeams().get(i); - writeCompTeam(compTeam, baos); + writeCompTeamXML(compTeam, baos); } // Close the output stream - baos.write(HTML_ROOT_END.getBytes()); + baos.write(XML_ROOT_END.getBytes()); baos.close(); // Create a byte array from the output stream contents byte[] content = baos.toByteArray(); - // Write out the byte array to a file output stream for the plugin references + // Write out the byte array xml to a html file output stream for the plugin references + // This transform will do a XSLT operation using the file combine-plugin2ref.xsl XSLUtil.transform ( ClassLoader.getSystemResourceAsStream(COMBINE_PLUGINS_FILE), new ByteArrayInputStream(content), new FileOutputStream(getOutput() + PLUGIN_HTML_FILE_EXTENSION) ); - // Write out the byte array to a file output stream for the package references + // Write out the byte array xml to a html file output stream for the package references + // This transform will do a XSLT operation using the file combine-pkg2ref.xsl XSLUtil.transform ( ClassLoader.getSystemResourceAsStream(COMBINE_PACKAGES_FILE), new ByteArrayInputStream(content), new FileOutputStream(getOutput() + PACKAGE_HTML_FILE_EXTENSION) ); - // Write out the byte array to a file output stream for the class references + // Write out the byte array xml to a html file output stream for the class references + // This transform will do a XSLT operation using the file combine-class2ref.xsl XSLUtil.transform ( ClassLoader.getSystemResourceAsStream(COMBINE_CLASSES_FILE), new ByteArrayInputStream(content), @@ -587,13 +597,13 @@ public class CombineClass2Reference implements IComponentConstants, IOutputConst * @param baos * @throws IOException */ - private void writeCompTeam(ComponentTeam compTeam, ByteArrayOutputStream baos) throws IOException { + private void writeCompTeamXML(ComponentTeam compTeam, ByteArrayOutputStream baos) throws IOException { baos.write("<team lead=\"".getBytes()); //$NON-NLS-1$ baos.write(compTeam.getTeamName().getBytes()); baos.write("\">".getBytes()); //$NON-NLS-1$ - writeCompTeam(compTeam,baos,CLASS_USAGE,compTeam.getClassReferenceCounts()); - writeCompTeam(compTeam,baos,PACKAGE_USAGE,compTeam.getPackageReferenceCounts()); - writeCompTeam(compTeam,baos,PLUGIN_USAGE,compTeam.getPluginReferenceCounts()); + writeCompTeamXML(baos,CLASS_USAGE,compTeam.getClassReferenceCounts()); + writeCompTeamXML(baos,PACKAGE_USAGE,compTeam.getPackageReferenceCounts()); + writeCompTeamXML(baos,PLUGIN_USAGE,compTeam.getPluginReferenceCounts()); baos.write("</team>".getBytes()); //$NON-NLS-1$ } @@ -602,33 +612,31 @@ public class CombineClass2Reference implements IComponentConstants, IOutputConst * the non API and API usage for the class usage file, the package usage file, and the plugin * usage file. * - * @param compTeam ComponentTeam * @param baos ByteArrayOutputStream * @param usage class, package, or plugin? * @param referenceCounts TreeMap * @throws IOException */ - private void writeCompTeam(ComponentTeam compTeam, ByteArrayOutputStream baos, int usage, TreeMap referenceCounts) throws IOException { + private void writeCompTeamXML(ByteArrayOutputStream baos, int usage, TreeMap referenceCounts) throws IOException { + // Order reference counts by usage type + List orderedKeys = getOrderedReferencedCountKeys(referenceCounts); // Iterate over the name keys of the references tree map - for (Iterator it = referenceCounts.keySet().iterator(); it.hasNext();) { + for (Iterator it = orderedKeys.iterator(); it.hasNext();) { String name = (String)it.next(); - UsageCount usageCount = null; // Retrieve the appropriate UsageCount from the map given the current name key + UsageCount usageCount = (UsageCount) referenceCounts.get(name); switch (usage) { // Class reference case 0: - usageCount = (UsageCount)compTeam.getClassReferenceCounts().get(name); baos.write("<class name=\"".getBytes()); //$NON-NLS-1$ break; // Package reference case 1: - usageCount = (UsageCount)compTeam.getPackageReferenceCounts().get(name); baos.write("<package name=\"".getBytes()); //$NON-NLS-1$ break; // Plugin reference case 2: - usageCount = (UsageCount)compTeam.getPluginReferenceCounts().get(name); - baos.write("<plugin id=\"".getBytes()); //$NON-NLS-1$ + baos.write("<plugin id=\"".getBytes()); //$NON-NLS-1$ break; } // Write the api and internal usage for the current reference @@ -643,7 +651,8 @@ public class CombineClass2Reference implements IComponentConstants, IOutputConst /** * This is the static main method used for launching this reference usage combination - * application. + * application. It will create and set up the class instance and then invoke the execute + * method to do the combination. * * @param args */ diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/IOutputConstants.java b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/IOutputConstants.java index 671b59527..58dbdbdef 100644 --- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/IOutputConstants.java +++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/adopters/IOutputConstants.java @@ -5,8 +5,8 @@ public interface IOutputConstants { public static final String LINE_BREAK = "\n"; //$NON-NLS-1$ public static final String COMMA = ","; //$NON-NLS-1$ - public static final String HTML_ROOT_BEGIN = "<root>"; //$NON-NLS-1$ - public static final String HTML_ROOT_END = "</root>" ; //$NON-NLS-1$ + public static final String XML_ROOT_BEGIN = "<root>"; //$NON-NLS-1$ + public static final String XML_ROOT_END = "</root>" ; //$NON-NLS-1$ public static final String PRINT_SOURCE_LOCATION = "\t-src\t\t<src>\t\tlocation of your usage reports"; //$NON-NLS-1$ public static final String PRINT_OUTPUT_LOCATION = "\t-output\t<output>\t\tlocation of the output file"; //$NON-NLS-1$ diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-class2ref.xsl b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-class2ref.xsl index f1db2f6f3..40337e587 100644 --- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-class2ref.xsl +++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-class2ref.xsl @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="ISO-8859-1"?> -<xsl:stylesheet version="1.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> - +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + <xsl:template match="/"> <html> <body> @@ -23,7 +22,9 @@ </table> <xsl:for-each select="root/team"> <xsl:sort select="@lead"/> - <xsl:apply-templates select="."/> + <xsl:apply-templates select="."> + <xsl:sort select="@internal" order="descending"/> + </xsl:apply-templates> </xsl:for-each> </body> </html> @@ -38,7 +39,6 @@ <th>API usage count</th> </tr> <xsl:for-each select="class"> - <xsl:sort select="@name"/> <xsl:apply-templates select="."/> </xsl:for-each> </table> diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-pkg2ref.xsl b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-pkg2ref.xsl index 4617663b9..089f41257 100644 --- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-pkg2ref.xsl +++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-pkg2ref.xsl @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="ISO-8859-1"?> -<xsl:stylesheet version="1.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> @@ -23,7 +22,9 @@ </table> <xsl:for-each select="root/team"> <xsl:sort select="@lead"/> - <xsl:apply-templates select="."/> + <xsl:apply-templates select="."> + <xsl:sort select="@internal" order="descending"/> + </xsl:apply-templates> </xsl:for-each> </body> </html> @@ -38,7 +39,6 @@ <th>API usage count</th> </tr> <xsl:for-each select="package"> - <xsl:sort select="@name"/> <xsl:apply-templates select="."/> </xsl:for-each> </table> diff --git a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-plugin2ref.xsl b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-plugin2ref.xsl index 9be8f8176..7d598cb57 100644 --- a/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-plugin2ref.xsl +++ b/archive/releng.builder/tools/apitools/org.eclipse.wtp.releng.tools.component.core/src/org/eclipse/wtp/releng/tools/component/xsl/combine-plugin2ref.xsl @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="ISO-8859-1"?> -<xsl:stylesheet version="1.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> @@ -23,7 +22,9 @@ </table> <xsl:for-each select="root/team"> <xsl:sort select="@lead"/> - <xsl:apply-templates select="."/> + <xsl:apply-templates select="."> + <xsl:sort select="@internal" order="descending"/> + </xsl:apply-templates> </xsl:for-each> </body> </html> @@ -38,7 +39,6 @@ <th>API usage count</th> </tr> <xsl:for-each select="plugin"> - <xsl:sort select="@id"/> <xsl:apply-templates select="."/> </xsl:for-each> </table> -- GitLab