1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/******************************************************************************* 2402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Copyright (c) 2000, 2006 IBM Corporation and others. 3402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * All rights reserved. This program and the accompanying materials 4402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * are made available under the terms of the Eclipse Public License v1.0 5402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * which accompanies this distribution, and is available at 6402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * http://www.eclipse.org/legal/epl-v10.html 7402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * 8402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Contributors: 9402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * IBM Corporation - initial API and implementation 10402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll *******************************************************************************/ 11402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpackage org.eclipse.releng.generators; 12402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 13402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.BufferedReader; 14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.File; 15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.FileInputStream; 16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.FileNotFoundException; 17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.FileOutputStream; 18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.FileReader; 19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.IOException; 20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.InputStream; 21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Arrays; 22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.StringTokenizer; 23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Vector; 24402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Enumeration; 25402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 26402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.apache.tools.ant.Task; 27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport javax.xml.parsers.DocumentBuilderFactory; 28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport javax.xml.parsers.DocumentBuilder; 29402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport javax.xml.parsers.ParserConfigurationException; 30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.Document; 32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.Element; 33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.NamedNodeMap; 34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.Node; 35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.NodeList; 36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.xml.sax.InputSource; 37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.xml.sax.SAXException; 38402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 41402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @version 1.0 42402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @author Dean Roberts 43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic class TestResultsGenerator extends Task { 45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String WARNING_SEVERITY = "WARNING"; 46402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String ERROR_SEVERITY = "ERROR"; 47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String ForbiddenReferenceID = "ForbiddenReference"; 48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final String DiscouragedReferenceID = "DiscouragedReference"; 49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static final int DEFAULT_READING_SIZE = 8192; 51402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 52402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final String elementName = "testsuite"; 53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final String testResultsToken = "%testresults%"; 54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final String compileLogsToken = "%compilelogs%"; 55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll static final String accessesLogsToken = "%accesseslogs%"; 56402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector dropTokens; 57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector platformSpecs; 58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector differentPlatforms; 59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String testResultsWithProblems = "\n"; 60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String testResultsXmlUrls = "\n"; 61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private DocumentBuilder parser =null; 63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public ErrorTracker anErrorTracker; 64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String testResultsTemplateString = ""; 65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String dropTemplateString = ""; 66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector platformDescription; 68402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector platformTemplateString; 69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector platformDropFileName; 70402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 71402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Status of tests results (pending, successful, failed), used to specify the color 72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //of the test Results link on the build pages (standard, green, red), once failures 73402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //are encountered, this is set to failed 74402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected String testResultsStatus = "successful"; 75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //assume tests ran. If no html files are found, this is set to false 76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private boolean testsRan = true; 77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Parameters 79402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // build runs JUnit automated tests 80402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private boolean isBuildTested; 81402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 82402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // buildType, I, N 83402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String buildType; 84402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 85402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Comma separated list of drop tokens 86402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String dropTokenList; 87402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 88402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Token in platform.php.template to be replaced by the desired platform ID 89402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String platformIdentifierToken; 90402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 91402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Location of the xml files 92402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String xmlDirectoryName; 93402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 94402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Location of the html files 95402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String htmlDirectoryName; 96402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 97402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Location of the resulting index.php file. 98402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String dropDirectoryName; 99402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Location and name of the template index.php file. 101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String testResultsTemplateFileName; 102402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 103402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Platform specific template and output list (colon separated) in the following format: 104402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // <descriptor, ie. OS name>,path to template file, path to output file 105402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String platformSpecificTemplateList=""; 106402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 107402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Location and name of the template drop index.php file. 108402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String dropTemplateFileName; 109402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 110402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Name of the generated index php file. 111402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String testResultsHtmlFileName; 112402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 113402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Name of the generated drop index php file; 114402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String dropHtmlFileName; 115402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 116402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Arbitrary path used in the index.php page to href the 117402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // generated .html files. 118402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String hrefTestResultsTargetPath; 119402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 120402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Aritrary path used in the index.php page to reference the compileLogs 121402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String hrefCompileLogsTargetPath; 122402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 123402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Location of compile logs base directory 124402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String compileLogsDirectoryName; 125402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 126402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Location and name of test manifest file 127402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String testManifestFileName; 128402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 129402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Initialize the prefix to a default string 130402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String prefix = "default"; 131402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String testShortName = ""; 132402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int counter = 0; 133402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //The four configurations, add new configurations to test results here + update 134402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //testResults.php.template for changes 135402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String[] testsConfig = {"linux.gtk.x86.xml", 136402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "linux.gtk.x86_6.0.xml", 137402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "macosx.cocoa.x86_5.0.xml", 138402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "win32.win32.x86.xml", 139402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "win32.win32.x86_6.0.xml"}; 140402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 141402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 142402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public static void main(String[] args) { 143402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll TestResultsGenerator test = new TestResultsGenerator(); 144402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setDropTokenList( 145402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "%sdk%,%tests%,%example%,%rcpruntime%,%rcpsdk%,%deltapack%,%icubase%,%runtime%,%platformsdk%,%jdt%,%jdtsdk%,%pde%,%pdesdk%,%cvs%,%cvssdk%,%teamextras%,%swt%,%relengtools%"); 146402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setPlatformIdentifierToken("%platform%"); 147402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.getDropTokensFromList(test.dropTokenList); 148402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setIsBuildTested(true); 149402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setXmlDirectoryName("C:\\junk\\testresults\\xml"); 150402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setHtmlDirectoryName("C:\\junk\\testresults"); 151402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setDropDirectoryName("C:\\junk"); 152402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setTestResultsTemplateFileName( 153402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "C:\\junk\\templateFiles\\testResults.php.template"); 154402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setPlatformSpecificTemplateList( 155402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "Windows,C:\\junk\\templateFiles\\platform.php.template,winPlatform.php;Linux,C:\\junk\\templateFiles\\platform.php.template,linPlatform.php;Solaris,C:\\junk\\templateFiles\\platform.php.template,solPlatform.php;AIX,C:\\junk\\templateFiles\\platform.php.template,aixPlatform.php;Macintosh,C:\\junk\\templateFiles\\platform.php.template,macPlatform.php;Source Build,C:\\junk\\templateFiles\\sourceBuilds.php.template,sourceBuilds.php"); 156402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setDropTemplateFileName( 157402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "C:\\junk\\templateFiles\\index.php.template"); 158402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setTestResultsHtmlFileName("testResults.php"); 159402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //test.setDropHtmlFileName("index.php"); 160402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setDropHtmlFileName("index.html"); 161402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 162402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setHrefTestResultsTargetPath("testresults"); 163402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setCompileLogsDirectoryName( 164402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "C:\\junk\\compilelogs\\plugins"); 165402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setHrefCompileLogsTargetPath("compilelogs"); 166402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.setTestManifestFileName("C:\\junk\\testManifest.xml"); 167402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll test.execute(); 168402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 169402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 170402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void execute() { 171402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 172402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll anErrorTracker = new ErrorTracker(); 173402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformDescription = new Vector(); 174402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformTemplateString = new Vector(); 175402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformDropFileName = new Vector(); 176402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll anErrorTracker.loadFile(testManifestFileName); 177402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll getDropTokensFromList(dropTokenList); 178402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsTemplateString = readFile(testResultsTemplateFileName); 179402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTemplateString = readFile(dropTemplateFileName); 180402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 181402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Specific to the platform build-page 182402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(platformSpecificTemplateList!="") { 183402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String description, platformTemplateFile, platformDropFile; 184402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Retrieve the different platforms and their info 185402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll getDifferentPlatformsFromList(platformSpecificTemplateList); 186402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Parses the platform info and retrieves the platform name, 187402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //template file, and drop file 188402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for(int i=0; i<differentPlatforms.size(); i++) { 189402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll getPlatformSpecsFromList(differentPlatforms.get(i).toString()); 190402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll description = platformSpecs.get(0).toString(); 191402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformTemplateFile = platformSpecs.get(1).toString(); 192402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformDropFile = platformSpecs.get(2).toString(); 193402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformDescription.add(description); 194402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformTemplateString.add(readFile(platformTemplateFile)); 195402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformDropFileName.add(platformDropFile); 196402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 197402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 198402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 199402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 200402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 201402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("Begin: Generating test results index page"); 202402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("Parsing XML files"); 203402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll parseXml(); 204402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("Parsing compile logs"); 205402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll parseCompileLogs(); 206402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("End: Generating test results index page"); 207402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writeTestResultsFile(); 208402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //For the platform build-page, write platform files, in addition to the index file 209402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(platformSpecificTemplateList!="") { 210402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writeDropFiles(); 211402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 212402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else { 213402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writeDropIndexFile(); 214402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 215402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 216402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 217402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void parseCompileLogs() { 218402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 219402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringBuffer compilerString = new StringBuffer(); 220402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringBuffer accessesString = new StringBuffer(); 221402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll processCompileLogsDirectory( 222402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll compileLogsDirectoryName, 223402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll compilerString, 224402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll accessesString); 225402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (compilerString.length() == 0) { 226402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll compilerString.append("None"); 227402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 228402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (accessesString.length() == 0) { 229402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll accessesString.append("None"); 230402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 231402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsTemplateString = 232402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replace(testResultsTemplateString, compileLogsToken, String.valueOf(compilerString)); 233402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 234402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsTemplateString = 235402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replace(testResultsTemplateString, accessesLogsToken, String.valueOf(accessesString)); 236402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 237402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 238402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private void processCompileLogsDirectory(String directoryName, StringBuffer compilerLog, StringBuffer accessesLog) { 239402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File sourceDirectory = new File(directoryName); 240402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (sourceDirectory.isFile()) { 241402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (sourceDirectory.getName().endsWith(".log")) 242402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll readCompileLog(sourceDirectory.getAbsolutePath(), compilerLog, accessesLog); 243402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (sourceDirectory.getName().endsWith(".xml")) 244402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll parseCompileLog(sourceDirectory.getAbsolutePath(), compilerLog, accessesLog); 245402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 246402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (sourceDirectory.isDirectory()) { 247402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File[] logFiles = sourceDirectory.listFiles(); 248402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Arrays.sort(logFiles); 249402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int j = 0; j < logFiles.length; j++) { 250402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll processCompileLogsDirectory(logFiles[j].getAbsolutePath(), compilerLog, accessesLog); 251402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 252402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 253402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 254402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 255402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private void readCompileLog(String log, StringBuffer compilerLog, StringBuffer accessesLog) { 256402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String fileContents = readFile(log); 257402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 258402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int errorCount = countCompileErrors(fileContents); 259402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int warningCount = countCompileWarnings(fileContents); 260402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int forbiddenWarningCount = countForbiddenWarnings(fileContents); 261402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int discouragedWarningCount = countDiscouragedWarnings(fileContents); 262402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount != 0) { 263402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //use wildcard in place of version number on directory names 264402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String logName = 265402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll log.substring(getCompileLogsDirectoryName().length() + 1); 266402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringBuffer stringBuffer = new StringBuffer(logName); 267402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll stringBuffer.replace( 268402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName.indexOf("_") + 1, 269402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName.indexOf(File.separator, logName.indexOf("_") + 1), 270402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "*"); 271402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName = new String(stringBuffer); 272402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 273402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll anErrorTracker.registerError(logName); 274402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 275402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll formatCompileErrorRow(log, errorCount, warningCount, compilerLog); 276402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll formatAccessesErrorRow(log, forbiddenWarningCount, discouragedWarningCount, accessesLog); 277402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 278402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 279402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private void parseCompileLog(String log, StringBuffer compilerLog, StringBuffer accessesLog) { 280402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int errorCount = 0; 281402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int warningCount = 0; 282402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int forbiddenWarningCount = 0; 283402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int discouragedWarningCount = 0; 284402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 285402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File file=new File(log); 286402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Document aDocument=null; 287402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll BufferedReader reader = null; 288402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 289402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll reader = new BufferedReader(new FileReader(file)); 290402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll InputSource inputSource = new InputSource(reader); 291402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 292402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DocumentBuilder builder = factory.newDocumentBuilder(); 293402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aDocument = builder.parse(inputSource); 294402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (SAXException e) { 295402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e.printStackTrace(); 296402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 297402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e.printStackTrace(); 298402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (ParserConfigurationException e) { 299402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e.printStackTrace(); 300402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } finally { 301402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (reader != null) { 302402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 303402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll reader.close(); 304402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch(IOException e) { 305402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // ignore 306402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 307402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 308402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 309402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 310402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (aDocument == null) return; 311402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Get summary of problems 312402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll NodeList nodeList = aDocument.getElementsByTagName("problem"); 313402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (nodeList == null ||nodeList.getLength()==0) 314402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return; 315402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 316402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int length = nodeList.getLength(); 317402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < length; i++) { 318402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node problemNode = nodeList.item(i); 319402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll NamedNodeMap aNamedNodeMap = problemNode.getAttributes(); 320402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node severityNode = aNamedNodeMap.getNamedItem("severity"); 321402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node idNode = aNamedNodeMap.getNamedItem("id"); 322402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (severityNode != null) { 323402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String severityNodeValue = severityNode.getNodeValue(); 324402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (WARNING_SEVERITY.equals(severityNodeValue)) { 325402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // this is a warning 326402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // need to check the id 327402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String nodeValue = idNode.getNodeValue(); 328402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (ForbiddenReferenceID.equals(nodeValue)) { 329402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll forbiddenWarningCount++; 330402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else if (DiscouragedReferenceID.equals(nodeValue)) { 331402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll discouragedWarningCount++; 332402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 333402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll warningCount++; 334402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 335402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else if (ERROR_SEVERITY.equals(severityNodeValue)) { 336402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // this is an error 337402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll errorCount++; 338402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 339402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 340402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 341402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount != 0) { 342402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //use wildcard in place of version number on directory names 343402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //System.out.println(log + "/n"); 344402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String logName = 345402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll log.substring(getCompileLogsDirectoryName().length() + 1); 346402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringBuffer buffer = new StringBuffer(logName); 347402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buffer.replace( 348402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName.indexOf("_") + 1, 349402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName.indexOf(File.separator, logName.indexOf("_") + 1), 350402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "*"); 351402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName = new String(buffer); 352402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 353402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll anErrorTracker.registerError(logName); 354402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 355402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String logName = log.replaceAll(".xml", ".html"); 356402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll formatCompileErrorRow( 357402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName, 358402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll errorCount, 359402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll warningCount, 360402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll compilerLog); 361402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll formatAccessesErrorRow( 362402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logName, 363402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll forbiddenWarningCount, 364402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll discouragedWarningCount, 365402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll accessesLog); 366402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 367402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 368402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public static byte[] getFileByteContent(String fileName) throws IOException { 369402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll InputStream stream = null; 370402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 371402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File file = new File(fileName); 372402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll stream = new FileInputStream(file); 373402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return getInputStreamAsByteArray(stream, (int) file.length()); 374402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } finally { 375402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (stream != null) { 376402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 377402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll stream.close(); 378402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 379402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // ignore 380402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 381402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 382402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 383402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 384402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 385402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 386402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Returns the given input stream's contents as a byte array. 387402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * If a length is specified (ie. if length != -1), only length bytes 388402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * are returned. Otherwise all bytes in the stream are returned. 389402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Note this doesn't close the stream. 390402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @throws IOException if a problem occured reading the stream. 391402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 392402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public static byte[] getInputStreamAsByteArray(InputStream stream, int length) 393402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll throws IOException { 394402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll byte[] contents; 395402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (length == -1) { 396402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contents = new byte[0]; 397402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int contentsLength = 0; 398402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int amountRead = -1; 399402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll do { 400402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int amountRequested = Math.max(stream.available(), DEFAULT_READING_SIZE); // read at least 8K 401402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 402402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // resize contents if needed 403402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (contentsLength + amountRequested > contents.length) { 404402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.arraycopy( 405402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contents, 406402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 0, 407402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contents = new byte[contentsLength + amountRequested], 408402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 0, 409402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contentsLength); 410402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 411402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 412402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // read as many bytes as possible 413402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll amountRead = stream.read(contents, contentsLength, amountRequested); 414402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 415402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (amountRead > 0) { 416402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // remember length of contents 417402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contentsLength += amountRead; 418402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 419402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } while (amountRead != -1); 420402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 421402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // resize contents if necessary 422402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (contentsLength < contents.length) { 423402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.arraycopy( 424402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contents, 425402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 0, 426402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contents = new byte[contentsLength], 427402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 0, 428402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contentsLength); 429402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 430402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 431402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll contents = new byte[length]; 432402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int len = 0; 433402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int readSize = 0; 434402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while ((readSize != -1) && (len != length)) { 435402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // See PR 1FMS89U 436402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // We record first the read size. In this case len is the actual read size. 437402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll len += readSize; 438402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll readSize = stream.read(contents, len, length - len); 439402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 440402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 441402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 442402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return contents; 443402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 444402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 445402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String readFile(String fileName) { 446402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll byte[] aByteArray = null; 447402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 448402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aByteArray = getFileByteContent(fileName); 449402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 450402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e.printStackTrace(); 451402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 452402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (aByteArray == null) { 453402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return ""; 454402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 455402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return new String(aByteArray); 456402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 457402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 458402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int countCompileErrors(String aString) { 459402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return extractNumber(aString, "error"); 460402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 461402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 462402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int countCompileWarnings(String aString) { 463402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return extractNumber(aString, "warning"); 464402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 465402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 466402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int countForbiddenWarnings(String aString) { 467402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return extractNumber(aString, "Access restriction:"); 468402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 469402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 470402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int countDiscouragedWarnings(String aString) { 471402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return extractNumber(aString, "Discouraged access:"); 472402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 473402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 474402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int extractNumber(String aString, String endToken) { 475402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int endIndex = aString.lastIndexOf(endToken); 476402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (endIndex == -1) { 477402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return 0; 478402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 479402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 480402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int startIndex = endIndex; 481402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (startIndex >= 0 482402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll && aString.charAt(startIndex) != '(' 483402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll && aString.charAt(startIndex) != ',') { 484402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll startIndex--; 485402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 486402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 487402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String count = aString.substring(startIndex + 1, endIndex).trim(); 488402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 489402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return Integer.parseInt(count); 490402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (NumberFormatException e) { 491402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return 0; 492402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 493402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 494402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 495402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 496402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int missingCount = 0; 497402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String verifyAllTestsRan(String directory) { 498402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Enumeration enumeration = (anErrorTracker.getTestLogs()).elements(); 499402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 500402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String replaceString=""; 501402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (enumeration.hasMoreElements()) { 502402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String testLogName = enumeration.nextElement().toString(); 503402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 504402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (new File(directory + File.separator + testLogName) 505402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .exists()) 506402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll continue; 507402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 508402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll anErrorTracker.registerError(testLogName); 509402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String tmp=((platformSpecificTemplateList.equals(""))?formatRow(testLogName, -1, false):formatRowReleng(testLogName, -1, false)); 510402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(missingCount==0) { 511402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replaceString=replaceString+"</table></br>"+"\n"+ 512402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "<table width=\"65%\" border=\"1\" bgcolor=\"#EEEEEE\" rules=\"groups\" align=\"center\">"+ 513402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "<tr bgcolor=\"#9999CC\"> <th width=\"80%\" align=\"center\"> Missing Files </th><th align=\"center\"> Status </th></tr>"; 514402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 515402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replaceString=replaceString+tmp; 516402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsWithProblems=testResultsWithProblems.concat("\n" + testLogName.substring(0,testLogName.length()-4) +" (file missing)"); 517402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll missingCount++; 518402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 519402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return replaceString; 520402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 521402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 522402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void parseXml() { 523402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 524402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File sourceDirectory = new File(xmlDirectoryName); 525402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 526402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (sourceDirectory.exists()) { 527402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 528402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String replaceString = ""; 529402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 530402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File[] xmlFileNames = sourceDirectory.listFiles(); 531402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Arrays.sort(xmlFileNames) ; 532402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 533402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll File sourceDirectoryParent = sourceDirectory.getParentFile(); 534402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (sourceDirectoryParent != null) { 535402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sourceDirectoryParent = sourceDirectoryParent.getParentFile(); 536402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 537402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String sourceDirectoryCanonicalPath = null; 538402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 539402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll sourceDirectoryCanonicalPath = sourceDirectoryParent.getCanonicalPath(); 540402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 541402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // ignore 542402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 543402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < xmlFileNames.length; i++) { 544402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (xmlFileNames[i].getPath().endsWith(".xml")) { 545402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String fullName = xmlFileNames[i].getPath(); 546402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int errorCount = countErrors(fullName); 547402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount != 0) { 548402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String testName = 549402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll xmlFileNames[i].getName().substring( 550402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 0, 551402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll xmlFileNames[i].getName().length() - 4); 552402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsWithProblems = 553402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsWithProblems.concat("\n" + testName); 554402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsXmlUrls = 555402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsXmlUrls.concat("\n" + extractXmlRelativeFileName(sourceDirectoryCanonicalPath, xmlFileNames[i])); 556402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll anErrorTracker.registerError( 557402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fullName.substring( 558402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll getXmlDirectoryName().length() + 1)); 559402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 560402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 561402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 562402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String tmp=((platformSpecificTemplateList.equals(""))?formatRow(xmlFileNames[i].getPath(), errorCount,true):formatRowReleng(xmlFileNames[i].getPath(), errorCount,true)); 563402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replaceString=replaceString+tmp; 564402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 565402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 566402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 567402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 568402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //check for missing test logs 569402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replaceString=replaceString+verifyAllTestsRan(xmlDirectoryName); 570402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 571402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsTemplateString = 572402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replace( 573402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsTemplateString, 574402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsToken, 575402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replaceString); 576402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testsRan = true; 577402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 578402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 579402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testsRan = false; 580402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println( 581402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "Test results not found in " 582402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + sourceDirectory.getAbsolutePath()); 583402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 584402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 585402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 586402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private static String extractXmlRelativeFileName(String rootCanonicalPath, File xmlFile) { 587402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (rootCanonicalPath != null) { 588402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String xmlFileCanonicalPath = null; 589402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 590402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll xmlFileCanonicalPath = xmlFile.getCanonicalPath(); 591402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 592402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // ignore 593402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 594402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (xmlFileCanonicalPath != null) { 595402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // + 1 to remove the '\' 596402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return xmlFileCanonicalPath.substring(rootCanonicalPath.length() + 1).replace('\\', '/'); 597402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 598402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 599402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return ""; 600402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 601402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String replace( 602402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String source, 603402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String original, 604402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String replacement) { 605402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 606402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int replaceIndex = source.indexOf(original); 607402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (replaceIndex > -1) { 608402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String resultString = source.substring(0, replaceIndex); 609402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll resultString = resultString + replacement; 610402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll resultString = 611402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll resultString 612402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + source.substring(replaceIndex + original.length()); 613402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return resultString; 614402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 615402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("Could not find token: " + original); 616402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return source; 617402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 618402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 619402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 620402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 621402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected void writeDropFiles() { 622402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writeDropIndexFile(); 623402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Write all the platform files 624402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for(int i=0; i<platformDescription.size(); i++) { 625402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writePlatformFile(platformDescription.get(i).toString(), platformTemplateString.get(i).toString(), platformDropFileName.get(i).toString()); 626402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 627402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 628402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 629402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected void writeDropIndexFile() { 630402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 631402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String[] types = anErrorTracker.getTypes(); 632402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < types.length; i++) { 633402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PlatformStatus[] platforms = anErrorTracker.getPlatforms(types[i]); 634402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String replaceString = processDropRows(platforms); 635402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTemplateString = 636402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replace( 637402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTemplateString, 638402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTokens.get(i).toString(), 639402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replaceString); 640402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 641402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Replace the token %testsStatus% with the status of the test results 642402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTemplateString = replace(dropTemplateString,"%testsStatus%",testResultsStatus); 643402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String outputFileName = 644402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropDirectoryName + File.separator + dropHtmlFileName; 645402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writeFile(outputFileName, dropTemplateString); 646402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 647402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 648402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Writes the platform file (dropFileName) specific to "desiredPlatform" 649402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected void writePlatformFile(String desiredPlatform, String templateString, String dropFileName) { 650402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 651402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String[] types = anErrorTracker.getTypes(); 652402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < types.length; i++) { 653402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PlatformStatus[] platforms = anErrorTracker.getPlatforms(types[i]); 654402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Call processPlatformDropRows passing the platform's name 655402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String replaceString = processPlatformDropRows(platforms, desiredPlatform); 656402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll templateString = 657402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replace( 658402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll templateString, 659402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTokens.get(i).toString(), 660402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll replaceString); 661402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 662402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Replace the platformIdentifierToken with the platform's name and the testsStatus 663402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //token with the status of the test results 664402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll templateString = replace(templateString, platformIdentifierToken, desiredPlatform); 665402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll templateString = replace(templateString,"%testsStatus%",testResultsStatus); 666402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String outputFileName = 667402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropDirectoryName + File.separator + dropFileName; 668402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writeFile(outputFileName, templateString); 669402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 670402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 671402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Process drop rows specific to each of the platforms 672402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected String processPlatformDropRows(PlatformStatus[] platforms, String name) { 673402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 674402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String result = ""; 675402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll boolean found = false; 676402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < platforms.length; i++) { 677402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the platform description indicates the platform's name, or "All", 678402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //call processDropRow 679402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(platforms[i].getName().startsWith(name.substring(0, 3)) || platforms[i].getName().equals("All")) { 680402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + processDropRow(platforms[i]); 681402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll found = true; 682402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 683402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the platform description indicates "All Other Platforms", process 684402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //the row locally 685402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else if(platforms[i].getName().equals("All Other Platforms") && !found) 686402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll { 687402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String imageName = ""; 688402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 689402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (platforms[i].hasErrors()) { 690402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = 691402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "<a href=\"" + getTestResultsHtmlFileName() + "\"><img src = \"FAIL.gif\" width=19 height=23></a>"; 692402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 693402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (testsRan) { 694402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = "<img src = \"OK.gif\" width=19 height=23>"; 695402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 696402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (isBuildTested) { 697402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = 698402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "<font size=\"-1\" color=\"#FF0000\">pending</font>"; 699402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 700402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = "<img src = \"OK.gif\" width=19 height=23>"; 701402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 702402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 703402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 704402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 705402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "<tr>"; 706402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "<td><div align=left>" + imageName + "</div></td>\n"; 707402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "<td>All " + name + "</td>"; 708402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //generate http, md5 and sha1 links by calling php functions in the template 709402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "<td><?php genLinks($_SERVER[\"SERVER_NAME\"],\"@buildlabel@\",\"" + platforms[i].getFileName() +"\"); ?></td>\n"; 710402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "</tr>\n"; 711402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 712402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 713402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 714402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return result; 715402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 716402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 717402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected String processDropRows(PlatformStatus[] platforms) { 718402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 719402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String result = ""; 720402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < platforms.length; i++) { 721402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + processDropRow(platforms[i]); 722402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 723402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 724402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return result; 725402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 726402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 727402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected String processDropRow(PlatformStatus aPlatform) { 728402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 729402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String imageName = ""; 730402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 731402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (aPlatform.hasErrors()) { 732402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = 733402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "<a href=\"" + getTestResultsHtmlFileName()+ "\"><img src = \"FAIL.gif\" width=19 height=23></a>"; 734402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Failure in tests 735402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsStatus = "failed"; 736402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 737402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (testsRan) { 738402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = "<img src = \"OK.gif\" width=19 height=23>"; 739402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 740402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (isBuildTested) { 741402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = 742402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "<font size=\"-1\" color=\"#FF0000\">pending</font>"; 743402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Tests are pending 744402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsStatus = "pending"; 745402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 746402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll imageName = "<img src = \"OK.gif\" width=19 height=23>"; 747402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 748402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 749402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 750402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 751402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String result = "<tr>"; 752402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 753402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "<td><div align=left>" + imageName + "</div></td>\n"; 754402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "<td>" + aPlatform.getName() + "</td>"; 755402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "<td>" + aPlatform.getFileName() + "</td>\n"; 756402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result = result + "</tr>\n"; 757402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 758402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return result; 759402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 760402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 761402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void writeTestResultsFile() { 762402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 763402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String outputFileName = 764402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropDirectoryName + File.separator + testResultsHtmlFileName; 765402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll writeFile(outputFileName, testResultsTemplateString); 766402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 767402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 768402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private void writeFile(String outputFileName, String contents) { 769402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll FileOutputStream outputStream = null; 770402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 771402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll outputStream = new FileOutputStream(outputFileName); 772402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll outputStream.write(contents.getBytes()); 773402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (FileNotFoundException e) { 774402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println( 775402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll "File not found exception writing: " + outputFileName); 776402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 777402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("IOException writing: " + outputFileName); 778402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } finally { 779402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (outputStream != null) { 780402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 781402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll outputStream.close(); 782402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch(IOException e) { 783402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // ignore 784402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 785402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 786402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 787402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 788402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 789402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setTestResultsHtmlFileName(String aString) { 790402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsHtmlFileName = aString; 791402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 792402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 793402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getTestResultsHtmlFileName() { 794402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return testResultsHtmlFileName; 795402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 796402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 797402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setTestResultsTemplateFileName(String aString) { 798402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsTemplateFileName = aString; 799402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 800402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 801402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getTestResultsTemplateFileName() { 802402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return testResultsTemplateFileName; 803402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 804402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 805402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setXmlDirectoryName(String aString) { 806402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll xmlDirectoryName = aString; 807402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 808402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 809402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getXmlDirectoryName() { 810402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return xmlDirectoryName; 811402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 812402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 813402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setHtmlDirectoryName(String aString) { 814402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll htmlDirectoryName = aString; 815402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 816402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 817402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getHtmlDirectoryName() { 818402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return htmlDirectoryName; 819402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 820402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 821402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setDropDirectoryName(String aString) { 822402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropDirectoryName = aString; 823402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 824402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 825402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getDropDirectoryName() { 826402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return dropDirectoryName; 827402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 828402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 829402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private void formatCompileErrorRow( 830402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String fileName, 831402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int errorCount, 832402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int warningCount, 833402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringBuffer buffer) { 834402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 835402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount == 0 && warningCount == 0) { 836402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return; 837402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 838402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 839402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String hrefCompileLogsTargetPath2 = getHrefCompileLogsTargetPath(); 840402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int i = fileName.indexOf(hrefCompileLogsTargetPath2); 841402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 842402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String shortName = 843402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fileName.substring(i + hrefCompileLogsTargetPath2.length()); 844402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 845402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buffer 846402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<tr>\n<td>\n") 847402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<a href=") 848402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\"") 849402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(hrefCompileLogsTargetPath2) 850402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 851402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\">") 852402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 853402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</a>") 854402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</td>\n") 855402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<td align=\"center\">") 856402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<a href=") 857402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\"") 858402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(hrefCompileLogsTargetPath2) 859402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 860402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("#ERRORS") 861402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\">") 862402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(errorCount) 863402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</a>") 864402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</td>\n") 865402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<td align=\"center\">") 866402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<a href=") 867402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\"") 868402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(hrefCompileLogsTargetPath2) 869402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 870402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("#OTHER_WARNINGS") 871402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\">") 872402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(warningCount) 873402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</a>") 874402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</td>\n") 875402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</tr>\n"); 876402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 877402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 878402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private void formatAccessesErrorRow( 879402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String fileName, 880402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int forbiddenAccessesWarningsCount, 881402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int discouragedAccessesWarningsCount, 882402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringBuffer buffer) { 883402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 884402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (forbiddenAccessesWarningsCount == 0 && discouragedAccessesWarningsCount == 0) { 885402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return; 886402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 887402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 888402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String hrefCompileLogsTargetPath2 = getHrefCompileLogsTargetPath(); 889402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int i = fileName.indexOf(hrefCompileLogsTargetPath2); 890402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 891402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String shortName = 892402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll fileName.substring(i + hrefCompileLogsTargetPath2.length()); 893402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 894402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll buffer 895402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<tr>\n<td>\n") 896402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<a href=") 897402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\"") 898402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(hrefCompileLogsTargetPath2) 899402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 900402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\">") 901402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 902402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</a>") 903402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</td>\n") 904402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<td align=\"center\">") 905402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<a href=") 906402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\"") 907402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(hrefCompileLogsTargetPath2) 908402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 909402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("#FORBIDDEN_WARNINGS") 910402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\">") 911402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(forbiddenAccessesWarningsCount) 912402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</a>") 913402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</td>\n") 914402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<td align=\"center\">") 915402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("<a href=") 916402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\"") 917402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(hrefCompileLogsTargetPath2) 918402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(shortName) 919402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("#DISCOURAGED_WARNINGS") 920402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("\">") 921402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append(discouragedAccessesWarningsCount) 922402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</a>") 923402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</td>\n") 924402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll .append("</tr>\n"); 925402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 926402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 927402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String formatRow(String fileName, int errorCount, boolean link) { 928402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 929402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // replace .xml with .html 930402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 931402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String aString = ""; 932402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (!link) { 933402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return "<tr><td>" + fileName + " (missing)" + "</td><td>" + "DNF"; 934402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 935402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 936402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (fileName.endsWith(".xml")) { 937402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 938402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int begin = fileName.lastIndexOf(File.separatorChar); 939402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int end = fileName.lastIndexOf(".xml"); 940402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 941402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String shortName = fileName.substring(begin + 1, end); 942402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String displayName = shortName; 943402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount != 0) 944402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tr><td><b>"; 945402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 946402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tr><td>"; 947402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 948402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 949402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount!=0){ 950402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll displayName="<font color=\"#ff0000\">"+displayName+"</font>"; 951402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 952402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount==-1){ 953402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString=aString.concat(displayName); 954402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }else { 955402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString=aString 956402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "<a href=" 957402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "\"" 958402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + hrefTestResultsTargetPath 959402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "/" 960402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + shortName 961402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + ".html" 962402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "\">" 963402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + displayName 964402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "</a>"; 965402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 966402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount > 0) 967402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "</td><td><b>"; 968402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 969402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "</td><td>"; 970402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 971402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount == -1) 972402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<font color=\"#ff0000\">DNF"; 973402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 974402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else if (errorCount >0) 975402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<font color=\"#ff0000\">"+String.valueOf(errorCount); 976402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 977402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString +String.valueOf(errorCount); 978402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 979402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount != 0) 980402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "</font></b></td></tr>"; 981402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 982402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "</td></tr>"; 983402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 984402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 985402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return aString; 986402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 987402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 988402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 989402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Specific to the RelEng test results page 990402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String formatRowReleng(String fileName, int errorCount, boolean link) { 991402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 992402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the file name doesn't end with any of the set test configurations, do nothing 993402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll boolean endsWithConfig = false; 994402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int card = testsConfig.length; 995402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for(int i=0; i<card; i++) { 996402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(fileName.endsWith(testsConfig[i])) 997402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll endsWithConfig = true; 998402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 999402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(!endsWithConfig) 1000402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return ""; 1001402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1002402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String aString = ""; 1003402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (!link) { 1004402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return "<tr><td>" + fileName + "</td><td align=\"center\">" + "DNF </tr>"; 1005402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1006402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1007402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (fileName.endsWith(".xml")) { 1008402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1009402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int begin = fileName.lastIndexOf(File.separatorChar); 1010402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1011402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Get org.eclipse. out of the component name 1012402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String shortName = fileName.substring(begin + 13, fileName.indexOf('_')); 1013402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String displayName = shortName; 1014402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1015402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the short name does not start with this prefix 1016402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(!shortName.startsWith(prefix)) { 1017402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the prefix is not yet set 1018402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(prefix=="default"){ 1019402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Set the testShortName variable to the current short name 1020402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testShortName = shortName; 1021402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter=0; 1022402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Set new prefix 1023402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll prefix = shortName.substring(0, shortName.indexOf(".tests") + 6); 1024402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tbody><tr><td><b>" + prefix + ".*" + "</b><td><td><td><td>"; 1025402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tr><td><P>" + shortName; 1026402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1027402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Loop until the matching string postfix(test config.) is found 1028402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while(counter<card && !fileName.endsWith(testsConfig[counter])) { 1029402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\">-</td>"; 1030402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter++; 1031402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1032402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1033402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else { 1034402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Set new prefix 1035402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll prefix = shortName.substring(0, shortName.indexOf(".tests") + 6); 1036402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1037402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Loop until the matching string postfix(test config.) is found 1038402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while(counter<card && !fileName.endsWith(testsConfig[counter])) { 1039402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\">-</td>"; 1040402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter++; 1041402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1042402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1043402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //In this case, the new prefix should be set with the short name under it, 1044402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //since this would mean that the team has more than one component test 1045402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(!shortName.endsWith("tests")) { 1046402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tbody><tr><td><b>" + prefix + ".*" + "</b><td><td><td><td>"; 1047402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tr><td><P>" + shortName; 1048402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1049402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //The team has only one component test 1050402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 1051402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tbody><tr><td><b>" + shortName; 1052402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testShortName = shortName; 1053402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1054402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter = 0; 1055402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1056402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1057402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the file's short name starts with the current prefix 1058402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(shortName.startsWith(prefix)) { 1059402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the new file has a different short name than the current one 1060402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(!shortName.equals(testShortName)){ 1061402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Fill the remaining cells with '-'. These files will later be listed as 1062402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //missing 1063402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while(counter<card) { 1064402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\">-</td>"; 1065402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter++; 1066402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1067402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter = 0; 1068402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Print the component name 1069402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tr><td><P>" + shortName; 1070402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Loop until the matching string postfix(test config.) is found 1071402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while(counter<card && !fileName.endsWith(testsConfig[counter])) { 1072402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\">-</td>"; 1073402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter++; 1074402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1075402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1076402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else { 1077402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Loop until the matching string postfix(test config.) is found 1078402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while(counter<card && !fileName.endsWith(testsConfig[counter])) { 1079402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\">-</td>"; 1080402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter++; 1081402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1082402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //If the previous component has no more test files left 1083402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if(counter==card) { 1084402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter = 0; 1085402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Print the new component name 1086402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<tr><td><P>" + shortName; 1087402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Loop until the matching string postfix(test config.) is found 1088402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while(counter<card && !fileName.endsWith(testsConfig[counter])) { 1089402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\">-</td>"; 1090402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter++; 1091402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1092402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1093402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1094402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1095402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testShortName = shortName; 1096402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1097402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount != 0) 1098402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\"><b>"; 1099402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 1100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<td align=\"center\">"; 1101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1102402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Print number of errors 1103402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount!=0){ 1104402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll displayName="<font color=\"#ff0000\">"+ "(" + String.valueOf(errorCount) + ")" +"</font>"; 1105402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1106402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else { 1107402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll displayName="(0)"; 1108402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1109402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1110402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //Reference 1111402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount==-1){ 1112402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString=aString.concat(displayName); 1113402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll }else { 1114402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString=aString 1115402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "<a href=" 1116402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "\"" 1117402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + hrefTestResultsTargetPath 1118402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "/" 1119402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + fileName.substring(begin+1, fileName.length()-4) 1120402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + ".html" 1121402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "\">" 1122402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + displayName 1123402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll + "</a>"; 1124402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1125402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1126402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount == -1) 1127402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "<font color=\"#ff0000\">DNF"; 1128402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1129402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (errorCount != 0) 1130402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "</font></b></td>"; 1131402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll else 1132402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aString = aString + "</td>"; 1133402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll counter++; 1134402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1135402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1136402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1137402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return aString; 1138402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1139402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1140402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private int countErrors(String fileName) { 1141402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int errorCount = 0; 1142402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1143402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (new File(fileName).length()==0) 1144402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return -1; 1145402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1146402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 1147402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.newInstance(); 1148402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll parser=docBuilderFactory.newDocumentBuilder(); 1149402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1150402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Document document = parser.parse(fileName); 1151402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll NodeList elements = document.getElementsByTagName(elementName); 1152402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1153402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int elementCount = elements.getLength(); 1154402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (elementCount == 0) 1155402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return -1; 1156402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < elementCount; i++) { 1157402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Element element = (Element) elements.item(i); 1158402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll NamedNodeMap attributes = element.getAttributes(); 1159402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node aNode = attributes.getNamedItem("errors"); 1160402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll errorCount = 1161402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll errorCount + Integer.parseInt(aNode.getNodeValue()); 1162402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aNode = attributes.getNamedItem("failures"); 1163402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll errorCount = 1164402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll errorCount + Integer.parseInt(aNode.getNodeValue()); 1165402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1166402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1167402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1168402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 1169402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("IOException: " + fileName); 1170402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // e.printStackTrace(); 1171402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return 0; 1172402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (SAXException e) { 1173402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("SAXException: " + fileName); 1174402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // e.printStackTrace(); 1175402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return 0; 1176402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (ParserConfigurationException e) { 1177402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e.printStackTrace(); 1178402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1179402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return errorCount; 1180402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1181402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1182402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1183402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1184402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1185402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Gets the hrefTestResultsTargetPath. 1186402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return Returns a String 1187402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1188402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getHrefTestResultsTargetPath() { 1189402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return hrefTestResultsTargetPath; 1190402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1191402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1192402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1193402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Sets the hrefTestResultsTargetPath. 1194402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param hrefTestResultsTargetPath The hrefTestResultsTargetPath to set 1195402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1196402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setHrefTestResultsTargetPath(String htmlTargetPath) { 1197402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.hrefTestResultsTargetPath = htmlTargetPath; 1198402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1199402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1200402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1201402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Gets the compileLogsDirectoryName. 1202402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return Returns a String 1203402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1204402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getCompileLogsDirectoryName() { 1205402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return compileLogsDirectoryName; 1206402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1207402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1208402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1209402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Sets the compileLogsDirectoryName. 1210402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param compileLogsDirectoryName The compileLogsDirectoryName to set 1211402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1212402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setCompileLogsDirectoryName(String compileLogsDirectoryName) { 1213402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.compileLogsDirectoryName = compileLogsDirectoryName; 1214402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1215402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1216402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1217402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Gets the hrefCompileLogsTargetPath. 1218402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return Returns a String 1219402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1220402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getHrefCompileLogsTargetPath() { 1221402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return hrefCompileLogsTargetPath; 1222402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1223402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1224402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1225402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Sets the hrefCompileLogsTargetPath. 1226402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param hrefCompileLogsTargetPath The hrefCompileLogsTargetPath to set 1227402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1228402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setHrefCompileLogsTargetPath(String hrefCompileLogsTargetPath) { 1229402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.hrefCompileLogsTargetPath = hrefCompileLogsTargetPath; 1230402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1231402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1232402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1233402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Gets the testManifestFileName. 1234402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return Returns a String 1235402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1236402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getTestManifestFileName() { 1237402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return testManifestFileName; 1238402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1239402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1240402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1241402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Sets the testManifestFileName. 1242402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param testManifestFileName The testManifestFileName to set 1243402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1244402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setTestManifestFileName(String testManifestFileName) { 1245402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.testManifestFileName = testManifestFileName; 1246402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1247402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1248402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1249402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Gets the dropHtmlFileName. 1250402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return Returns a String 1251402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1252402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getDropHtmlFileName() { 1253402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return dropHtmlFileName; 1254402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1255402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1256402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1257402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Sets the dropHtmlFileName. 1258402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param dropHtmlFileName The dropHtmlFileName to set 1259402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1260402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setDropHtmlFileName(String dropHtmlFileName) { 1261402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.dropHtmlFileName = dropHtmlFileName; 1262402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1263402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1264402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1265402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Gets the dropTemplateFileName. 1266402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return Returns a String 1267402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1268402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getDropTemplateFileName() { 1269402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return dropTemplateFileName; 1270402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1271402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1272402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1273402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Sets the dropTemplateFileName. 1274402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param dropTemplateFileName The dropTemplateFileName to set 1275402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1276402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setDropTemplateFileName(String dropTemplateFileName) { 1277402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.dropTemplateFileName = dropTemplateFileName; 1278402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1279402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1280402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected void getDropTokensFromList(String list) { 1281402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringTokenizer tokenizer = new StringTokenizer(list, ","); 1282402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTokens = new Vector(); 1283402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1284402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (tokenizer.hasMoreTokens()) { 1285402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTokens.add(tokenizer.nextToken()); 1286402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1287402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1288402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1289402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected void getDifferentPlatformsFromList(String list) { 1290402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringTokenizer tokenizer = new StringTokenizer(list, ";"); 1291402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll differentPlatforms = new Vector(); 1292402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1293402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (tokenizer.hasMoreTokens()) { 1294402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll differentPlatforms.add(tokenizer.nextToken()); 1295402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1296402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1297402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1298402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll protected void getPlatformSpecsFromList(String list) { 1299402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll StringTokenizer tokenizer = new StringTokenizer(list, ","); 1300402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformSpecs = new Vector(); 1301402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1302402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (tokenizer.hasMoreTokens()) { 1303402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platformSpecs.add(tokenizer.nextToken()); 1304402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1305402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1306402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1307402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getDropTokenList() { 1308402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return dropTokenList; 1309402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1310402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1311402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setDropTokenList(String dropTokenList) { 1312402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.dropTokenList = dropTokenList; 1313402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1314402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1315402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public boolean isBuildTested() { 1316402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return isBuildTested; 1317402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1318402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1319402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setIsBuildTested(boolean isBuildTested) { 1320402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.isBuildTested = isBuildTested; 1321402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1322402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1323402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1324402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1325402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return 1326402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1327402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public boolean testsRan() { 1328402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return testsRan; 1329402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1330402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1331402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1332402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param b 1333402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1334402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setTestsRan(boolean b) { 1335402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testsRan = b; 1336402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1337402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1338402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1339402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return 1340402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1341402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector getDropTokens() { 1342402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return dropTokens; 1343402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1344402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1345402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1346402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param vector 1347402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1348402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setDropTokens(Vector vector) { 1349402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll dropTokens = vector; 1350402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1351402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1352402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1353402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return 1354402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1355402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getTestResultsWithProblems() { 1356402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return testResultsWithProblems; 1357402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1358402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1359402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1360402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return 1361402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1362402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getTestResultsXmlUrls() { 1363402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return testResultsXmlUrls; 1364402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1365402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1366402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 1367402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @param string 1368402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 1369402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setTestResultsWithProblems(String string) { 1370402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testResultsWithProblems = string; 1371402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1372402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1373402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getBuildType() { 1374402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return buildType; 1375402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1376402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1377402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setBuildType(String buildType) { 1378402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.buildType = buildType; 1379402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1380402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1381402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getPlatformSpecificTemplateList() { 1382402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return platformSpecificTemplateList; 1383402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1384402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1385402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setPlatformSpecificTemplateList(String platformSpecificTemplateList) { 1386402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.platformSpecificTemplateList = platformSpecificTemplateList; 1387402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1388402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1389402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void setPlatformIdentifierToken(String platformIdentifierToken) { 1390402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll this.platformIdentifierToken = platformIdentifierToken; 1391402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1392402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1393402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String getPlatformIdentifierToken() { 1394402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return platformIdentifierToken; 1395402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 1396402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 1397402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 1398