blob: 025022e5b53ef52dc806d4650d55d92b5b21c5c4 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package graphical;
import com.sun.star.lang.XMultiServiceFactory;
import lib.TestParameters;
/**
* This class object is more a Helper or Controller.
* It stores information like:
* - How to create a document (with a OpenOffice.org method, or with MS Word, or with OpenOffice.org as pdf)
* - some more infos for OpenOffice.org method
* - a service factory pointer
* - if hidden mode should use
* - target name
*
* - printer name
*
* - how to handle .xml files, which in Microsoft could be Excel or Word documents
*
* HOWTO USE:
* For OOo,
* create an ParameterHelper with a set of TestParameters
* ParameterHelper a = new ParameterHelper(params);
*
* If you wish to use pdf export instead of normal printer output, set also the reference type to 'pdf'
* a.setReferenceType("pdf");
*
*
* For MS Office:
* create a ParameterHelper and set the reference type to 'msoffice'
* ParameterHelper a = new ParameterHelper(params);
* a.setReferenceType("msoffice");
*
* within windows it's better to set also a printer name so it's simply possible to use for normal work the default printer
* and for such tests with ConvWatch a extra printer.
* a.setPrinterName("CrossOffice Printer");
*
*/
public class ParameterHelper
{
/*
TODO:
Possible reference types are currently
// ooo
// pdf
// msoffice
*/
private String m_sReferenceType = null;
// private String m_sTargetFrameName = "_blank";
private String m_sPrinterName = null;
private int m_nResolutionInDPI = 180;
private boolean m_bIncludeSubdirectories;
private String m_sInputPath = null;
private String m_sOutputPath = null;
// private String m_sReferencePath = null;
private TestParameters m_aCurrentParams;
// private GlobalLogWriter m_aLog;
// CONSTRUCTOR
private ParameterHelper(){}
public ParameterHelper(TestParameters param)
{
m_aCurrentParams = param;
// m_aLog = log;
// interpretReferenceType();
// interpretPrinterName();
}
protected TestParameters getTestParameters()
{
return m_aCurrentParams;
}
/**
* return the input path, if given.
* @return
*/
public String getInputPath()
{
if (m_sInputPath == null)
{
String sInputPath = (String)getTestParameters().get( PropertyName.DOC_COMPARATOR_INPUT_PATH );
if (sInputPath == null || sInputPath.length() == 0)
{
GlobalLogWriter.println("Please set input path (path to documents) " + PropertyName.DOC_COMPARATOR_INPUT_PATH + "=path.");
}
else
{
m_sInputPath = helper.StringHelper.removeQuoteIfExists(sInputPath);
}
}
return m_sInputPath;
}
public String getOutputPath()
{
if (m_sOutputPath == null)
{
String sOutputPath = (String)getTestParameters().get( PropertyName.DOC_COMPARATOR_OUTPUT_PATH );
if (sOutputPath == null || sOutputPath.length() == 0)
{
GlobalLogWriter.println("Please set output path (path where to store document results) " + PropertyName.DOC_COMPARATOR_OUTPUT_PATH + "=path.");
}
else
{
m_sOutputPath = helper.StringHelper.removeQuoteIfExists(sOutputPath);
}
}
return m_sOutputPath;
}
// public String getReferencePath()
// {
// if (m_sReferencePath == null)
// {
// String sReferencePath = (String)getTestParameters().get( PropertyName.DOC_COMPARATOR_REFERENCE_PATH );
// if (sReferencePath == null || sReferencePath.length() == 0)
// {
// GlobalLogWriter.println("Please set reference path (path to reference documents) " + PropertyName.DOC_COMPARATOR_REFERENCE_PATH + "=path.");
// }
// else
// {
// m_sReferencePath = sReferencePath;
// }
// }
// return m_sReferencePath;
// }
public boolean isIncludeSubDirectories()
{
m_bIncludeSubdirectories = true;
String sRECURSIVE = (String)getTestParameters().get( PropertyName.DOC_COMPARATOR_INCLUDE_SUBDIRS );
// TODO: I need to get the boolean value with get("name") because, if it is not given getBool() returns
// with a default of 'false' which is not very helpful if the default should be 'true'
// maybe a getBoolean("name", true) could be a better choise.
if (sRECURSIVE == null)
{
sRECURSIVE = "true";
}
if (sRECURSIVE.toLowerCase().equals("no") ||
sRECURSIVE.toLowerCase().equals("false"))
{
m_bIncludeSubdirectories = false;
}
return m_bIncludeSubdirectories;
}
public String getReferenceType()
{
if (m_sReferenceType == null)
{
// REFERENCE_TYPE ----------
String sReferenceType = (String)getTestParameters().get( PropertyName.DOC_COMPARATOR_REFERENCE_TYPE );
if (sReferenceType == null || sReferenceType.length() == 0)
{
m_sReferenceType = "ps";
}
else
{
// log.println("found REFERENCE_TYPE " + sReferenceType );
m_sReferenceType = sReferenceType;
}
}
return m_sReferenceType;
}
public String getPrinterName()
{
if (m_sPrinterName == null)
{
// PRINTER_NAME ----------
String sPrinterName = (String)getTestParameters().get( PropertyName.DOC_COMPARATOR_PRINTER_NAME );
if (sPrinterName == null || sPrinterName.length() == 0)
{
m_sPrinterName = "";
}
else
{
// log.println("found PRINTER_NAME " + sPrinterName );
m_sPrinterName = sPrinterName;
}
}
return m_sPrinterName;
}
PerformanceContainer m_aPerformanceContainer = null;
/**
* helper class for performance analyser features
* @return
*/
public PerformanceContainer getPerformance()
{
if (m_aPerformanceContainer == null)
{
m_aPerformanceContainer = new PerformanceContainer();
}
return m_aPerformanceContainer;
}
/**
* Helper function to get the buildid of the current used OpenOffice.org
* out of the AppExecutionCommand the build ID
* @return
*/
public String getBuildID()
{
String sAPP = (String)m_aCurrentParams.get(util.PropertyName.APP_EXECUTION_COMMAND);
// return getBuildID(sAPP);
// TODO: here we need the getBuildID(string) method
String sBuildID = BuildID.getBuildID(sAPP);
return sBuildID;
}
/**
* @return integer value, which contain resolution in DPI.
*/
public int getResolutionInDPI()
{
return m_nResolutionInDPI;
}
// get methods
public XMultiServiceFactory getMultiServiceFactory()
{
XMultiServiceFactory xMSF = (XMultiServiceFactory)m_aCurrentParams.getMSF();
// check if MultiServiceFactory is given
if (getReferenceType().toLowerCase().equals("pdf") ||
getReferenceType().toLowerCase().equals("ps") ||
getReferenceType().toLowerCase().equals("ooo") ||
getReferenceType().toLowerCase().equals("o3") )
{
if (xMSF == null)
{
GlobalLogWriter.println("ERROR! MultiServiceFactory not given.");
}
}
return xMSF;
}
// Hidden = true hiddes a used OpenOffice.org, all code is executed in the background
// This parameter is not used for RefType: msoffice
// boolean m_bHidden = true;
public boolean isHidden()
{
// HIDDEN
String sOfficeViewable = (String)m_aCurrentParams.get(PropertyName.OFFICE_VIEWABLE);
if (sOfficeViewable != null)
{
if (sOfficeViewable.toLowerCase().equals("yes") ||
sOfficeViewable.toLowerCase().equals("true"))
{
return false; // setViewable();
}
else
{
return true; // setHidden();
}
}
return true; /* default: hidden */
}
// get/set for FilterName
// get the right Filtername (internal Name) from
// http://framework.openoffice.org/files/documents/25/897/filter_description.html
String m_sImportFilterName = "";
String m_sExportFilterName = "";
public void setImportFilterName(String _sImportFilterName)
{
m_sImportFilterName = _sImportFilterName;
}
public String getImportFilterName()
{
return m_sImportFilterName;
}
public void setExportFilterName(String _sExportFilterName)
{
m_sExportFilterName = _sExportFilterName;
}
public String getExportFilterName()
{
return m_sExportFilterName;
}
String m_sDocumentType = "";
public void setDocumentType(String _sName)
{
m_sDocumentType = _sName;
}
public String getDocumentType()
{
return m_sDocumentType;
}
// String m_sDefaultXMLFormatApplication = null;
// public String getDefaultXMLFormatApp()
// {
// if (m_sDefaultXMLFormatApplication == null)
// {
// // DEFAULT_XML_FORMAT_APP ------
//
// String sDefaultXMLFormatApp = (String)m_aCurrentParams.get( PropertyName.DOC_COMPARATOR_DEFAULT_XML_FORMAT_APP );
// if (sDefaultXMLFormatApp == null || sDefaultXMLFormatApp.length() == 0)
// {
// m_sDefaultXMLFormatApplication = "word";
// }
// else
// {
// m_sDefaultXMLFormatApplication = sDefaultXMLFormatApp;
// }
// }
// return m_sDefaultXMLFormatApplication;
// }
// Pages -------------------------------------------------------------------
/**
* @return the number of pages to be print
*/
public int getMaxPages()
{
// default is 0 (print all pages)
int nMaxPages = m_aCurrentParams.getInt( PropertyName.DOC_COMPARATOR_PRINT_MAX_PAGE );
return nMaxPages;
}
/**
* @return as string, which pages should be print, e.g. '1-4;6' here, page 1 to 4 and page 6.
*/
public String getOnlyPages()
{
// default is null, there is no page which we want to print only.
String sOnlyPage = (String)m_aCurrentParams.get(PropertyName.DOC_COMPARATOR_PRINT_ONLY_PAGE);
if (sOnlyPage == null)
{
sOnlyPage = "";
}
return sOnlyPage;
}
/**
* @return true, if there should not print all pages at all, use getMaxPages() and or getOnlyPages() to get which pages to print
*/
public boolean printAllPages()
{
if ( (getMaxPages() > 0) ||
(getOnlyPages().length() != 0))
{
return false;
}
return true;
}
public boolean getOverwrite()
{
boolean bOverwrite = m_aCurrentParams.getBool( PropertyName.DOC_COMPARATOR_OVERWRITE_REFERENCE);
return bOverwrite;
}
private String m_sHTMLPrefix = null;
public String getHTMLPrefix()
{
if (m_sHTMLPrefix == null)
{
String sPrefix = (String)getTestParameters().get( PropertyName.DOC_COMPARATOR_HTML_OUTPUT_PREFIX );
if (sPrefix == null || sPrefix.length() == 0)
{
GlobalLogWriter.println("Please set html prefix " + PropertyName.DOC_COMPARATOR_HTML_OUTPUT_PREFIX + "=prefix.");
}
else
{
m_sHTMLPrefix = sPrefix;
}
}
return m_sHTMLPrefix;
}
public boolean createSmallPictures()
{
// boolean bCreateSmallPictures = true;
boolean bNoSmallPictures = m_aCurrentParams.getBool( PropertyName.NO_SMALL_PICTURES);
if (bNoSmallPictures == true)
{
return false;
}
return true;
}
}