summaryrefslogtreecommitdiff
path: root/qadevOOo/runner/util/compare/GraphicalComparator.java
diff options
context:
space:
mode:
Diffstat (limited to 'qadevOOo/runner/util/compare/GraphicalComparator.java')
-rw-r--r--qadevOOo/runner/util/compare/GraphicalComparator.java260
1 files changed, 260 insertions, 0 deletions
diff --git a/qadevOOo/runner/util/compare/GraphicalComparator.java b/qadevOOo/runner/util/compare/GraphicalComparator.java
new file mode 100644
index 000000000000..71109e984188
--- /dev/null
+++ b/qadevOOo/runner/util/compare/GraphicalComparator.java
@@ -0,0 +1,260 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package util.compare;
+
+import convwatch.GraphicalDifferenceCheck;
+import convwatch.GraphicalTestArguments;
+import convwatch.DirectoryHelper;
+import convwatch.FileHelper;
+
+import lib.TestParameters;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+
+import util.compare.DocComparator;
+import convwatch.ConvWatchException;
+
+// -----------------------------------------------------------------------------
+class GraphicalComparator implements DocComparator
+{
+ GraphicalTestArguments m_aArguments;
+
+ protected GraphicalComparator(TestParameters aParams)
+ {
+ m_aArguments = new GraphicalTestArguments(aParams);
+ }
+
+ /**
+ * @return an instance of this object, but only it's interface
+ */
+ static DocComparator getInstance(TestParameters aParams)
+ {
+ // setting the default test parameter
+ // TEST aParams
+ GraphicalComparator a = new GraphicalComparator(aParams);
+ return a;
+ }
+
+ /**
+ * return a (FileFilter) function, which returns true, if the filename is a '*.prn' file
+ */
+ FileFilter getTrueIfPRNFile_FileFilter()
+ {
+ FileFilter aFileFilter = new FileFilter()
+ {
+ public boolean accept( File pathname )
+ {
+ if (pathname.getName().endsWith(".prn"))
+ {
+ return true;
+ }
+ return false;
+ }
+ };
+ return aFileFilter;
+ }
+
+ /**
+ * build a new file from _sEntry by
+ * replacing the path equals to _sInputPath with _sReferencePath and replace it's suffix by _sNewSuffix.
+ * If _sInputPath is empty, replace the whole path by _sReferencePath.
+ */
+ protected String createSpecialFile(String _sEntry, String _sInputPath, String _sReferencePath, String _sNewSuffix)
+ {
+ String fs = System.getProperty("file.separator");
+ String sNewSubDir = "";
+ if (_sInputPath.length() > 0)
+ {
+ sNewSubDir = FileHelper.removeFirstDirectorysAndBasenameFrom(_sEntry, _sInputPath);
+ }
+ String sNameNoSuffix = FileHelper.getNameNoSuffix(FileHelper.getBasename(_sEntry));
+
+ // add the sub path to the difference path
+ String sNewReferencePath;
+ if (sNewSubDir.length() > 0)
+ {
+ sNewReferencePath = _sReferencePath + fs + sNewSubDir;
+ }
+ else
+ {
+ sNewReferencePath = _sReferencePath;
+ }
+ // add the difference name
+ sNewReferencePath += fs + sNameNoSuffix + _sNewSuffix;
+ return sNewReferencePath;
+ }
+
+ boolean isReferenceOrDiffExistent(String _sNewSuffix)
+ {
+ boolean isExistent = false;
+
+ // LLA? What if sReferencePath is a directory, but directory is empty? is the result then true or false;
+
+ // wir muessen durch den InputPath durch und dann fuer jedes Dokument prufen, ob im angegebenen ReferencePath eine Reference existiert.
+ String sInputPath = m_aArguments.getInputPath();
+ if (FileHelper.isDir(sInputPath))
+ {
+ Object[] aList = DirectoryHelper.traverse(sInputPath, FileHelper.getFileFilter(), m_aArguments.includeSubDirectories());
+ for (int i=0;i<aList.length;i++)
+ {
+ // get document + path
+ String sEntry = (String)aList[i];
+ String sNewReferencePath = createSpecialFile(sEntry, sInputPath, m_aArguments.getReferencePath(), _sNewSuffix);
+ // split path from document path which only is equal to sInputPath (sub path)
+ if (FileHelper.exists(sNewReferencePath))
+ {
+ isExistent = true;
+ }
+ }
+ }
+ else
+ {
+ // sInputPath is a file
+ String sNewReferencePath = createSpecialFile(sInputPath, "", m_aArguments.getReferencePath(), _sNewSuffix);
+ if (FileHelper.exists(sNewReferencePath))
+ {
+ isExistent = true;
+ }
+ }
+ return isExistent;
+ }
+
+ /**
+ * REFERENCE_PATH must set to directory/file, where the reference (*.prn files) (should) exist
+ */
+ public boolean isReferenceExistent()
+ {
+ return isReferenceOrDiffExistent(".prn");
+ }
+
+ /**
+ * INPUT_PATH must set, to directory/file, where the documents exist.
+ * REFERENCE_PATH must set to directory/file, where the created references (*.prn files) will create.
+ */
+ public void createReference() throws IOException
+ {
+ // woher kommt das TestDocument
+ // INPUT_PATH
+ // wohin
+ // REFERENCE_PATH
+ // mit was (Reference Application)
+ // AppExecutionCmd
+ try
+ {
+ String referenceInputPath = null;
+ if(m_aArguments.getReferenceInputPath() == null)
+ {
+ GraphicalDifferenceCheck.createReferences(m_aArguments.getInputPath(), m_aArguments.getReferencePath(), m_aArguments);
+ }
+ else
+ {
+ referenceInputPath = m_aArguments.getReferenceInputPath();
+ GraphicalDifferenceCheck.createReferences(referenceInputPath, m_aArguments.getReferencePath(), m_aArguments);
+ }
+ }
+ catch (ConvWatchException e)
+ {
+ // wrap it to IOException
+ throw new java.io.IOException(e.getMessage());
+ }
+ }
+
+ /**
+ * INPUT_PATH must set, to directory/file, where the documents exist.
+ * REFERENCE_PATH must set to directory/file, where the created references (*.prn files) will create.
+ * OUTPUT_PATH must set to a directory, there the whole ouptut will create
+ */
+ public boolean compare() throws IOException
+ {
+ try
+ {
+ if (FileHelper.isDebugEnabled())
+ {
+ System.err.println(" Inputpath: '" + m_aArguments.getInputPath() + "'");
+ System.err.println(" Outputpath: '" + m_aArguments.getOutputPath() + "'");
+ System.err.println("Referencepath: '" + m_aArguments.getReferencePath() + "'");
+ }
+ return GraphicalDifferenceCheck.check(m_aArguments.getInputPath(), m_aArguments.getOutputPath(), m_aArguments.getReferencePath(), m_aArguments);
+ }
+ catch(ConvWatchException e)
+ {
+ // wrap it to IOException
+ if (FileHelper.isDebugEnabled())
+ {
+ System.err.println("Exception caught");
+ System.err.println(" Inputpath: '" + m_aArguments.getInputPath() + "'");
+ System.err.println(" Outputpath: '" + m_aArguments.getOutputPath() + "'");
+ System.err.println("Referencepath: '" + m_aArguments.getReferencePath() + "'");
+ }
+ throw new java.io.IOException(e.getMessage());
+ }
+ }
+
+ /**
+ *
+ * INPUT_PATH must set to the original documents the directory structure is taken to see if the references exist in the DIFF_PATH
+ * DIFF_PATH must set to the diff references
+ */
+ public boolean isDiffReferenceExistent() throws IOException
+ {
+ return isReferenceOrDiffExistent(".prn.diff0001.jpg");
+ }
+
+ /**
+ * INPUT_PATH must set, to directory/file, where the documents exist.
+ * REFERENCE_PATH must set to directory/file, where the created references (*.prn files) exists.
+ * OUTPUT_PATH must set to a directory, where the whole ouptut will create. Here the diffReference will create.
+ * At the momemt it's not possible to say only where the diffreferences will create.
+ */
+ public void createDiffReference() throws IOException
+ {
+ // this is the same like compareDiff(), but trash the result.
+ compareDiff();
+ }
+
+ /**
+ * INPUT_PATH must set, to directory/file, where the documents exist.
+ * REFERENCE_PATH must set to directory/file, where the created references (*.prn files) exists.
+ * OUTPUT_PATH must set to a directory, where the whole ouptut will create.
+ * DIFF_PATH must set to a directory, where the older difference references exist, it's possible to set this to the same as REFERENCE_PATH
+ * but this is not the default and will not automatically set.
+ */
+ public boolean compareDiff() throws IOException
+ {
+ try
+ {
+ return GraphicalDifferenceCheck.check(m_aArguments.getInputPath(), m_aArguments.getOutputPath(), m_aArguments.getReferencePath(), m_aArguments.getDiffPath(), m_aArguments);
+ }
+ catch(ConvWatchException e)
+ {
+ // wrap it to IOException
+ throw new java.io.IOException(e.getMessage());
+ }
+ }
+
+}