1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package mod._sc;
25 
26 import java.io.PrintWriter;
27 
28 import lib.StatusException;
29 import lib.TestCase;
30 import lib.TestEnvironment;
31 import lib.TestParameters;
32 import util.SOfficeFactory;
33 
34 import com.sun.star.beans.XPropertySet;
35 import com.sun.star.container.XEnumerationAccess;
36 import com.sun.star.container.XIndexAccess;
37 import com.sun.star.lang.XComponent;
38 import com.sun.star.lang.XMultiServiceFactory;
39 import com.sun.star.sheet.XSheetLinkable;
40 import com.sun.star.sheet.XSpreadsheet;
41 import com.sun.star.sheet.XSpreadsheetDocument;
42 import com.sun.star.sheet.XSpreadsheets;
43 import com.sun.star.uno.AnyConverter;
44 import com.sun.star.uno.Type;
45 import com.sun.star.uno.UnoRuntime;
46 import com.sun.star.uno.XInterface;
47 
48 public class ScIndexEnumeration_SheetLinksEnumeration extends TestCase {
49     static XSpreadsheetDocument xSheetDoc = null;
50 
51     /**
52     * Creates Spreadsheet document.
53     */
initialize( TestParameters tParam, PrintWriter log )54     protected void initialize( TestParameters tParam, PrintWriter log ) {
55         SOfficeFactory SOF = SOfficeFactory.getFactory( (XMultiServiceFactory)tParam.getMSF() );
56 
57         try {
58             log.println( "creating a Spreadsheet document" );
59             xSheetDoc = SOF.createCalcDoc(null);
60         } catch ( com.sun.star.uno.Exception e ) {
61             // Some exception occures.FAILED
62             e.printStackTrace( log );
63             throw new StatusException( "Couldn't create document", e );
64         }
65     }
66 
67     /**
68     * Disposes Spreadsheet document.
69     */
cleanup( TestParameters tParam, PrintWriter log )70     protected void cleanup( TestParameters tParam, PrintWriter log ) {
71         log.println( "    disposing xSheetDoc " );
72         XComponent oComp = (XComponent)
73             UnoRuntime.queryInterface(XComponent.class, xSheetDoc) ;
74         util.DesktopTools.closeDoc(oComp);
75     }
76 
createTestEnvironment(TestParameters Param, PrintWriter log)77     protected synchronized TestEnvironment createTestEnvironment(TestParameters Param, PrintWriter log) {
78 
79         XInterface oObj = null;
80 
81         // creation of testobject here
82         // first we write what we are intend to do to log file
83         log.println( "Creating a test environment" );
84         XSpreadsheet oSheet = null;
85 
86         log.println("Getting test object ") ;
87         XSpreadsheets oSheets = xSheetDoc.getSheets() ;
88         XIndexAccess oIndexAccess = (XIndexAccess)
89             UnoRuntime.queryInterface(XIndexAccess.class, oSheets);
90         try {
91             oSheet = (XSpreadsheet) AnyConverter.toObject(
92                     new Type(XSpreadsheet.class),oIndexAccess.getByIndex(0));
93         } catch (com.sun.star.lang.WrappedTargetException e) {
94             e.printStackTrace(log);
95             throw new StatusException( "Couldn't get a spreadsheet", e);
96         } catch (com.sun.star.lang.IndexOutOfBoundsException e) {
97             e.printStackTrace(log);
98             throw new StatusException( "Couldn't get a spreadsheet", e);
99         } catch (com.sun.star.lang.IllegalArgumentException e) {
100             e.printStackTrace(log);
101             throw new StatusException( "Couldn't get a spreadsheet", e);
102         }
103 
104         XSheetLinkable SL = (XSheetLinkable)
105             UnoRuntime.queryInterface(XSheetLinkable.class, oSheet);
106 
107         // creating link.
108         String aSourceArea = util.utils.getFullTestURL("calcshapes.sxc");
109         SL.link(aSourceArea, "Sheet1", "", "",
110             com.sun.star.sheet.SheetLinkMode.VALUE);
111 
112         // Getting links.
113         XPropertySet docProps = (XPropertySet)
114             UnoRuntime.queryInterface(XPropertySet.class, xSheetDoc);
115 
116         Object links = null;
117         try {
118             links = docProps.getPropertyValue("SheetLinks");
119         } catch(com.sun.star.lang.WrappedTargetException e){
120             e.printStackTrace(log);
121             throw new StatusException("Couldn't get SheetLinks", e);
122         } catch(com.sun.star.beans.UnknownPropertyException e){
123             e.printStackTrace(log);
124             throw new StatusException("Couldn't get SheetLinks", e);
125         }
126 
127         oObj = (XInterface)UnoRuntime.queryInterface(XInterface.class, links);
128 
129         XEnumerationAccess ea = (XEnumerationAccess)
130                     UnoRuntime.queryInterface(XEnumerationAccess.class,oObj);
131 
132         oObj = ea.createEnumeration();
133 
134         log.println("ImplementationName: "+util.utils.getImplName(oObj));
135         // creating test environment
136         TestEnvironment tEnv = new TestEnvironment( oObj );
137 
138         tEnv.addObjRelation("ENUM",ea);
139 
140         return tEnv;
141     }
142 
143 }
144 
145