1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski package graphical; 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski import com.sun.star.beans.PropertyValue; 27*b1cdbd2cSJim Jagielski import com.sun.star.beans.XPropertySet; 28*b1cdbd2cSJim Jagielski import com.sun.star.container.XNameAccess; 29*b1cdbd2cSJim Jagielski import com.sun.star.frame.FrameSearchFlag; 30*b1cdbd2cSJim Jagielski import com.sun.star.frame.XComponentLoader; 31*b1cdbd2cSJim Jagielski import com.sun.star.frame.XDesktop; 32*b1cdbd2cSJim Jagielski import com.sun.star.frame.XModel; 33*b1cdbd2cSJim Jagielski import com.sun.star.frame.XStorable; 34*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 35*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 36*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo; 37*b1cdbd2cSJim Jagielski import com.sun.star.sdb.XOfficeDatabaseDocument; 38*b1cdbd2cSJim Jagielski import com.sun.star.sdb.XReportDocumentsSupplier; 39*b1cdbd2cSJim Jagielski import com.sun.star.sdb.application.XDatabaseDocumentUI; 40*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 41*b1cdbd2cSJim Jagielski import com.sun.star.uno.XInterface; 42*b1cdbd2cSJim Jagielski import com.sun.star.util.XCloseable; 43*b1cdbd2cSJim Jagielski import complexlib.Assurance; 44*b1cdbd2cSJim Jagielski // import complexlib.ComplexTestCase.AssureException; 45*b1cdbd2cSJim Jagielski import helper.OfficeProvider; 46*b1cdbd2cSJim Jagielski import helper.PropertyHelper; 47*b1cdbd2cSJim Jagielski import helper.URLHelper; 48*b1cdbd2cSJim Jagielski import java.io.File; 49*b1cdbd2cSJim Jagielski import java.util.ArrayList; 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski /** 52*b1cdbd2cSJim Jagielski * 53*b1cdbd2cSJim Jagielski * @author ll93751 54*b1cdbd2cSJim Jagielski */ 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielski class PropertySetHelper 57*b1cdbd2cSJim Jagielski { 58*b1cdbd2cSJim Jagielski XPropertySet m_xPropertySet; PropertySetHelper(Object _aObj)59*b1cdbd2cSJim Jagielski public PropertySetHelper(Object _aObj) 60*b1cdbd2cSJim Jagielski { 61*b1cdbd2cSJim Jagielski m_xPropertySet = UnoRuntime.queryInterface(XPropertySet.class, _aObj); 62*b1cdbd2cSJim Jagielski } 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski /** 65*b1cdbd2cSJim Jagielski get a property and don't convert it 66*b1cdbd2cSJim Jagielski @param _sName the string name of the property 67*b1cdbd2cSJim Jagielski @return the object value of the property without any conversion 68*b1cdbd2cSJim Jagielski */ getPropertyValueAsObject(String _sName)69*b1cdbd2cSJim Jagielski public Object getPropertyValueAsObject(String _sName) 70*b1cdbd2cSJim Jagielski { 71*b1cdbd2cSJim Jagielski Object aObject = null; 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski if (m_xPropertySet != null) 74*b1cdbd2cSJim Jagielski { 75*b1cdbd2cSJim Jagielski try 76*b1cdbd2cSJim Jagielski { 77*b1cdbd2cSJim Jagielski aObject = m_xPropertySet.getPropertyValue(_sName); 78*b1cdbd2cSJim Jagielski } 79*b1cdbd2cSJim Jagielski catch (com.sun.star.beans.UnknownPropertyException e) 80*b1cdbd2cSJim Jagielski { 81*b1cdbd2cSJim Jagielski System.out.println("ERROR: UnknownPropertyException caught. '" + _sName + "'"); 82*b1cdbd2cSJim Jagielski System.out.println("Message: " + e.getMessage()); 83*b1cdbd2cSJim Jagielski } 84*b1cdbd2cSJim Jagielski catch (com.sun.star.lang.WrappedTargetException e) 85*b1cdbd2cSJim Jagielski { 86*b1cdbd2cSJim Jagielski System.out.println("ERROR: WrappedTargetException caught."); 87*b1cdbd2cSJim Jagielski System.out.println("Message: " + e.getMessage()); 88*b1cdbd2cSJim Jagielski } 89*b1cdbd2cSJim Jagielski } 90*b1cdbd2cSJim Jagielski return aObject; 91*b1cdbd2cSJim Jagielski } 92*b1cdbd2cSJim Jagielski } 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski public class OpenOfficeDatabaseReportExtractor extends Assurance 95*b1cdbd2cSJim Jagielski { 96*b1cdbd2cSJim Jagielski private ParameterHelper m_aParameterHelper; 97*b1cdbd2cSJim Jagielski OpenOfficeDatabaseReportExtractor(ParameterHelper _aParameter)98*b1cdbd2cSJim Jagielski public OpenOfficeDatabaseReportExtractor(ParameterHelper _aParameter) 99*b1cdbd2cSJim Jagielski { 100*b1cdbd2cSJim Jagielski m_aParameterHelper = _aParameter; 101*b1cdbd2cSJim Jagielski } 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski private XDesktop m_xDesktop = null; getXDesktop()104*b1cdbd2cSJim Jagielski private XDesktop getXDesktop() 105*b1cdbd2cSJim Jagielski { 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski if (m_xDesktop == null) 108*b1cdbd2cSJim Jagielski { 109*b1cdbd2cSJim Jagielski try 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski XInterface xInterface = (XInterface) getMultiServiceFactory().createInstance( "com.sun.star.frame.Desktop" ); 112*b1cdbd2cSJim Jagielski m_xDesktop = UnoRuntime.queryInterface(XDesktop.class, xInterface); 113*b1cdbd2cSJim Jagielski } 114*b1cdbd2cSJim Jagielski catch (com.sun.star.uno.Exception e) 115*b1cdbd2cSJim Jagielski { 116*b1cdbd2cSJim Jagielski GlobalLogWriter.println("ERROR: uno.Exception caught"); 117*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Message: " + e.getMessage()); 118*b1cdbd2cSJim Jagielski } 119*b1cdbd2cSJim Jagielski } 120*b1cdbd2cSJim Jagielski return m_xDesktop; 121*b1cdbd2cSJim Jagielski } 122*b1cdbd2cSJim Jagielski showElements(XNameAccess _xNameAccess)123*b1cdbd2cSJim Jagielski private void showElements(XNameAccess _xNameAccess) 124*b1cdbd2cSJim Jagielski { 125*b1cdbd2cSJim Jagielski if (_xNameAccess != null) 126*b1cdbd2cSJim Jagielski { 127*b1cdbd2cSJim Jagielski String[] sElementNames = _xNameAccess.getElementNames(); 128*b1cdbd2cSJim Jagielski for(int i=0;i<sElementNames.length; i++) 129*b1cdbd2cSJim Jagielski { 130*b1cdbd2cSJim Jagielski System.out.println("Value: [" + i + "] := " + sElementNames[i]); 131*b1cdbd2cSJim Jagielski } 132*b1cdbd2cSJim Jagielski } 133*b1cdbd2cSJim Jagielski else 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski System.out.println("Warning: Given object is null."); 136*b1cdbd2cSJim Jagielski } 137*b1cdbd2cSJim Jagielski } 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski private OfficeProvider m_aProvider = null; 141*b1cdbd2cSJim Jagielski private XMultiServiceFactory m_xMultiServiceFactory = null; getMultiServiceFactory()142*b1cdbd2cSJim Jagielski private XMultiServiceFactory getMultiServiceFactory() 143*b1cdbd2cSJim Jagielski { 144*b1cdbd2cSJim Jagielski if (m_xMultiServiceFactory == null) 145*b1cdbd2cSJim Jagielski { 146*b1cdbd2cSJim Jagielski m_xMultiServiceFactory = m_aParameterHelper.getMultiServiceFactory(); 147*b1cdbd2cSJim Jagielski } 148*b1cdbd2cSJim Jagielski return m_xMultiServiceFactory; 149*b1cdbd2cSJim Jagielski } 150*b1cdbd2cSJim Jagielski // private void startOffice() 151*b1cdbd2cSJim Jagielski // { 152*b1cdbd2cSJim Jagielski // // int tempTime = m_aParameterHelper.getTestParameters().getInt("SingleTimeOut"); 153*b1cdbd2cSJim Jagielski // param.put("TimeOut", new Integer(300000)); 154*b1cdbd2cSJim Jagielski // System.out.println("TimeOut: " + param.getInt("TimeOut")); 155*b1cdbd2cSJim Jagielski // System.out.println("ThreadTimeOut: " + param.getInt("ThreadTimeOut")); 156*b1cdbd2cSJim Jagielski // 157*b1cdbd2cSJim Jagielski // // OfficeProvider aProvider = null; 158*b1cdbd2cSJim Jagielski // m_aProvider = new OfficeProvider(); 159*b1cdbd2cSJim Jagielski // m_xXMultiServiceFactory = (XMultiServiceFactory) m_aProvider.getManager(param); 160*b1cdbd2cSJim Jagielski // param.put("ServiceFactory", m_xXMultiServiceFactory); 161*b1cdbd2cSJim Jagielski // } 162*b1cdbd2cSJim Jagielski // 163*b1cdbd2cSJim Jagielski // private void stopOffice() 164*b1cdbd2cSJim Jagielski // { 165*b1cdbd2cSJim Jagielski // if (m_aProvider != null) 166*b1cdbd2cSJim Jagielski // { 167*b1cdbd2cSJim Jagielski // m_aProvider.closeExistingOffice(param, true); 168*b1cdbd2cSJim Jagielski // m_aProvider = null; 169*b1cdbd2cSJim Jagielski // } 170*b1cdbd2cSJim Jagielski // TimeHelper.waitInSeconds(2, "Give close Office some time."); 171*b1cdbd2cSJim Jagielski // } 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski private String m_sMailAddress = null; 174*b1cdbd2cSJim Jagielski private String m_sParentDistinct = null; 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski // private String m_sUPDMinor; 177*b1cdbd2cSJim Jagielski // private String m_sCWS_WORK_STAMP; 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski private static String m_sSourceVersion; 180*b1cdbd2cSJim Jagielski private static String m_sDestinationVersion; 181*b1cdbd2cSJim Jagielski private static String m_sSourceName; 182*b1cdbd2cSJim Jagielski private static String m_sDestinationName; 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski private static final int WRITER = 1; 185*b1cdbd2cSJim Jagielski private static final int CALC = 2; 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski /** 188*b1cdbd2cSJim Jagielski * This is the main test Function of current ReportDesignerTest 189*b1cdbd2cSJim Jagielski * @param _sDocument 190*b1cdbd2cSJim Jagielski * @return 191*b1cdbd2cSJim Jagielski */ 192*b1cdbd2cSJim Jagielski load(String _sDocument )193*b1cdbd2cSJim Jagielski public ArrayList<String> load(String _sDocument /*, int _nType*/) 194*b1cdbd2cSJim Jagielski { 195*b1cdbd2cSJim Jagielski // We need to copy the database file to a place where we have write access, NEVER use the docpool for this 196*b1cdbd2cSJim Jagielski String sOutputPath = m_aParameterHelper.getOutputPath(); 197*b1cdbd2cSJim Jagielski File aOutputPath = new File(sOutputPath); 198*b1cdbd2cSJim Jagielski aOutputPath.mkdirs(); 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim Jagielski String sFilename = FileHelper.getBasename(_sDocument); 201*b1cdbd2cSJim Jagielski String sDestinationFile = FileHelper.appendPath(sOutputPath, sFilename); 202*b1cdbd2cSJim Jagielski FileHelper.copy(_sDocument, sDestinationFile); 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski // now the fix reference of the AbsoluteReferenceFile should exist. 205*b1cdbd2cSJim Jagielski assure("There exists no file: " + sDestinationFile, FileHelper.exists(sDestinationFile)); 206*b1cdbd2cSJim Jagielski 207*b1cdbd2cSJim Jagielski String sFileURL = URLHelper.getFileURLFromSystemPath(sDestinationFile); 208*b1cdbd2cSJim Jagielski GlobalLogWriter.println("File URL: " + sFileURL); 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski ArrayList<PropertyValue> aPropertyList = new ArrayList<PropertyValue>(); 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski // FYI: it is not allowed to open the document read only 213*b1cdbd2cSJim Jagielski // PropertyValue aReadOnly = new PropertyValue(); // always overwrite already exist files 214*b1cdbd2cSJim Jagielski // aReadOnly.Name = "ReadOnly"; 215*b1cdbd2cSJim Jagielski // aReadOnly.Value = Boolean.TRUE; 216*b1cdbd2cSJim Jagielski // aPropertyList.add(aReadOnly); 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski XComponent xDocComponent = loadComponent(sFileURL, getXDesktop(), aPropertyList); 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Load done"); 221*b1cdbd2cSJim Jagielski // context = createUnoService("com.sun.star.sdb.DatabaseContext") 222*b1cdbd2cSJim Jagielski // oDataBase = context.getByName("hh") 223*b1cdbd2cSJim Jagielski // oDBDoc = oDataBase.DatabaseDocument 224*b1cdbd2cSJim Jagielski // 225*b1cdbd2cSJim Jagielski // dim args(1) as new com.sun.star.beans.PropertyValue 226*b1cdbd2cSJim Jagielski // args(0).Name = "ActiveConnection" 227*b1cdbd2cSJim Jagielski // args(0).Value = oDBDoc.getCurrentController().getPropertyValue("ActiveConnection") 228*b1cdbd2cSJim Jagielski // reportContainer = oDBDoc.getReportDocuments() 229*b1cdbd2cSJim Jagielski // report = reportContainer.loadComponentFromURL("Report40","",0,args) 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski ArrayList<String> aList = null; 232*b1cdbd2cSJim Jagielski try 233*b1cdbd2cSJim Jagielski { 234*b1cdbd2cSJim Jagielski // XInterface x = (XInterface)getMultiServiceFactory().createInstance("com.sun.star.sdb.DatabaseContext"); 235*b1cdbd2cSJim Jagielski // assure("can't create instance of com.sun.star.sdb.DatabaseContext", x != null); 236*b1cdbd2cSJim Jagielski // GlobalLogWriter.println("createInstance com.sun.star.sdb.DatabaseContext done"); 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski // XNameAccess xNameAccess = (XNameAccess) UnoRuntime.queryInterface(XNameAccess.class, x); 239*b1cdbd2cSJim Jagielski // showElements(xNameAccess); 240*b1cdbd2cSJim Jagielski // Object aObj = xNameAccess.getByName(sFileURL); 241*b1cdbd2cSJim Jagielski // GlobalLogWriter.println("1"); 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski // PropertySetHelper aHelper = new PropertySetHelper(aObj); 244*b1cdbd2cSJim Jagielski // XDocumentDataSource xDataSource = (XDocumentDataSource)UnoRuntime.queryInterface(XDocumentDataSource.class, aObj); 245*b1cdbd2cSJim Jagielski // Object aDatabaseDocument = aHelper.getPropertyValueAsObject("DatabaseDocument"); 246*b1cdbd2cSJim Jagielski // XOfficeDatabaseDocument xOfficeDBDoc = xDataSource.getDatabaseDocument(); 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski XOfficeDatabaseDocument xOfficeDBDoc = UnoRuntime.queryInterface(XOfficeDatabaseDocument.class, xDocComponent); 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski // XOfficeDatabaseDocument xOfficeDBDoc = (XOfficeDatabaseDocument)UnoRuntime.queryInterface(XOfficeDatabaseDocument.class, xDataSource); 251*b1cdbd2cSJim Jagielski assure("can't access DatabaseDocument", xOfficeDBDoc != null); 252*b1cdbd2cSJim Jagielski // GlobalLogWriter.println("2"); 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski XModel xDBSource = UnoRuntime.queryInterface(XModel.class, xOfficeDBDoc); 255*b1cdbd2cSJim Jagielski Object aController = xDBSource.getCurrentController(); 256*b1cdbd2cSJim Jagielski assure("Controller of xOfficeDatabaseDocument is empty!", aController != null); 257*b1cdbd2cSJim Jagielski // GlobalLogWriter.println("3"); 258*b1cdbd2cSJim Jagielski 259*b1cdbd2cSJim Jagielski XDatabaseDocumentUI aDBDocUI = UnoRuntime.queryInterface(XDatabaseDocumentUI.class, aController); 260*b1cdbd2cSJim Jagielski aDBDocUI.connect(); 261*b1cdbd2cSJim Jagielski boolean isConnect = aDBDocUI.isConnected(); 262*b1cdbd2cSJim Jagielski if (isConnect) 263*b1cdbd2cSJim Jagielski { 264*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Connection is true"); 265*b1cdbd2cSJim Jagielski } 266*b1cdbd2cSJim Jagielski else 267*b1cdbd2cSJim Jagielski { 268*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Connection is false"); 269*b1cdbd2cSJim Jagielski } 270*b1cdbd2cSJim Jagielski 271*b1cdbd2cSJim Jagielski // aHelper = new PropertySetHelper(aController); 272*b1cdbd2cSJim Jagielski 273*b1cdbd2cSJim Jagielski XReportDocumentsSupplier xSupplier = UnoRuntime.queryInterface(XReportDocumentsSupplier.class, xOfficeDBDoc); 274*b1cdbd2cSJim Jagielski XNameAccess xNameAccess = xSupplier.getReportDocuments(); 275*b1cdbd2cSJim Jagielski assure("xOfficeDatabaseDocument returns no Report Document", xNameAccess != null); 276*b1cdbd2cSJim Jagielski // GlobalLogWriter.println("5"); 277*b1cdbd2cSJim Jagielski 278*b1cdbd2cSJim Jagielski showElements(xNameAccess); 279*b1cdbd2cSJim Jagielski 280*b1cdbd2cSJim Jagielski // Object aActiveConnectionObj = aHelper.getPropertyValueAsObject("ActiveConnection"); 281*b1cdbd2cSJim Jagielski Object aActiveConnectionObj = aDBDocUI.getActiveConnection(); 282*b1cdbd2cSJim Jagielski assure("ActiveConnection is empty", aActiveConnectionObj != null); 283*b1cdbd2cSJim Jagielski // GlobalLogWriter.println("5"); 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski ArrayList<PropertyValue> aPropertyList2 = new ArrayList<PropertyValue>(); 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski PropertyValue aActiveConnection = new PropertyValue(); 288*b1cdbd2cSJim Jagielski aActiveConnection.Name = "ActiveConnection"; 289*b1cdbd2cSJim Jagielski aActiveConnection.Value = aActiveConnectionObj; 290*b1cdbd2cSJim Jagielski aPropertyList2.add(aActiveConnection); 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski aList = loadAndStoreReports(xNameAccess, aPropertyList2 /*, _nType*/ ); 293*b1cdbd2cSJim Jagielski createDBEntry(/*_nType*/); 294*b1cdbd2cSJim Jagielski } 295*b1cdbd2cSJim Jagielski catch(Exception/*com.sun.star.uno.Exception*/ e) 296*b1cdbd2cSJim Jagielski { 297*b1cdbd2cSJim Jagielski GlobalLogWriter.println("ERROR: Exception caught"); 298*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Message: " + e.getMessage()); 299*b1cdbd2cSJim Jagielski } 300*b1cdbd2cSJim Jagielski 301*b1cdbd2cSJim Jagielski // String mTestDocumentPath = (String) param.get("TestDocumentPath"); 302*b1cdbd2cSJim Jagielski // System.out.println("mTestDocumentPath: '" + mTestDocumentPath + "'"); 303*b1cdbd2cSJim Jagielski // // workaround for issue using deprecated "DOCPTH" prop 304*b1cdbd2cSJim Jagielski // System.setProperty("DOCPTH", mTestDocumentPath); 305*b1cdbd2cSJim Jagielski 306*b1cdbd2cSJim Jagielski // Close the document 307*b1cdbd2cSJim Jagielski // util.utils.shortWait(2000); 308*b1cdbd2cSJim Jagielski 309*b1cdbd2cSJim Jagielski closeComponent(xDocComponent); 310*b1cdbd2cSJim Jagielski return aList; 311*b1cdbd2cSJim Jagielski } 312*b1cdbd2cSJim Jagielski getDocumentPoolName( )313*b1cdbd2cSJim Jagielski private String getDocumentPoolName(/*int _nType*/) 314*b1cdbd2cSJim Jagielski { 315*b1cdbd2cSJim Jagielski return "AutogenReportDesignTest"; 316*b1cdbd2cSJim Jagielski // return getFileFormat(_nType); 317*b1cdbd2cSJim Jagielski } 318*b1cdbd2cSJim Jagielski 319*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- createDBEntry( )320*b1cdbd2cSJim Jagielski private void createDBEntry(/*int _nType*/) 321*b1cdbd2cSJim Jagielski { 322*b1cdbd2cSJim Jagielski // try to connect the database 323*b1cdbd2cSJim Jagielski String sDBConnection = (String)m_aParameterHelper.getTestParameters().get( convwatch.PropertyName.DB_CONNECTION_STRING ); 324*b1cdbd2cSJim Jagielski if (sDBConnection != null && sDBConnection.length() > 0) 325*b1cdbd2cSJim Jagielski { 326*b1cdbd2cSJim Jagielski GlobalLogWriter.println("DBConnection: " + sDBConnection); 327*b1cdbd2cSJim Jagielski // TODO: DB 328*b1cdbd2cSJim Jagielski // DB.init(sDBConnection); 329*b1cdbd2cSJim Jagielski 330*b1cdbd2cSJim Jagielski // String sFixRefSubDirectory = "ReportDesign_qa_complex_" + getFileFormat(_nType); 331*b1cdbd2cSJim Jagielski String sFixRefSubDirectory = "ReportDesignFixRef"; 332*b1cdbd2cSJim Jagielski 333*b1cdbd2cSJim Jagielski String sSourceVersion = m_sSourceVersion; 334*b1cdbd2cSJim Jagielski // String sSourceVersion = sFixRefSubDirectory; 335*b1cdbd2cSJim Jagielski String sSourceName = m_sSourceName; 336*b1cdbd2cSJim Jagielski // String sSourceCreatorType = "fixref"; 337*b1cdbd2cSJim Jagielski String sSourceCreatorType = ""; 338*b1cdbd2cSJim Jagielski String sDestinationVersion = m_sDestinationVersion; 339*b1cdbd2cSJim Jagielski // if (sDestinationVersion.length() == 0) 340*b1cdbd2cSJim Jagielski // { 341*b1cdbd2cSJim Jagielski // sDestinationVersion = m_sUPDMinor; 342*b1cdbd2cSJim Jagielski // } 343*b1cdbd2cSJim Jagielski String sDestinationName = m_sDestinationName; 344*b1cdbd2cSJim Jagielski String sDestinationCreatorType = ""; 345*b1cdbd2cSJim Jagielski String sDocumentPoolDir = getOutputPath(/*_nType*/); 346*b1cdbd2cSJim Jagielski String sDocumentPoolName = getDocumentPoolName(/*_nType*/); 347*b1cdbd2cSJim Jagielski String sSpecial = ""; 348*b1cdbd2cSJim Jagielski 349*b1cdbd2cSJim Jagielski // TODO: DB 350*b1cdbd2cSJim Jagielski // DB.insertinto_documentcompare(sSourceVersion, sSourceName, sSourceCreatorType, 351*b1cdbd2cSJim Jagielski // m_sDestinationVersion, sDestinationName, sDestinationCreatorType, 352*b1cdbd2cSJim Jagielski // sDocumentPoolDir, sDocumentPoolName, m_sMailAddress, 353*b1cdbd2cSJim Jagielski // sSpecial, m_sParentDistinct); 354*b1cdbd2cSJim Jagielski TimeHelper.waitInSeconds(1, "wait for DB."); 355*b1cdbd2cSJim Jagielski // DB.test(); 356*b1cdbd2cSJim Jagielski // System.exit(1); 357*b1cdbd2cSJim Jagielski } 358*b1cdbd2cSJim Jagielski } 359*b1cdbd2cSJim Jagielski loadAndStoreReports(XNameAccess _xNameAccess, ArrayList<PropertyValue> _aPropertyList )360*b1cdbd2cSJim Jagielski private ArrayList<String> loadAndStoreReports(XNameAccess _xNameAccess, ArrayList<PropertyValue> _aPropertyList /*, int _nType*/ ) 361*b1cdbd2cSJim Jagielski { 362*b1cdbd2cSJim Jagielski ArrayList<String> aList = new ArrayList<String>(); 363*b1cdbd2cSJim Jagielski if (_xNameAccess != null) 364*b1cdbd2cSJim Jagielski { 365*b1cdbd2cSJim Jagielski String[] sElementNames = _xNameAccess.getElementNames(); 366*b1cdbd2cSJim Jagielski for(int i=0;i<sElementNames.length; i++) 367*b1cdbd2cSJim Jagielski { 368*b1cdbd2cSJim Jagielski String sReportName = sElementNames[i]; 369*b1cdbd2cSJim Jagielski XComponent xDoc = loadComponent(sReportName, _xNameAccess, _aPropertyList); 370*b1cdbd2cSJim Jagielski if (xDoc != null) 371*b1cdbd2cSJim Jagielski { 372*b1cdbd2cSJim Jagielski // util.utils.shortWait(1000); 373*b1cdbd2cSJim Jagielski // print? or store? 374*b1cdbd2cSJim Jagielski String sDocumentPathName = storeComponent(sReportName, xDoc /*, _nType*/); 375*b1cdbd2cSJim Jagielski aList.add(sDocumentPathName); 376*b1cdbd2cSJim Jagielski // util.utils.shortWait(1000); 377*b1cdbd2cSJim Jagielski closeComponent(xDoc); 378*b1cdbd2cSJim Jagielski // util.utils.shortWait(1000); 379*b1cdbd2cSJim Jagielski } 380*b1cdbd2cSJim Jagielski else 381*b1cdbd2cSJim Jagielski { 382*b1cdbd2cSJim Jagielski System.out.println("Leave out maybe due to errors."); 383*b1cdbd2cSJim Jagielski } 384*b1cdbd2cSJim Jagielski // sBackPath contains the path where to find the extracted ODB Document 385*b1cdbd2cSJim Jagielski } 386*b1cdbd2cSJim Jagielski } 387*b1cdbd2cSJim Jagielski return aList; 388*b1cdbd2cSJim Jagielski } 389*b1cdbd2cSJim Jagielski getFormatExtension(Object _xComponent )390*b1cdbd2cSJim Jagielski private String getFormatExtension(Object _xComponent /* int _nType*/ ) 391*b1cdbd2cSJim Jagielski { 392*b1cdbd2cSJim Jagielski String sExtension; 393*b1cdbd2cSJim Jagielski XServiceInfo xServiceInfo = UnoRuntime.queryInterface( XServiceInfo.class, _xComponent ); 394*b1cdbd2cSJim Jagielski if ( xServiceInfo.supportsService( "com.sun.star.sheet.SpreadsheetDocument" ) ) 395*b1cdbd2cSJim Jagielski { 396*b1cdbd2cSJim Jagielski // calc 397*b1cdbd2cSJim Jagielski sExtension = ".ods"; 398*b1cdbd2cSJim Jagielski } 399*b1cdbd2cSJim Jagielski else if (xServiceInfo.supportsService("com.sun.star.text.TextDocument")) 400*b1cdbd2cSJim Jagielski { 401*b1cdbd2cSJim Jagielski //writer 402*b1cdbd2cSJim Jagielski sExtension = ".odt"; 403*b1cdbd2cSJim Jagielski } 404*b1cdbd2cSJim Jagielski else 405*b1cdbd2cSJim Jagielski { 406*b1cdbd2cSJim Jagielski sExtension = ".UNKNOWN"; 407*b1cdbd2cSJim Jagielski } 408*b1cdbd2cSJim Jagielski return sExtension; 409*b1cdbd2cSJim Jagielski } 410*b1cdbd2cSJim Jagielski 411*b1cdbd2cSJim Jagielski // switch(_nType) 412*b1cdbd2cSJim Jagielski // { 413*b1cdbd2cSJim Jagielski // case WRITER: 414*b1cdbd2cSJim Jagielski // sExtension = ".odt"; 415*b1cdbd2cSJim Jagielski // break; 416*b1cdbd2cSJim Jagielski // case CALC: 417*b1cdbd2cSJim Jagielski // sExtension = ".ods"; 418*b1cdbd2cSJim Jagielski // break; 419*b1cdbd2cSJim Jagielski // default: 420*b1cdbd2cSJim Jagielski // sExtension = ".UNKNOWN"; 421*b1cdbd2cSJim Jagielski // } 422*b1cdbd2cSJim Jagielski // return sExtension; 423*b1cdbd2cSJim Jagielski // } 424*b1cdbd2cSJim Jagielski // private String getFileFormat(int _nType) 425*b1cdbd2cSJim Jagielski // { 426*b1cdbd2cSJim Jagielski // String sFileType; 427*b1cdbd2cSJim Jagielski // switch(_nType) 428*b1cdbd2cSJim Jagielski // { 429*b1cdbd2cSJim Jagielski // case WRITER: 430*b1cdbd2cSJim Jagielski // sFileType = "writer8"; 431*b1cdbd2cSJim Jagielski // break; 432*b1cdbd2cSJim Jagielski // case CALC: 433*b1cdbd2cSJim Jagielski // sFileType = "calc8"; 434*b1cdbd2cSJim Jagielski // break; 435*b1cdbd2cSJim Jagielski // default: 436*b1cdbd2cSJim Jagielski // sFileType = "UNKNOWN"; 437*b1cdbd2cSJim Jagielski // } 438*b1cdbd2cSJim Jagielski // return sFileType; 439*b1cdbd2cSJim Jagielski // } 440*b1cdbd2cSJim Jagielski 441*b1cdbd2cSJim Jagielski private String m_sOutputPath = null; 442*b1cdbd2cSJim Jagielski getOutputPath( )443*b1cdbd2cSJim Jagielski private String getOutputPath(/*int _nType*/) 444*b1cdbd2cSJim Jagielski { 445*b1cdbd2cSJim Jagielski if (m_sOutputPath == null) 446*b1cdbd2cSJim Jagielski { 447*b1cdbd2cSJim Jagielski String sOutputPath = (String)m_aParameterHelper.getTestParameters().get( convwatch.PropertyName.DOC_COMPARATOR_OUTPUT_PATH ); 448*b1cdbd2cSJim Jagielski sOutputPath = helper.StringHelper.removeQuoteIfExists(sOutputPath); 449*b1cdbd2cSJim Jagielski 450*b1cdbd2cSJim Jagielski // sOutputPath += "tmp_123"; 451*b1cdbd2cSJim Jagielski sOutputPath = FileHelper.appendPath(sOutputPath, DateHelper.getDateTimeForFilename()); 452*b1cdbd2cSJim Jagielski // sOutputPath += System.getProperty("file.separator"); 453*b1cdbd2cSJim Jagielski 454*b1cdbd2cSJim Jagielski // sOutputPath += getFileFormat(_nType); 455*b1cdbd2cSJim Jagielski // sOutputPath += System.getProperty("file.separator"); 456*b1cdbd2cSJim Jagielski 457*b1cdbd2cSJim Jagielski File aOutputFile = new File(sOutputPath); // create the directory of the given output path 458*b1cdbd2cSJim Jagielski aOutputFile.mkdirs(); 459*b1cdbd2cSJim Jagielski m_sOutputPath = sOutputPath; 460*b1cdbd2cSJim Jagielski } 461*b1cdbd2cSJim Jagielski return m_sOutputPath; 462*b1cdbd2cSJim Jagielski } 463*b1cdbd2cSJim Jagielski 464*b1cdbd2cSJim Jagielski /* 465*b1cdbd2cSJim Jagielski store given _xComponent under the given Name in DOC_COMPARATOR_INPUTPATH 466*b1cdbd2cSJim Jagielski */ storeComponent(String _sName, Object _xComponent )467*b1cdbd2cSJim Jagielski private String storeComponent(String _sName, Object _xComponent /*, int _nType*/ ) 468*b1cdbd2cSJim Jagielski { 469*b1cdbd2cSJim Jagielski String sOutputPath = getOutputPath(/*_nType*/); 470*b1cdbd2cSJim Jagielski 471*b1cdbd2cSJim Jagielski // // add DocumentPoolName 472*b1cdbd2cSJim Jagielski // sOutputPath = FileHelper.appendPath(sOutputPath, getDocumentPoolName(/*_nType*/)); 473*b1cdbd2cSJim Jagielski // // sOutputPath += System.getProperty("file.separator"); 474*b1cdbd2cSJim Jagielski // 475*b1cdbd2cSJim Jagielski // File aOutputFile = new File(sOutputPath); // create the directory of the given output path 476*b1cdbd2cSJim Jagielski // aOutputFile.mkdirs(); 477*b1cdbd2cSJim Jagielski 478*b1cdbd2cSJim Jagielski 479*b1cdbd2cSJim Jagielski String sName = _sName + getFormatExtension(_xComponent /*_nType*/); 480*b1cdbd2cSJim Jagielski sOutputPath = FileHelper.appendPath(sOutputPath, sName); 481*b1cdbd2cSJim Jagielski 482*b1cdbd2cSJim Jagielski // we need the name and path 483*b1cdbd2cSJim Jagielski String sBackPathName = sOutputPath; 484*b1cdbd2cSJim Jagielski 485*b1cdbd2cSJim Jagielski String sOutputURL = URLHelper.getFileURLFromSystemPath(sOutputPath); 486*b1cdbd2cSJim Jagielski 487*b1cdbd2cSJim Jagielski ArrayList<PropertyValue> aPropertyList = new ArrayList<PropertyValue>(); // set some properties for storeAsURL 488*b1cdbd2cSJim Jagielski 489*b1cdbd2cSJim Jagielski // PropertyValue aFileFormat = new PropertyValue(); 490*b1cdbd2cSJim Jagielski // aFileFormat.Name = "FilterName"; 491*b1cdbd2cSJim Jagielski // aFileFormat.Value = getFileFormat(_nType); 492*b1cdbd2cSJim Jagielski // aPropertyList.add(aFileFormat); 493*b1cdbd2cSJim Jagielski 494*b1cdbd2cSJim Jagielski PropertyValue aOverwrite = new PropertyValue(); // always overwrite already exist files 495*b1cdbd2cSJim Jagielski aOverwrite.Name = "Overwrite"; 496*b1cdbd2cSJim Jagielski aOverwrite.Value = Boolean.TRUE; 497*b1cdbd2cSJim Jagielski aPropertyList.add(aOverwrite); 498*b1cdbd2cSJim Jagielski 499*b1cdbd2cSJim Jagielski // store the document in an other directory 500*b1cdbd2cSJim Jagielski XStorable aStorable = UnoRuntime.queryInterface( XStorable.class, _xComponent); 501*b1cdbd2cSJim Jagielski if (aStorable != null) 502*b1cdbd2cSJim Jagielski { 503*b1cdbd2cSJim Jagielski GlobalLogWriter.println("store document as URL: '" + sOutputURL + "'"); 504*b1cdbd2cSJim Jagielski try 505*b1cdbd2cSJim Jagielski { 506*b1cdbd2cSJim Jagielski aStorable.storeAsURL(sOutputURL, PropertyHelper.createPropertyValueArrayFormArrayList(aPropertyList)); 507*b1cdbd2cSJim Jagielski } 508*b1cdbd2cSJim Jagielski catch (com.sun.star.io.IOException e) 509*b1cdbd2cSJim Jagielski { 510*b1cdbd2cSJim Jagielski GlobalLogWriter.println("ERROR: Exception caught"); 511*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Can't write document URL: '" + sOutputURL + "'"); 512*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Message: " + e.getMessage()); 513*b1cdbd2cSJim Jagielski } 514*b1cdbd2cSJim Jagielski } 515*b1cdbd2cSJim Jagielski return sBackPathName; 516*b1cdbd2cSJim Jagielski } 517*b1cdbd2cSJim Jagielski loadComponent(String _sName, Object _xComponent, ArrayList _aPropertyList)518*b1cdbd2cSJim Jagielski private XComponent loadComponent(String _sName, Object _xComponent, ArrayList _aPropertyList) 519*b1cdbd2cSJim Jagielski { 520*b1cdbd2cSJim Jagielski XComponent xDocComponent = null; 521*b1cdbd2cSJim Jagielski XComponentLoader xComponentLoader = UnoRuntime.queryInterface( XComponentLoader.class, _xComponent ); 522*b1cdbd2cSJim Jagielski 523*b1cdbd2cSJim Jagielski try 524*b1cdbd2cSJim Jagielski { 525*b1cdbd2cSJim Jagielski PropertyValue[] aLoadProperties = PropertyHelper.createPropertyValueArrayFormArrayList(_aPropertyList); 526*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Load component: '" + _sName + "'"); 527*b1cdbd2cSJim Jagielski xDocComponent = xComponentLoader.loadComponentFromURL(_sName, "_blank", FrameSearchFlag.ALL, aLoadProperties); 528*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Load component: '" + _sName + "' done"); 529*b1cdbd2cSJim Jagielski } 530*b1cdbd2cSJim Jagielski catch (com.sun.star.io.IOException e) 531*b1cdbd2cSJim Jagielski { 532*b1cdbd2cSJim Jagielski GlobalLogWriter.println("ERROR: Exception caught"); 533*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Can't load document '" + _sName + "'"); 534*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Message: " + e.getMessage()); 535*b1cdbd2cSJim Jagielski } 536*b1cdbd2cSJim Jagielski catch (com.sun.star.lang.IllegalArgumentException e) 537*b1cdbd2cSJim Jagielski { 538*b1cdbd2cSJim Jagielski GlobalLogWriter.println("ERROR: Exception caught"); 539*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Illegal Arguments given to loadComponentFromURL."); 540*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Message: " + e.getMessage()); 541*b1cdbd2cSJim Jagielski } 542*b1cdbd2cSJim Jagielski return xDocComponent; 543*b1cdbd2cSJim Jagielski } 544*b1cdbd2cSJim Jagielski closeComponent(XComponent _xDoc)545*b1cdbd2cSJim Jagielski private void closeComponent(XComponent _xDoc) 546*b1cdbd2cSJim Jagielski { 547*b1cdbd2cSJim Jagielski // Close the document 548*b1cdbd2cSJim Jagielski XCloseable xCloseable = UnoRuntime.queryInterface(XCloseable.class, _xDoc); 549*b1cdbd2cSJim Jagielski try 550*b1cdbd2cSJim Jagielski { 551*b1cdbd2cSJim Jagielski xCloseable.close(true); 552*b1cdbd2cSJim Jagielski } 553*b1cdbd2cSJim Jagielski catch (com.sun.star.util.CloseVetoException e) 554*b1cdbd2cSJim Jagielski { 555*b1cdbd2cSJim Jagielski GlobalLogWriter.println("ERROR: CloseVetoException caught"); 556*b1cdbd2cSJim Jagielski GlobalLogWriter.println("CloseVetoException occured Can't close document."); 557*b1cdbd2cSJim Jagielski GlobalLogWriter.println("Message: " + e.getMessage()); 558*b1cdbd2cSJim Jagielski } 559*b1cdbd2cSJim Jagielski } 560*b1cdbd2cSJim Jagielski 561*b1cdbd2cSJim Jagielski } 562