1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package ifc.document;
29 
30 import lib.MultiMethodTest;
31 import lib.Status;
32 import lib.StatusException;
33 
34 import com.sun.star.beans.XPropertySet;
35 import com.sun.star.document.XStandaloneDocumentInfo;
36 import com.sun.star.io.IOException;
37 import com.sun.star.uno.UnoRuntime;
38 
39 /**
40 * Testing <code>com.sun.star.document.XStandaloneDocumentInfo</code>
41 * interface methods. <p>
42 * This test needs the following object relations :
43 * <ul>
44 *  <li> <code>'DOCURL'</code> (of type <code>String</code>):
45 *   URL of document which info is loaded.</li>
46 * <ul> <p>
47 * Test is <b> NOT </b> multithread compilant. <p>
48 * @see com.sun.star.document.XStandaloneDocumentInfo
49 */
50 public class _XStandaloneDocumentInfo extends MultiMethodTest {
51 
52     public XStandaloneDocumentInfo oObj = null;
53     String url = null;
54 
55     protected void before() {
56         url = (String)tEnv.getObjRelation("DOCURL");
57         if (url == null) {
58             throw new StatusException
59                 (Status.failed("Relation 'DOCURL' not found"));
60         }
61     }
62 
63     String oldProp = null;
64     String newProp = null;
65     /**
66     * Sets new value of the property 'Author' and calls the method. <p>
67     * Has <b> OK </b> status if no exception occured.
68     */
69     public void _storeIntoURL() {
70         try {
71             oObj.loadFromURL(url);
72             XPropertySet propSet = (XPropertySet)
73                 UnoRuntime.queryInterface(XPropertySet.class, oObj);
74             oldProp = (String)propSet.getPropertyValue("Author");
75             newProp = oldProp + "_";
76             propSet.setPropertyValue("Author", newProp);
77 
78             oObj.storeIntoURL(url);
79             tRes.tested("storeIntoURL()", true);
80         } catch (IOException e) {
81             log.println("Couldn't store to " + url
82                     + " : " + e.getMessage());
83             e.printStackTrace(log);
84             tRes.tested("storeIntoURL()", false);
85         } catch(com.sun.star.lang.WrappedTargetException e) {
86             log.println("Couldn't get/set property 'Author':" + e);
87             tRes.tested("storeIntoURL()", false);
88         } catch(com.sun.star.beans.UnknownPropertyException e) {
89             log.println("Couldn't get/set property 'Author':" + e);
90             tRes.tested("storeIntoURL()", false);
91         } catch(com.sun.star.lang.IllegalArgumentException e) {
92             log.println("Couldn't get/set property 'Author':" + e);
93             tRes.tested("storeIntoURL()", false);
94         } catch(com.sun.star.beans.PropertyVetoException e) {
95             log.println("Couldn't get/set property 'Author':" + e);
96             tRes.tested("storeIntoURL()", false);
97         }
98     }
99 
100     /**
101     * Calls the method and checks value of the property 'Author'. <p>
102     * Has <b> OK </b> status if no exception occured and value of the property
103     * 'Author' is equal to value that was set in the method
104     * <code>storeIntoURL</code>.
105     */
106     public void _loadFromURL() {
107         requiredMethod("storeIntoURL()");
108         try {
109             oObj.loadFromURL(url);
110             XPropertySet propSet = (XPropertySet)
111                 UnoRuntime.queryInterface(XPropertySet.class, oObj);
112             String resProp = (String)propSet.getPropertyValue("Author");
113             log.println("Was: '" + oldProp + "',Set: '" + newProp +
114                         "', New: " + resProp + "'");
115             tRes.tested("loadFromURL()", resProp.equals(newProp) );
116         } catch (IOException e) {
117             log.println("Couldn't load from " + url
118                     + " : " + e.getMessage());
119             e.printStackTrace(log);
120             tRes.tested("loadFromURL()", false);
121         } catch(com.sun.star.lang.WrappedTargetException e) {
122             log.println("Couldn't get/set property 'Author':" + e);
123             tRes.tested("loadFromURL()", false);
124         } catch(com.sun.star.beans.UnknownPropertyException e) {
125             log.println("Couldn't get/set property 'Author':" + e);
126             tRes.tested("loadFromURL()", false);
127         }
128     }
129 
130 }  // finish class _XStandaloneDocumentInfo
131 
132