1eba4d44aSLiu Zhe /************************************************************** 2eba4d44aSLiu Zhe * 3eba4d44aSLiu Zhe * Licensed to the Apache Software Foundation (ASF) under one 4eba4d44aSLiu Zhe * or more contributor license agreements. See the NOTICE file 5eba4d44aSLiu Zhe * distributed with this work for additional information 6eba4d44aSLiu Zhe * regarding copyright ownership. The ASF licenses this file 7eba4d44aSLiu Zhe * to you under the Apache License, Version 2.0 (the 8eba4d44aSLiu Zhe * "License"); you may not use this file except in compliance 9eba4d44aSLiu Zhe * with the License. You may obtain a copy of the License at 10eba4d44aSLiu Zhe * 11eba4d44aSLiu Zhe * http://www.apache.org/licenses/LICENSE-2.0 12eba4d44aSLiu Zhe * 13eba4d44aSLiu Zhe * Unless required by applicable law or agreed to in writing, 14eba4d44aSLiu Zhe * software distributed under the License is distributed on an 15eba4d44aSLiu Zhe * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16eba4d44aSLiu Zhe * KIND, either express or implied. See the License for the 17eba4d44aSLiu Zhe * specific language governing permissions and limitations 18eba4d44aSLiu Zhe * under the License. 19eba4d44aSLiu Zhe */ 20*0afc47faSDongJun Zong package fvt.uno.ffc; 21eba4d44aSLiu Zhe 22eba4d44aSLiu Zhe import java.io.File; 23eba4d44aSLiu Zhe import java.io.FilenameFilter; 24eba4d44aSLiu Zhe import java.util.HashMap; 25eba4d44aSLiu Zhe import java.util.List; 26eba4d44aSLiu Zhe import java.util.Map; 27eba4d44aSLiu Zhe 28eba4d44aSLiu Zhe import junit.framework.Assert; 29eba4d44aSLiu Zhe 30eba4d44aSLiu Zhe import org.junit.After; 31eba4d44aSLiu Zhe import org.junit.Before; 32eba4d44aSLiu Zhe import org.junit.BeforeClass; 33eba4d44aSLiu Zhe import org.junit.Rule; 34eba4d44aSLiu Zhe import org.junit.Test; 35eba4d44aSLiu Zhe import org.junit.runner.RunWith; 36eba4d44aSLiu Zhe import org.openoffice.test.OpenOffice; 37eba4d44aSLiu Zhe import org.openoffice.test.common.FileProvider; 38eba4d44aSLiu Zhe import org.openoffice.test.common.FileProvider.FileRepos; 39eba4d44aSLiu Zhe import org.openoffice.test.common.FileUtil; 40eba4d44aSLiu Zhe import org.openoffice.test.common.Logger; 41eba4d44aSLiu Zhe import org.openoffice.test.common.SystemUtil; 42eba4d44aSLiu Zhe import org.openoffice.test.common.Testspace; 43eba4d44aSLiu Zhe import org.openoffice.test.uno.UnoApp; 44eba4d44aSLiu Zhe 45eba4d44aSLiu Zhe import com.sun.star.beans.PropertyValue; 46eba4d44aSLiu Zhe import com.sun.star.document.MacroExecMode; 47eba4d44aSLiu Zhe import com.sun.star.frame.XComponentLoader; 48eba4d44aSLiu Zhe import com.sun.star.frame.XStorable; 49eba4d44aSLiu Zhe import com.sun.star.io.IOException; 50eba4d44aSLiu Zhe import com.sun.star.lang.IllegalArgumentException; 51eba4d44aSLiu Zhe import com.sun.star.lang.XComponent; 52eba4d44aSLiu Zhe import com.sun.star.uno.UnoRuntime; 53eba4d44aSLiu Zhe /** 54eba4d44aSLiu Zhe * Pls place a suite file in directory "suite" which is same level with test uno. like bewlow 55eba4d44aSLiu Zhe * -suite 56eba4d44aSLiu Zhe * -testuno 57eba4d44aSLiu Zhe * The suite file content is like this format 58eba4d44aSLiu Zhe * ftp://user:password@192.168.0.1/public/sample/testsample.doc 59eba4d44aSLiu Zhe * .. 60eba4d44aSLiu Zhe * .. 61eba4d44aSLiu Zhe * ftp://user:password@192.168.0.1/public/sample/testsample2.doc 62eba4d44aSLiu Zhe *This script is used to test FFC by UNO API 63eba4d44aSLiu Zhe *It cover below scenario: 64eba4d44aSLiu Zhe *MS2003/2010 format->ODF format 65eba4d44aSLiu Zhe *New Saved ODF Format file -> MS 2003 Format 66eba4d44aSLiu Zhe *New Saved ODF Format file -> PDF 67eba4d44aSLiu Zhe * 68eba4d44aSLiu Zhe */ 69eba4d44aSLiu Zhe @RunWith(FileProvider.class) 70eba4d44aSLiu Zhe public class FFCTest { 71eba4d44aSLiu Zhe @Rule 72eba4d44aSLiu Zhe public Logger log = Logger.getLogger(this, false); 73eba4d44aSLiu Zhe 74eba4d44aSLiu Zhe private static final UnoApp app = new UnoApp(); 75eba4d44aSLiu Zhe private static Map<String, String> filterMap = new HashMap<String, String>(); 76eba4d44aSLiu Zhe @FileRepos 77eba4d44aSLiu Zhe public static String suiteDir = "../suite/"; 78eba4d44aSLiu Zhe private String fileURL = ""; 79eba4d44aSLiu Zhe private String operateFilePath = ""; 80eba4d44aSLiu Zhe private static Map<String, String> formatMap = new HashMap<String, String>(); 81eba4d44aSLiu Zhe private static File testSpaceFile = Testspace.getFile(); 82eba4d44aSLiu Zhe private boolean isSucceed = false; 83eba4d44aSLiu Zhe private static String tempFolder = testSpaceFile.getAbsolutePath() + File.separator + "temp"; 84eba4d44aSLiu Zhe 85eba4d44aSLiu Zhe private static String failedFilesDir = "output/failedSampleFiles/";; 86eba4d44aSLiu Zhe // @Parameters 87eba4d44aSLiu Zhe // public static Collection<String[]> data() throws Exception{ 88eba4d44aSLiu Zhe // initMap(); 89eba4d44aSLiu Zhe // ArrayList<String[]> list = new ArrayList<String[]>(); 90eba4d44aSLiu Zhe // List<String> suitePathList = new ArrayList<String>(); 91eba4d44aSLiu Zhe // FileReader fileReader = null; 92eba4d44aSLiu Zhe // BufferedReader reader = null; 93eba4d44aSLiu Zhe // File suites = new File(suiteDir); 94eba4d44aSLiu Zhe // if (suites.exists() && suites.list().length > 0) { 95eba4d44aSLiu Zhe // isSuiteFileExist = true; 96eba4d44aSLiu Zhe // for(File file: suites.listFiles()){ 97eba4d44aSLiu Zhe // if(FileUtil.getFileExtName(file.getName()).toLowerCase().equals("suite")){ 98eba4d44aSLiu Zhe // suitePathList.add(file.getAbsolutePath()); 99eba4d44aSLiu Zhe // } 100eba4d44aSLiu Zhe // } 101eba4d44aSLiu Zhe // try{ 102eba4d44aSLiu Zhe // for (String suitePath : suitePathList) { 103eba4d44aSLiu Zhe // fileReader = new FileReader(suitePath); 104eba4d44aSLiu Zhe // reader = new BufferedReader(fileReader); 105eba4d44aSLiu Zhe // String line = null; 106eba4d44aSLiu Zhe // while((line = reader.readLine()) != null){ 107eba4d44aSLiu Zhe // if (!"".equals(line)) { 108eba4d44aSLiu Zhe // list.add(new String[]{line}); 109eba4d44aSLiu Zhe // } 110eba4d44aSLiu Zhe // } 111eba4d44aSLiu Zhe // if(reader != null){ 112eba4d44aSLiu Zhe // reader.close(); 113eba4d44aSLiu Zhe // reader = null; 114eba4d44aSLiu Zhe // } 115eba4d44aSLiu Zhe // if(fileReader != null){ 116eba4d44aSLiu Zhe // fileReader.close(); 117eba4d44aSLiu Zhe // fileReader = null; 118eba4d44aSLiu Zhe // } 119eba4d44aSLiu Zhe // } 120eba4d44aSLiu Zhe // 121eba4d44aSLiu Zhe // }catch(Exception e){ 122eba4d44aSLiu Zhe // throw new Exception("throw exception when read suite file. " + e.getMessage()); 123eba4d44aSLiu Zhe // }finally{ 124eba4d44aSLiu Zhe // try{ 125eba4d44aSLiu Zhe // if(reader != null){ 126eba4d44aSLiu Zhe // reader.close(); 127eba4d44aSLiu Zhe // reader = null; 128eba4d44aSLiu Zhe // } 129eba4d44aSLiu Zhe // if(fileReader != null){ 130eba4d44aSLiu Zhe // fileReader.close(); 131eba4d44aSLiu Zhe // fileReader = null; 132eba4d44aSLiu Zhe // } 133eba4d44aSLiu Zhe // }catch(Exception io){ 134eba4d44aSLiu Zhe // } 135eba4d44aSLiu Zhe // } 136eba4d44aSLiu Zhe // } else {// run files from ffc data directory 137eba4d44aSLiu Zhe // File ffcDataHome = new File("data\\ffc"); 138eba4d44aSLiu Zhe // getFileList(ffcDataHome, list); 139eba4d44aSLiu Zhe // } 140eba4d44aSLiu Zhe // 141eba4d44aSLiu Zhe // return list; 142eba4d44aSLiu Zhe // } 143eba4d44aSLiu Zhe // 144eba4d44aSLiu Zhe public static void getFileList(File dir, List<String[]> list) { 145eba4d44aSLiu Zhe File[] files = dir.listFiles(new FilenameFilter() { 146eba4d44aSLiu Zhe @Override 147eba4d44aSLiu Zhe public boolean accept(File dir, String name) { 148eba4d44aSLiu Zhe File file = new File(dir.getAbsolutePath() + File.separator + name); 149eba4d44aSLiu Zhe String filename = new File(name).getName().toLowerCase(); 150eba4d44aSLiu Zhe boolean accept; 151eba4d44aSLiu Zhe if (file.isDirectory()) { 152eba4d44aSLiu Zhe accept = true; 153eba4d44aSLiu Zhe } else { 154eba4d44aSLiu Zhe accept = filename.endsWith(".docx") 155eba4d44aSLiu Zhe || filename.endsWith(".pptx") 156eba4d44aSLiu Zhe || filename.endsWith(".xlsx") 157eba4d44aSLiu Zhe || filename.endsWith(".ppt") 158eba4d44aSLiu Zhe || filename.endsWith(".xls") 159eba4d44aSLiu Zhe || filename.endsWith(".doc") ; 160eba4d44aSLiu Zhe } 161eba4d44aSLiu Zhe 162eba4d44aSLiu Zhe return accept; 163eba4d44aSLiu Zhe } 164eba4d44aSLiu Zhe 165eba4d44aSLiu Zhe }); 166eba4d44aSLiu Zhe if (files == null) 167eba4d44aSLiu Zhe return; 168eba4d44aSLiu Zhe 169eba4d44aSLiu Zhe for (File file : files) { 170eba4d44aSLiu Zhe if (file.isDirectory()) { 171eba4d44aSLiu Zhe getFileList(file, list); 172eba4d44aSLiu Zhe } else { 173eba4d44aSLiu Zhe list.add(new String[] {file.getAbsolutePath().replace(dir.getParentFile().getAbsolutePath(), "").replace("\\", "/")}); 174eba4d44aSLiu Zhe 175eba4d44aSLiu Zhe } 176eba4d44aSLiu Zhe } 177eba4d44aSLiu Zhe } 178eba4d44aSLiu Zhe 179eba4d44aSLiu Zhe public FFCTest(String url) { 180eba4d44aSLiu Zhe this.fileURL = url; 181eba4d44aSLiu Zhe } 182eba4d44aSLiu Zhe 183eba4d44aSLiu Zhe @BeforeClass 184eba4d44aSLiu Zhe public static void init() { 185eba4d44aSLiu Zhe initMap(); 186eba4d44aSLiu Zhe //Disable automation 187eba4d44aSLiu Zhe OpenOffice.getDefault().setAutomationPort(-1); 188eba4d44aSLiu Zhe OpenOffice.getDefault().addArgs("-invisible", "-conversionmode", "-headless", "-hidemenu"); 189eba4d44aSLiu Zhe 190eba4d44aSLiu Zhe File failedDirec = Testspace.getFile(failedFilesDir); 191eba4d44aSLiu Zhe failedDirec.mkdirs(); 192eba4d44aSLiu Zhe } 193eba4d44aSLiu Zhe 194eba4d44aSLiu Zhe @Before 195eba4d44aSLiu Zhe public void setUp() throws Exception { 196eba4d44aSLiu Zhe operateFilePath = Testspace.prepareData(fileURL); 197eba4d44aSLiu Zhe 198916c15c1SDongJun Zong 199eba4d44aSLiu Zhe app.start(); 200eba4d44aSLiu Zhe } 201eba4d44aSLiu Zhe @After 202eba4d44aSLiu Zhe public void tearDown() throws Exception { 203eba4d44aSLiu Zhe if (!isSucceed) { 204eba4d44aSLiu Zhe FileUtil.copyFile(operateFilePath, Testspace.getFile(failedFilesDir).getAbsolutePath()); 205eba4d44aSLiu Zhe FileUtil.appendStringToFile( Testspace.getFile(failedFilesDir + File.separator + "failedFiles.files").getAbsolutePath(), fileURL +"\r\n"); 206eba4d44aSLiu Zhe app.close(); 207eba4d44aSLiu Zhe SystemUtil.killProcess("WerFault.*"); 208eba4d44aSLiu Zhe SystemUtil.sleep(2); 209eba4d44aSLiu Zhe SystemUtil.killProcess("EQNEDT32.*"); 210eba4d44aSLiu Zhe //WerFault.exe 211eba4d44aSLiu Zhe //EQNEDT32.EXE 212eba4d44aSLiu Zhe } 213eba4d44aSLiu Zhe } 214eba4d44aSLiu Zhe 215eba4d44aSLiu Zhe 216eba4d44aSLiu Zhe 217916c15c1SDongJun Zong @Test(timeout=1000*60*10) 218eba4d44aSLiu Zhe public void exportTest() throws Exception { 219eba4d44aSLiu Zhe //MS Office Format ->ODF 220eba4d44aSLiu Zhe boolean flag = false; 221eba4d44aSLiu Zhe 222eba4d44aSLiu Zhe String saveAsODF = exportAsODF(operateFilePath); 223eba4d44aSLiu Zhe System.out.println("MS ->ODF finished"); 224eba4d44aSLiu Zhe //ODF->MS 225eba4d44aSLiu Zhe String savedMSFilePath = exportAsODF(saveAsODF); 226eba4d44aSLiu Zhe File savedMSFile = new File(savedMSFilePath); 227eba4d44aSLiu Zhe Assert.assertTrue("FFC Test for file : "+ savedMSFilePath, savedMSFile.exists()); 228eba4d44aSLiu Zhe System.out.println("ODF->MS Finished"); 229eba4d44aSLiu Zhe 230eba4d44aSLiu Zhe 231eba4d44aSLiu Zhe //Export ODF->PDF 232eba4d44aSLiu Zhe exportAsPDF(saveAsODF); 233eba4d44aSLiu Zhe System.out.println("ODF->PDF Finished"); 234eba4d44aSLiu Zhe flag = true; 235eba4d44aSLiu Zhe Assert.assertTrue("FFC Test for file : "+ operateFilePath, flag); 236eba4d44aSLiu Zhe isSucceed = true; 237eba4d44aSLiu Zhe } 238eba4d44aSLiu Zhe private String getSuffix(String file) { 239eba4d44aSLiu Zhe String lowerCaseName = file.toLowerCase(); 240eba4d44aSLiu Zhe String suffix = lowerCaseName.substring(lowerCaseName.lastIndexOf(".")); 241eba4d44aSLiu Zhe return suffix; 242eba4d44aSLiu Zhe } 243eba4d44aSLiu Zhe /** 244916c15c1SDongJun Zong * return the Export ODF file path 245eba4d44aSLiu Zhe * @throws IOException 246eba4d44aSLiu Zhe * @throws IllegalArgumentException 247eba4d44aSLiu Zhe */ 248eba4d44aSLiu Zhe private String exportAsODF(String testFile) throws IOException, IllegalArgumentException { 249eba4d44aSLiu Zhe XComponent document = loadSampleFile(testFile); 250916c15c1SDongJun Zong try { 251916c15c1SDongJun Zong Thread.sleep(2000); 252916c15c1SDongJun Zong } catch (InterruptedException e) { 253916c15c1SDongJun Zong e.printStackTrace(); 254916c15c1SDongJun Zong } 255eba4d44aSLiu Zhe String suffix = getSuffix(testFile); 256eba4d44aSLiu Zhe String filterName = filterMap.get(suffix); 257eba4d44aSLiu Zhe PropertyValue[] lProperties = null; 258eba4d44aSLiu Zhe lProperties = new PropertyValue[3]; 259eba4d44aSLiu Zhe lProperties[0] = new PropertyValue(); 260eba4d44aSLiu Zhe lProperties[0].Name = "FilterName"; 261eba4d44aSLiu Zhe lProperties[0].Value = filterName; 262eba4d44aSLiu Zhe lProperties[1] = new PropertyValue(); 263eba4d44aSLiu Zhe lProperties[1].Name = "Overwrite"; 264eba4d44aSLiu Zhe lProperties[1].Value = Boolean.TRUE; 265eba4d44aSLiu Zhe lProperties[2] = new PropertyValue(); 266eba4d44aSLiu Zhe lProperties[2].Name = "AsyncMode"; 267eba4d44aSLiu Zhe lProperties[2].Value = new Boolean(false); 268eba4d44aSLiu Zhe 269eba4d44aSLiu Zhe XStorable store = (XStorable) UnoRuntime.queryInterface(XStorable.class, document); 270eba4d44aSLiu Zhe File file = new File(testFile); 271eba4d44aSLiu Zhe String fileName = file.getName(); 272eba4d44aSLiu Zhe String saveAsFilePath = file.getParentFile().getAbsolutePath() + File.separator + fileName + "." + formatMap.get(suffix);//TODO 273eba4d44aSLiu Zhe store.storeAsURL(Testspace.getUrl(saveAsFilePath), lProperties); 274916c15c1SDongJun Zong try { 275916c15c1SDongJun Zong Thread.sleep(3000); 276916c15c1SDongJun Zong } catch (InterruptedException e) { 277916c15c1SDongJun Zong e.printStackTrace(); 278916c15c1SDongJun Zong } 279eba4d44aSLiu Zhe app.closeDocument(document); 280916c15c1SDongJun Zong try { 281916c15c1SDongJun Zong Thread.sleep(2000); 282916c15c1SDongJun Zong } catch (InterruptedException e) { 283916c15c1SDongJun Zong e.printStackTrace(); 284916c15c1SDongJun Zong } 285eba4d44aSLiu Zhe return saveAsFilePath; 286eba4d44aSLiu Zhe } 287eba4d44aSLiu Zhe 288eba4d44aSLiu Zhe private void exportAsPDF(String testFilePath) throws Exception { 289eba4d44aSLiu Zhe XComponent xComponent = loadSampleFile(testFilePath); 290eba4d44aSLiu Zhe XStorable xStorable = (XStorable) UnoRuntime.queryInterface( 291eba4d44aSLiu Zhe XStorable.class, xComponent); 292eba4d44aSLiu Zhe 293eba4d44aSLiu Zhe PropertyValue[] aMediaDescriptor = new PropertyValue[1]; 294eba4d44aSLiu Zhe aMediaDescriptor[0] = new PropertyValue(); 295eba4d44aSLiu Zhe aMediaDescriptor[0].Name = "FilterName"; 296eba4d44aSLiu Zhe aMediaDescriptor[0].Value = "writer_pdf_Export"; 297eba4d44aSLiu Zhe File file = new File(testFilePath); 298eba4d44aSLiu Zhe String fileName = file.getName(); 299eba4d44aSLiu Zhe String saveAsFilePath = file.getParentFile().getAbsolutePath() + File.separator + fileName + ".pdf" ; 300eba4d44aSLiu Zhe // export to pdf 301eba4d44aSLiu Zhe xStorable.storeToURL(Testspace.getUrl(saveAsFilePath), aMediaDescriptor); 302916c15c1SDongJun Zong try { 303916c15c1SDongJun Zong Thread.sleep(5000); 304916c15c1SDongJun Zong } catch (InterruptedException e) { 305916c15c1SDongJun Zong e.printStackTrace(); 306916c15c1SDongJun Zong } 307eba4d44aSLiu Zhe // close this document 308eba4d44aSLiu Zhe app.closeDocument(xComponent); 309eba4d44aSLiu Zhe File pdfFile = new File(saveAsFilePath); 310eba4d44aSLiu Zhe Assert.assertTrue("Verify sampe file " + testFilePath + " exprot to pdf!", pdfFile.exists()); 311eba4d44aSLiu Zhe } 312eba4d44aSLiu Zhe 313eba4d44aSLiu Zhe public static void initMap() { 314eba4d44aSLiu Zhe filterMap.put(".doc", "writer8"); 315eba4d44aSLiu Zhe filterMap.put(".docx", "writer8"); 316eba4d44aSLiu Zhe filterMap.put(".odt", "MS Word 97"); 317eba4d44aSLiu Zhe filterMap.put(".ppt", "impress8"); 318eba4d44aSLiu Zhe filterMap.put(".pptx", "impress8"); 319eba4d44aSLiu Zhe filterMap.put(".odp", "MS PowerPoint 97"); 320eba4d44aSLiu Zhe filterMap.put(".xls", "calc8"); 321eba4d44aSLiu Zhe filterMap.put(".xlsx", "calc8"); 322eba4d44aSLiu Zhe filterMap.put(".ods", "MS Excel 97"); 323eba4d44aSLiu Zhe 324eba4d44aSLiu Zhe formatMap.put(".doc", "odt"); 325eba4d44aSLiu Zhe formatMap.put(".docx", "odt"); 326eba4d44aSLiu Zhe formatMap.put(".odt", "doc"); 327eba4d44aSLiu Zhe 328eba4d44aSLiu Zhe formatMap.put(".ppt", "odp"); 329eba4d44aSLiu Zhe formatMap.put(".pptx", "odp"); 330eba4d44aSLiu Zhe formatMap.put(".odp", "ppt"); 331eba4d44aSLiu Zhe 332eba4d44aSLiu Zhe formatMap.put(".xls", "ods"); 333eba4d44aSLiu Zhe formatMap.put(".xlsx", "ods"); 334eba4d44aSLiu Zhe formatMap.put(".ods", "xls"); 335eba4d44aSLiu Zhe } 336eba4d44aSLiu Zhe private XComponent loadSampleFile(String filePath) throws IOException, IllegalArgumentException { 337eba4d44aSLiu Zhe if (!"".equals(filePath)) { 338eba4d44aSLiu Zhe PropertyValue[] loadProps = null; 339eba4d44aSLiu Zhe if (filePath.endsWith("x")) {//ooxml sample file 340eba4d44aSLiu Zhe loadProps = new PropertyValue[4]; 341eba4d44aSLiu Zhe loadProps[0] = new PropertyValue(); 342eba4d44aSLiu Zhe loadProps[0].Name = "Hidden"; 343eba4d44aSLiu Zhe loadProps[0].Value = Boolean.TRUE; 344eba4d44aSLiu Zhe loadProps[1] = new PropertyValue(); 345eba4d44aSLiu Zhe loadProps[1].Name = "FilterName"; 346eba4d44aSLiu Zhe String filePathLowCase = filePath.toLowerCase(); 347eba4d44aSLiu Zhe if(filePathLowCase.endsWith("docx")) { 348eba4d44aSLiu Zhe loadProps[1].Value = "MS Word 2007 XML"; 349eba4d44aSLiu Zhe } 350eba4d44aSLiu Zhe if(filePathLowCase.endsWith("pptx")){ 351eba4d44aSLiu Zhe loadProps[1].Value = "MS PowerPoint 2007 XML"; 352eba4d44aSLiu Zhe } 353eba4d44aSLiu Zhe if(filePathLowCase.endsWith("xlsx")) { 354eba4d44aSLiu Zhe loadProps[1].Value = "MS Excel 2007 XML"; 355eba4d44aSLiu Zhe } 356eba4d44aSLiu Zhe loadProps[2] = new PropertyValue(); 357eba4d44aSLiu Zhe loadProps[2].Name = "ReadOnly"; 358eba4d44aSLiu Zhe loadProps[2].Value = true; 359eba4d44aSLiu Zhe loadProps[3] = new PropertyValue(); 360eba4d44aSLiu Zhe loadProps[3].Name = "MacroExecutionMode"; 361eba4d44aSLiu Zhe loadProps[3].Value = MacroExecMode.NEVER_EXECUTE; 362eba4d44aSLiu Zhe } else { 363eba4d44aSLiu Zhe loadProps = new PropertyValue[3]; 364eba4d44aSLiu Zhe loadProps[0] = new PropertyValue(); 365eba4d44aSLiu Zhe loadProps[0].Name = "Hidden"; 366eba4d44aSLiu Zhe loadProps[0].Value = Boolean.TRUE; 367eba4d44aSLiu Zhe loadProps[1] = new PropertyValue(); 368eba4d44aSLiu Zhe loadProps[1].Name = "ReadOnly"; 369eba4d44aSLiu Zhe loadProps[1].Value = Boolean.TRUE; 370eba4d44aSLiu Zhe loadProps[2] = new PropertyValue(); 371eba4d44aSLiu Zhe loadProps[2].Name = "AsyncMode"; 372eba4d44aSLiu Zhe loadProps[2].Value = new Boolean(false); 373eba4d44aSLiu Zhe } 374eba4d44aSLiu Zhe 375eba4d44aSLiu Zhe String urlPath = Testspace.getUrl(filePath); 376eba4d44aSLiu Zhe XComponentLoader componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, app.getDesktop()); 377eba4d44aSLiu Zhe return componentLoader.loadComponentFromURL(urlPath, "_blank", 0, loadProps); 378eba4d44aSLiu Zhe } 379eba4d44aSLiu Zhe return null; 380eba4d44aSLiu Zhe } 381eba4d44aSLiu Zhe /** 382eba4d44aSLiu Zhe * the url is like this format: 383eba4d44aSLiu Zhe * ftp://user:password@192.168.0.1/public/sample/testsample.doc 384eba4d44aSLiu Zhe * @param url 385eba4d44aSLiu Zhe * @return 386eba4d44aSLiu Zhe */ 387eba4d44aSLiu Zhe public String downloadFile(String url) { 388eba4d44aSLiu Zhe File urlFile = new File( new File(url.replaceAll("%20", " ")).getName()); 389eba4d44aSLiu Zhe 390eba4d44aSLiu Zhe File tempFolderFile = new File(tempFolder); 391eba4d44aSLiu Zhe if (!tempFolderFile.exists()) { 392eba4d44aSLiu Zhe tempFolderFile.mkdir(); 393eba4d44aSLiu Zhe } 394eba4d44aSLiu Zhe String testFile = testSpaceFile.getAbsolutePath() + File.separator + "temp" + File.separator + urlFile.getName(); 395eba4d44aSLiu Zhe FileUtil.download(url, new File(testFile)); 396eba4d44aSLiu Zhe return testFile; 397eba4d44aSLiu Zhe } 398eba4d44aSLiu Zhe 399eba4d44aSLiu Zhe 400eba4d44aSLiu Zhe 401eba4d44aSLiu Zhe } 402