1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir package convwatch; 29*cdf0e10cSrcweir 30*cdf0e10cSrcweir import convwatch.ConvWatchException; 31*cdf0e10cSrcweir import convwatch.ConvWatchCancelException; 32*cdf0e10cSrcweir import convwatch.FileHelper; 33*cdf0e10cSrcweir import convwatch.OfficePrint; 34*cdf0e10cSrcweir import convwatch.PRNCompare; 35*cdf0e10cSrcweir import convwatch.StatusHelper; 36*cdf0e10cSrcweir import helper.URLHelper; 37*cdf0e10cSrcweir import java.io.File; 38*cdf0e10cSrcweir 39*cdf0e10cSrcweir public class ConvWatch 40*cdf0e10cSrcweir { 41*cdf0e10cSrcweir 42*cdf0e10cSrcweir String getBuildID_FromFile(String _sInfoFile) 43*cdf0e10cSrcweir { 44*cdf0e10cSrcweir String sBuildID = ""; 45*cdf0e10cSrcweir IniFile aIniFile = new IniFile(_sInfoFile); 46*cdf0e10cSrcweir if (aIniFile.is()) 47*cdf0e10cSrcweir { 48*cdf0e10cSrcweir sBuildID = aIniFile.getValue("", "buildid"); 49*cdf0e10cSrcweir } 50*cdf0e10cSrcweir return sBuildID; 51*cdf0e10cSrcweir } 52*cdf0e10cSrcweir /** 53*cdf0e10cSrcweir * Check if given document (_sAbsoluteInputFile) and it's postscript representation (_sAbsoluteReferenceFile) produce 54*cdf0e10cSrcweir * the same output like the StarOffice / OpenOffice.org which is accessable with XMultiServiceFactory. 55*cdf0e10cSrcweir * Here a simple graphically difference check is run through. 56*cdf0e10cSrcweir * 57*cdf0e10cSrcweir * Hint: In the OutputPath all needed files will create, there must 58*cdf0e10cSrcweir * be very much space. It's not possible to say how much. 59*cdf0e10cSrcweir * One page need up to 800kb as jpeg. 60*cdf0e10cSrcweir * Sample: If a document contains 2 pages, we need 2*800kb for prn 61*cdf0e10cSrcweir * output and 2*800kb for ps output and 2*800kb for it's difference 62*cdf0e10cSrcweir * output. So up to 4800kb or 4.8mb. 63*cdf0e10cSrcweir * 64*cdf0e10cSrcweir * RAM is need least 300mb. Will say, it's tested on a pc with 128mb RAM and 256mb swap. 65*cdf0e10cSrcweir * 66*cdf0e10cSrcweir * It's also absolutlly impossible to say, how much time this functions consume. 67*cdf0e10cSrcweir */ 68*cdf0e10cSrcweir 69*cdf0e10cSrcweir StatusHelper[] createPostscriptStartCheck(GraphicalTestArguments _aGTA, 70*cdf0e10cSrcweir String _sOutputPath, String _sAbsoluteInputFile, String _sAbsoluteReferenceFile) 71*cdf0e10cSrcweir throws ConvWatchCancelException 72*cdf0e10cSrcweir { 73*cdf0e10cSrcweir // TODO: some more checks 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir if (! FileHelper.exists(_sAbsoluteInputFile)) 76*cdf0e10cSrcweir { 77*cdf0e10cSrcweir throw new ConvWatchCancelException("createPostscriptStartCheck: Input file: " + _sAbsoluteInputFile + " does not exist."); 78*cdf0e10cSrcweir } 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir if (_sAbsoluteReferenceFile == null) 81*cdf0e10cSrcweir { 82*cdf0e10cSrcweir // we assume, that the prn file is near the document 83*cdf0e10cSrcweir String sAbsoluteInputFileNoSuffix = FileHelper.getNameNoSuffix(_sAbsoluteInputFile); 84*cdf0e10cSrcweir _sAbsoluteReferenceFile = sAbsoluteInputFileNoSuffix + ".prn"; 85*cdf0e10cSrcweir } 86*cdf0e10cSrcweir 87*cdf0e10cSrcweir String fs = System.getProperty("file.separator"); 88*cdf0e10cSrcweir File aAbsoluteReferenceFile = new File(_sAbsoluteReferenceFile); 89*cdf0e10cSrcweir 90*cdf0e10cSrcweir if (aAbsoluteReferenceFile.isDirectory()) 91*cdf0e10cSrcweir { 92*cdf0e10cSrcweir String sBasename = FileHelper.getBasename(_sAbsoluteInputFile); 93*cdf0e10cSrcweir String sNameNoSuffix = FileHelper.getNameNoSuffix(sBasename); 94*cdf0e10cSrcweir String sAbsoluteReferenceFileInfo = _sAbsoluteReferenceFile + fs + sNameNoSuffix + ".info"; 95*cdf0e10cSrcweir _sAbsoluteReferenceFile = _sAbsoluteReferenceFile + fs + sNameNoSuffix + ".prn"; 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir // Read the reference from the info file 98*cdf0e10cSrcweir String sRefBuildID = ""; 99*cdf0e10cSrcweir if (FileHelper.exists(sAbsoluteReferenceFileInfo)) 100*cdf0e10cSrcweir { 101*cdf0e10cSrcweir sRefBuildID = getBuildID_FromFile(sAbsoluteReferenceFileInfo); 102*cdf0e10cSrcweir } 103*cdf0e10cSrcweir _aGTA.setRefBuildID(sRefBuildID); 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir } 106*cdf0e10cSrcweir else 107*cdf0e10cSrcweir { 108*cdf0e10cSrcweir // java file has problems to check for directories, if the given directory doesn't exist. 109*cdf0e10cSrcweir String sName = FileHelper.getBasename(_sAbsoluteReferenceFile); 110*cdf0e10cSrcweir // thanks to Mircosoft, every document has a suffix, so if a name doesn't have a suffix, it must be a directory name 111*cdf0e10cSrcweir int nIdx = sName.indexOf('.'); 112*cdf0e10cSrcweir if (nIdx == -1) 113*cdf0e10cSrcweir { 114*cdf0e10cSrcweir // must be a directory 115*cdf0e10cSrcweir throw new ConvWatchCancelException("createPostscriptStartCheck: Given reference directory: '" + _sAbsoluteReferenceFile + "' does not exist."); 116*cdf0e10cSrcweir } 117*cdf0e10cSrcweir } 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir boolean bAbsoluteReferenceFile = true; 121*cdf0e10cSrcweir if (! FileHelper.exists(_sAbsoluteReferenceFile)) 122*cdf0e10cSrcweir { 123*cdf0e10cSrcweir if (_aGTA.createDefaultReference()) 124*cdf0e10cSrcweir { 125*cdf0e10cSrcweir GlobalLogWriter.get().println("Reference File doesn't exist, will create a default"); 126*cdf0e10cSrcweir bAbsoluteReferenceFile = false; 127*cdf0e10cSrcweir } 128*cdf0e10cSrcweir else 129*cdf0e10cSrcweir { 130*cdf0e10cSrcweir throw new ConvWatchCancelException("createPostscriptStartCheck: Given reference file: " + _sAbsoluteReferenceFile + " does not exist."); 131*cdf0e10cSrcweir } 132*cdf0e10cSrcweir } 133*cdf0e10cSrcweir 134*cdf0e10cSrcweir FileHelper.makeDirectories("", _sOutputPath); 135*cdf0e10cSrcweir 136*cdf0e10cSrcweir // runner.convwatch.compare(); 137*cdf0e10cSrcweir 138*cdf0e10cSrcweir String sAbsoluteInputFileURL = URLHelper.getFileURLFromSystemPath(_sAbsoluteInputFile); 139*cdf0e10cSrcweir 140*cdf0e10cSrcweir String sInputFile = FileHelper.getBasename(_sAbsoluteInputFile); 141*cdf0e10cSrcweir // System.out.println("InputFile: " + sInputFile); 142*cdf0e10cSrcweir 143*cdf0e10cSrcweir String sInputFileNoSuffix = FileHelper.getNameNoSuffix(sInputFile); 144*cdf0e10cSrcweir // System.out.println("BasenameNoSuffix: " + sInputFileNoSuffix); 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir 147*cdf0e10cSrcweir String sAbsoluteOutputFile = _sOutputPath + fs + sInputFile; 148*cdf0e10cSrcweir String sAbsoluteOutputFileURL = URLHelper.getFileURLFromSystemPath(sAbsoluteOutputFile); 149*cdf0e10cSrcweir 150*cdf0e10cSrcweir String sReferenceFile = FileHelper.getBasename(_sAbsoluteReferenceFile); 151*cdf0e10cSrcweir String sReferenceFileNoSuffix = FileHelper.getNameNoSuffix(sReferenceFile); 152*cdf0e10cSrcweir String sPostScriptFile = sReferenceFileNoSuffix + ".ps"; 153*cdf0e10cSrcweir // System.out.println("PostscriptFile: " + sPostScriptFile); 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir String sAbsolutePrintFile = _sOutputPath + fs + sPostScriptFile; 156*cdf0e10cSrcweir String sAbsolutePrintFileURL = URLHelper.getFileURLFromSystemPath(sAbsolutePrintFile); 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir // System.out.println("AbsoluteInputFileURL: " + sAbsoluteInputFileURL); 159*cdf0e10cSrcweir // System.out.println("AbsoluteOutputFileURL: " + sAbsoluteOutputFileURL); 160*cdf0e10cSrcweir // System.out.println("AbsolutePrintFileURL: " + sAbsolutePrintFileURL); 161*cdf0e10cSrcweir 162*cdf0e10cSrcweir // store and print the sAbsoluteInputFileURL file with StarOffice / OpenOffice.org 163*cdf0e10cSrcweir OfficePrint.printToFile(_aGTA, sAbsoluteInputFileURL, sAbsoluteOutputFileURL, sAbsolutePrintFileURL); 164*cdf0e10cSrcweir 165*cdf0e10cSrcweir // wait(2); 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir if (! FileHelper.exists(sAbsolutePrintFile)) 168*cdf0e10cSrcweir { 169*cdf0e10cSrcweir throw new ConvWatchCancelException("createPostscriptStartCheck: Printed file " + sAbsolutePrintFile + " does not exist."); 170*cdf0e10cSrcweir } 171*cdf0e10cSrcweir 172*cdf0e10cSrcweir if (bAbsoluteReferenceFile == false) 173*cdf0e10cSrcweir { 174*cdf0e10cSrcweir // copy AbsolutePrintFile to AbsoluteReferenceFile 175*cdf0e10cSrcweir String sDestinationFile = sAbsolutePrintFile; // URLHelper.getSystemPathFromFileURL(...) 176*cdf0e10cSrcweir String sSourceFile = _sAbsoluteReferenceFile; 177*cdf0e10cSrcweir FileHelper.copy(sDestinationFile, sSourceFile); 178*cdf0e10cSrcweir // now the fix reference of the AbsoluteReferenceFile should exist. 179*cdf0e10cSrcweir if (! FileHelper.exists(_sAbsoluteReferenceFile)) 180*cdf0e10cSrcweir { 181*cdf0e10cSrcweir throw new ConvWatchCancelException("createPostscriptStartCheck: Given reference file: " + _sAbsoluteReferenceFile + " does not exist, after try to copy."); 182*cdf0e10cSrcweir } 183*cdf0e10cSrcweir } 184*cdf0e10cSrcweir 185*cdf0e10cSrcweir PRNCompare a = new PRNCompare(); 186*cdf0e10cSrcweir String sInputPath = FileHelper.getPath(_sAbsoluteInputFile); 187*cdf0e10cSrcweir String sReferencePath = FileHelper.getPath(_sAbsoluteReferenceFile); 188*cdf0e10cSrcweir // String sReferenceFile = FileHelper.getBasename(sAbsoluteReferenceFile); 189*cdf0e10cSrcweir 190*cdf0e10cSrcweir // System.out.println("InputPath: " + sInputPath); 191*cdf0e10cSrcweir // System.out.println("sReferencePath: " + sReferencePath); 192*cdf0e10cSrcweir // System.out.println("sReferenceFile: " + sReferenceFile); 193*cdf0e10cSrcweir 194*cdf0e10cSrcweir a.setInputPath( sInputPath ); 195*cdf0e10cSrcweir a.setReferencePath( sReferencePath ); 196*cdf0e10cSrcweir a.setOutputPath( _sOutputPath ); 197*cdf0e10cSrcweir // a.setDocFile( "1_Gov.ppt"); 198*cdf0e10cSrcweir a.setReferenceFile( sReferenceFile ); 199*cdf0e10cSrcweir a.setPostScriptFile(sPostScriptFile ); 200*cdf0e10cSrcweir if (_aGTA.printAllPages() == true) 201*cdf0e10cSrcweir { 202*cdf0e10cSrcweir a.setMaxPages(9999); 203*cdf0e10cSrcweir } 204*cdf0e10cSrcweir else 205*cdf0e10cSrcweir { 206*cdf0e10cSrcweir if (_aGTA.getMaxPages() > 0) 207*cdf0e10cSrcweir { 208*cdf0e10cSrcweir a.setMaxPages(_aGTA.getMaxPages()); 209*cdf0e10cSrcweir } 210*cdf0e10cSrcweir if (_aGTA.getOnlyPages().length() != 0) 211*cdf0e10cSrcweir { 212*cdf0e10cSrcweir // we can't interpret the string of getOnlyPages() right without much logic, so print all pages here! 213*cdf0e10cSrcweir a.setMaxPages(9999); 214*cdf0e10cSrcweir } 215*cdf0e10cSrcweir } 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir a.setResolutionInDPI(_aGTA.getResolutionInDPI()); 218*cdf0e10cSrcweir a.setBorderMove(_aGTA.getBorderMove()); 219*cdf0e10cSrcweir a.setDocumentType(_aGTA.getDocumentType()); 220*cdf0e10cSrcweir 221*cdf0e10cSrcweir StatusHelper[] aList = a.compare(); 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir _aGTA.setBorderMove(a.getBorderMove()); 224*cdf0e10cSrcweir return aList; 225*cdf0e10cSrcweir } 226*cdf0e10cSrcweir 227*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 228*cdf0e10cSrcweir // This creates a status for exact on document 229*cdf0e10cSrcweir static boolean createINIStatus(StatusHelper[] aList, String _sFilenamePrefix, String _sOutputPath, String _sAbsoluteInputFile, String _sBuildID, String _sRefBuildID) 230*cdf0e10cSrcweir { 231*cdf0e10cSrcweir // Status 232*cdf0e10cSrcweir String fs = System.getProperty("file.separator"); 233*cdf0e10cSrcweir String sBasename = FileHelper.getBasename(_sAbsoluteInputFile); 234*cdf0e10cSrcweir String sNameNoSuffix = FileHelper.getNameNoSuffix(sBasename); 235*cdf0e10cSrcweir // String sHTMLFile = _sFilenamePrefix + sNameNoSuffix + ".html"; 236*cdf0e10cSrcweir // HTMLOutputter HTMLoutput = HTMLOutputter.create(_sOutputPath, sHTMLFile, "", ""); 237*cdf0e10cSrcweir // HTMLoutput.header(sNameNoSuffix); 238*cdf0e10cSrcweir // TODO: version info was fine 239*cdf0e10cSrcweir // HTMLoutput.checkSection(sBasename); 240*cdf0e10cSrcweir // Status end 241*cdf0e10cSrcweir 242*cdf0e10cSrcweir String sINIFile = _sFilenamePrefix + sNameNoSuffix + ".ini"; 243*cdf0e10cSrcweir INIOutputter INIoutput = INIOutputter.create(_sOutputPath, sINIFile, "", ""); 244*cdf0e10cSrcweir INIoutput.createHeader(); 245*cdf0e10cSrcweir // TODO: version info was fine 246*cdf0e10cSrcweir 247*cdf0e10cSrcweir INIoutput.writeSection("global"); 248*cdf0e10cSrcweir INIoutput.writeValue("pages", String.valueOf(aList.length)); 249*cdf0e10cSrcweir INIoutput.writeValue("buildid", _sBuildID); 250*cdf0e10cSrcweir INIoutput.writeValue("refbuildid", _sRefBuildID); 251*cdf0e10cSrcweir INIoutput.writeValue("diffdiff", "no"); 252*cdf0e10cSrcweir INIoutput.writeValue("basename", sBasename); 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir boolean bResultIsOk = true; // result over all pages 255*cdf0e10cSrcweir for (int i=0;i<aList.length; i++) 256*cdf0e10cSrcweir { 257*cdf0e10cSrcweir INIoutput.writeSection("page" + String.valueOf(i + 1)); // list start at point 0, but this is page 1 and so on... current_page = (i + 1) 258*cdf0e10cSrcweir aList[i].printStatus(); 259*cdf0e10cSrcweir 260*cdf0e10cSrcweir boolean bCurrentResult = true; // result over exact one page 261*cdf0e10cSrcweir 262*cdf0e10cSrcweir int nCurrentDiffStatus = aList[i].nDiffStatus; 263*cdf0e10cSrcweir 264*cdf0e10cSrcweir // check if the status is in a defined range 265*cdf0e10cSrcweir if (nCurrentDiffStatus == StatusHelper.DIFF_NO_DIFFERENCES) 266*cdf0e10cSrcweir { 267*cdf0e10cSrcweir // ok. 268*cdf0e10cSrcweir } 269*cdf0e10cSrcweir else if (nCurrentDiffStatus == StatusHelper.DIFF_DIFFERENCES_FOUND && aList[i].nPercent < 5) 270*cdf0e10cSrcweir { 271*cdf0e10cSrcweir // ok. 272*cdf0e10cSrcweir } 273*cdf0e10cSrcweir else if (nCurrentDiffStatus == StatusHelper.DIFF_AFTER_MOVE_DONE_NO_PROBLEMS) 274*cdf0e10cSrcweir { 275*cdf0e10cSrcweir // ok. 276*cdf0e10cSrcweir } 277*cdf0e10cSrcweir else if (nCurrentDiffStatus == StatusHelper.DIFF_AFTER_MOVE_DONE_DIFFERENCES_FOUND && aList[i].nPercent2 < 5) 278*cdf0e10cSrcweir { 279*cdf0e10cSrcweir // ok. 280*cdf0e10cSrcweir } 281*cdf0e10cSrcweir else 282*cdf0e10cSrcweir { 283*cdf0e10cSrcweir // failed. 284*cdf0e10cSrcweir bCurrentResult = false; // logic: nDiff==0 = true if there is no difference 285*cdf0e10cSrcweir } 286*cdf0e10cSrcweir 287*cdf0e10cSrcweir // Status 288*cdf0e10cSrcweir // HTMLoutput.checkLine(aList[i], bCurrentResult); 289*cdf0e10cSrcweir INIoutput.checkLine(aList[i], bCurrentResult); 290*cdf0e10cSrcweir bResultIsOk &= bCurrentResult; 291*cdf0e10cSrcweir } 292*cdf0e10cSrcweir // Status 293*cdf0e10cSrcweir // HTMLoutput.close(); 294*cdf0e10cSrcweir INIoutput.close(); 295*cdf0e10cSrcweir return bResultIsOk; 296*cdf0e10cSrcweir } 297*cdf0e10cSrcweir 298*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 299*cdf0e10cSrcweir 300*cdf0e10cSrcweir static void createINIStatus_DiffDiff(StatusHelper[] aDiffDiffList, String _sFilenamePrefix, String _sOutputPath, String _sAbsoluteInputFile, String _sBuildID) 301*cdf0e10cSrcweir { 302*cdf0e10cSrcweir // Status 303*cdf0e10cSrcweir String fs = System.getProperty("file.separator"); 304*cdf0e10cSrcweir String sBasename = FileHelper.getBasename(_sAbsoluteInputFile); 305*cdf0e10cSrcweir String sNameNoSuffix = FileHelper.getNameNoSuffix(sBasename); 306*cdf0e10cSrcweir String sINIFile = _sFilenamePrefix + sNameNoSuffix + ".ini"; 307*cdf0e10cSrcweir 308*cdf0e10cSrcweir // HTMLOutputter HTMLoutput = HTMLOutputter.create(_sOutputPath, sHTMLFile, _sFilenamePrefix, ""); 309*cdf0e10cSrcweir // HTMLoutput.header(sNameNoSuffix); 310*cdf0e10cSrcweir // HTMLoutput.checkDiffDiffSection(sBasename); 311*cdf0e10cSrcweir 312*cdf0e10cSrcweir INIOutputter INIoutput = INIOutputter.create(_sOutputPath, sINIFile, _sFilenamePrefix, ""); 313*cdf0e10cSrcweir INIoutput.createHeader(); 314*cdf0e10cSrcweir // LLA? what if the are no values in the list? true or false; 315*cdf0e10cSrcweir INIoutput.writeSection("global"); 316*cdf0e10cSrcweir INIoutput.writeValue("pages", String.valueOf(aDiffDiffList.length)); 317*cdf0e10cSrcweir INIoutput.writeValue("buildid", _sBuildID); 318*cdf0e10cSrcweir INIoutput.writeValue("diffdiff", "yes"); 319*cdf0e10cSrcweir INIoutput.writeValue("basename", sBasename); 320*cdf0e10cSrcweir 321*cdf0e10cSrcweir for (int i=0;i<aDiffDiffList.length; i++) 322*cdf0e10cSrcweir { 323*cdf0e10cSrcweir INIoutput.writeSection("page" + String.valueOf(i + 1)); // list start at point 0, but this is page 1 and so on... current_page = (i + 1) 324*cdf0e10cSrcweir boolean bCurrentResult = (aDiffDiffList[i].nDiffStatus == StatusHelper.DIFF_NO_DIFFERENCES); // logic: nDiff==0 = true if there is no difference 325*cdf0e10cSrcweir 326*cdf0e10cSrcweir // HTMLoutput.checkDiffDiffLine(aDiffDiffList[i], bCurrentResult); 327*cdf0e10cSrcweir INIoutput.checkDiffDiffLine(aDiffDiffList[i], bCurrentResult); 328*cdf0e10cSrcweir } 329*cdf0e10cSrcweir // Status 330*cdf0e10cSrcweir // HTMLoutput.close(); 331*cdf0e10cSrcweir INIoutput.close(); 332*cdf0e10cSrcweir } 333*cdf0e10cSrcweir 334*cdf0e10cSrcweir 335*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 336*cdf0e10cSrcweir 337*cdf0e10cSrcweir public static boolean check(GraphicalTestArguments _aGTA, 338*cdf0e10cSrcweir String _sOutputPath, String _sAbsoluteInputFile, String _sAbsoluteReferenceFile) 339*cdf0e10cSrcweir throws ConvWatchCancelException, ConvWatchException 340*cdf0e10cSrcweir { 341*cdf0e10cSrcweir ConvWatch a = new ConvWatch(); 342*cdf0e10cSrcweir StatusHelper[] aList = a.createPostscriptStartCheck(_aGTA, _sOutputPath, _sAbsoluteInputFile, _sAbsoluteReferenceFile); 343*cdf0e10cSrcweir DB.writeNumberOfPages(aList.length); 344*cdf0e10cSrcweir 345*cdf0e10cSrcweir boolean bResultIsOk = createINIStatus(aList, "", _sOutputPath, _sAbsoluteInputFile, _aGTA.getBuildID(), _aGTA.getRefBuildID()); 346*cdf0e10cSrcweir 347*cdf0e10cSrcweir if (! bResultIsOk) 348*cdf0e10cSrcweir { 349*cdf0e10cSrcweir // it could be that this will store in a DB, there are problems with '\' 350*cdf0e10cSrcweir String sErrorMessage = "Graphical compare failed with file "; 351*cdf0e10cSrcweir String sErrorFile = _sAbsoluteInputFile.replace('\\', '/'); 352*cdf0e10cSrcweir sErrorMessage = sErrorMessage + "'" + sErrorFile + "'"; 353*cdf0e10cSrcweir DB.writeErrorFile(sErrorFile); 354*cdf0e10cSrcweir throw new ConvWatchException(sErrorMessage); 355*cdf0e10cSrcweir } 356*cdf0e10cSrcweir return bResultIsOk; 357*cdf0e10cSrcweir } 358*cdf0e10cSrcweir 359*cdf0e10cSrcweir // ----------------------------------------------------------------------------- 360*cdf0e10cSrcweir public static boolean checkDiffDiff(GraphicalTestArguments _aGTA, 361*cdf0e10cSrcweir String _sOutputPath, String _sAbsoluteInputFile, String _sAbsoluteReferenceFile, 362*cdf0e10cSrcweir String _sAbsoluteDiffPath) 363*cdf0e10cSrcweir throws ConvWatchCancelException, ConvWatchException 364*cdf0e10cSrcweir { 365*cdf0e10cSrcweir ConvWatch a = new ConvWatch(); 366*cdf0e10cSrcweir _aGTA.setBorderMove(TriState.FALSE); 367*cdf0e10cSrcweir StatusHelper[] aList = a.createPostscriptStartCheck(_aGTA, _sOutputPath, _sAbsoluteInputFile, _sAbsoluteReferenceFile); 368*cdf0e10cSrcweir 369*cdf0e10cSrcweir // Status 370*cdf0e10cSrcweir boolean bResultIsOk = createINIStatus(aList, "", _sOutputPath, _sAbsoluteInputFile, _aGTA.getBuildID(), _aGTA.getRefBuildID()); 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir StatusHelper[] aDiffDiffList = new StatusHelper[aList.length]; 373*cdf0e10cSrcweir 374*cdf0e10cSrcweir String fs = System.getProperty("file.separator"); 375*cdf0e10cSrcweir 376*cdf0e10cSrcweir boolean bDiffIsOk = true; 377*cdf0e10cSrcweir boolean bFoundAOldDiff = false; 378*cdf0e10cSrcweir 379*cdf0e10cSrcweir PRNCompare aCompare = new PRNCompare(); 380*cdf0e10cSrcweir // LLA? what if the are no values in the list? true or false; 381*cdf0e10cSrcweir for (int i=0;i<aList.length; i++) 382*cdf0e10cSrcweir { 383*cdf0e10cSrcweir String sOrigDiffName = aList[i].m_sDiffGfx; 384*cdf0e10cSrcweir String sDiffBasename = FileHelper.getBasename(sOrigDiffName); 385*cdf0e10cSrcweir 386*cdf0e10cSrcweir String sNewDiffName = _sAbsoluteDiffPath + fs + sDiffBasename; 387*cdf0e10cSrcweir if (! FileHelper.exists(sNewDiffName)) 388*cdf0e10cSrcweir { 389*cdf0e10cSrcweir GlobalLogWriter.get().println("checkDiffDiff: Old diff file: '" + sNewDiffName + "' does not exist." ); 390*cdf0e10cSrcweir continue; 391*cdf0e10cSrcweir } 392*cdf0e10cSrcweir // String sNewDiffName = _sAbsoluteDiffPath + fs + sDiffBasename; 393*cdf0e10cSrcweir 394*cdf0e10cSrcweir // make a simple difference between these both diff files. 395*cdf0e10cSrcweir String sSourcePath1 = FileHelper.getPath(sOrigDiffName); 396*cdf0e10cSrcweir String sSourceFile1 = sDiffBasename; 397*cdf0e10cSrcweir String sSourcePath2 = _sAbsoluteDiffPath; 398*cdf0e10cSrcweir String sSourceFile2 = sDiffBasename; 399*cdf0e10cSrcweir 400*cdf0e10cSrcweir StatusHelper aCurrentStatus = aCompare.checkDiffDiff(_sOutputPath, sSourcePath1, sSourceFile1, sSourcePath2, sSourceFile2); 401*cdf0e10cSrcweir boolean bCurrentResult = (aCurrentStatus.nDiffStatus == StatusHelper.DIFF_NO_DIFFERENCES); // logic: nDiff==0 = true if there is no difference 402*cdf0e10cSrcweir bDiffIsOk &= bCurrentResult; 403*cdf0e10cSrcweir bFoundAOldDiff = true; 404*cdf0e10cSrcweir 405*cdf0e10cSrcweir aDiffDiffList[i] = aCurrentStatus; 406*cdf0e10cSrcweir } 407*cdf0e10cSrcweir 408*cdf0e10cSrcweir createINIStatus_DiffDiff(aDiffDiffList, "DiffDiff_", _sOutputPath, _sAbsoluteInputFile, _aGTA.getBuildID()); 409*cdf0e10cSrcweir 410*cdf0e10cSrcweir if (bFoundAOldDiff == false) 411*cdf0e10cSrcweir { 412*cdf0e10cSrcweir throw new ConvWatchCancelException("No old difference file found." ); 413*cdf0e10cSrcweir } 414*cdf0e10cSrcweir if (! bDiffIsOk) 415*cdf0e10cSrcweir { 416*cdf0e10cSrcweir throw new ConvWatchException("Graphical difference compare failed with file '" + _sAbsoluteInputFile + "'"); 417*cdf0e10cSrcweir } 418*cdf0e10cSrcweir return bDiffIsOk; 419*cdf0e10cSrcweir } 420*cdf0e10cSrcweir 421*cdf0e10cSrcweir // public static void main( String[] argv ) 422*cdf0e10cSrcweir // { 423*cdf0e10cSrcweir // PRNCompare a = new PRNCompare(); 424*cdf0e10cSrcweir // a.setInputPath( "/cws/so-cwsserv06/qadev18/SRC680/src.m47/convwatch.keep/input/msoffice/xp/PowerPoint"); 425*cdf0e10cSrcweir // a.setDocFile( "1_Gov.ppt"); 426*cdf0e10cSrcweir // a.setReferencePath( "/cws/so-cwsserv06/qadev18/SRC680/src.m47/convwatch.keep/input/msoffice/xp/PowerPoint"); 427*cdf0e10cSrcweir // a.setReferenceFile( "1_Gov.prn" ); 428*cdf0e10cSrcweir // 429*cdf0e10cSrcweir // a.setOutputPath( "/tmp/convwatch_java"); 430*cdf0e10cSrcweir // a.setPostScriptFile("1_Gov.ps" ); 431*cdf0e10cSrcweir // } 432*cdf0e10cSrcweir } 433