1*ef39d40dSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*ef39d40dSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*ef39d40dSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*ef39d40dSAndrew Rist  * distributed with this work for additional information
6*ef39d40dSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*ef39d40dSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*ef39d40dSAndrew Rist  * "License"); you may not use this file except in compliance
9*ef39d40dSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*ef39d40dSAndrew Rist  *
11*ef39d40dSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*ef39d40dSAndrew Rist  *
13*ef39d40dSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*ef39d40dSAndrew Rist  * software distributed under the License is distributed on an
15*ef39d40dSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ef39d40dSAndrew Rist  * KIND, either express or implied.  See the License for the
17*ef39d40dSAndrew Rist  * specific language governing permissions and limitations
18*ef39d40dSAndrew Rist  * under the License.
19*ef39d40dSAndrew Rist  *
20*ef39d40dSAndrew Rist  *************************************************************/
21*ef39d40dSAndrew Rist 
22*ef39d40dSAndrew Rist 
23cdf0e10cSrcweir package basicrunner;
24cdf0e10cSrcweir 
25cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime;
26cdf0e10cSrcweir import com.sun.star.container.XSet;
27cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory;
28cdf0e10cSrcweir import com.sun.star.container.ElementExistException;
29cdf0e10cSrcweir import com.sun.star.lang.IllegalArgumentException;
30cdf0e10cSrcweir import com.sun.star.connection.ConnectionSetupException;
31cdf0e10cSrcweir import lib.TestParameters;
32cdf0e10cSrcweir import share.LogWriter;
33cdf0e10cSrcweir import basicrunner.basichelper.Connector;
34cdf0e10cSrcweir import basicrunner.basichelper.DocumentHandler;
35cdf0e10cSrcweir import basicrunner.basichelper.ThreadRunner;
36cdf0e10cSrcweir import basicrunner.basichelper.AttributeList;
37cdf0e10cSrcweir import basicrunner.basichelper.Filter;
38cdf0e10cSrcweir import basicrunner.basichelper.DispatchProviderInterceptor;
39cdf0e10cSrcweir 
40cdf0e10cSrcweir /**
41cdf0e10cSrcweir  * This class provides a BasicHandler. All classes for the communication with
42cdf0e10cSrcweir  * and handling of  the BASIC tests are instantiated and inserted int the
43cdf0e10cSrcweir  * MultiServiceFactory of StarOffice.
44cdf0e10cSrcweir  */
45cdf0e10cSrcweir public class BasicHandlerProvider {
46cdf0e10cSrcweir 
47cdf0e10cSrcweir     /** The BassicHandler **/
48cdf0e10cSrcweir     static BasicHandler oHandler = null;
49cdf0e10cSrcweir     /** The Connector **/
50cdf0e10cSrcweir     static Connector oConnector = null;
51cdf0e10cSrcweir     /** The DocumentHandler **/
52cdf0e10cSrcweir     static DocumentHandler oDocumentHandler = null;
53cdf0e10cSrcweir     /** The Thread Runner **/
54cdf0e10cSrcweir     static ThreadRunner oThreadRunner = null;
55cdf0e10cSrcweir     /** The AttributeList **/
56cdf0e10cSrcweir     static AttributeList oAttributeList = null;
57cdf0e10cSrcweir     /** The Filter **/
58cdf0e10cSrcweir     static Filter oFilter = null;
59cdf0e10cSrcweir     /** The DispatchProviderInterceptor **/
60cdf0e10cSrcweir     static DispatchProviderInterceptor oCeptor = null ;
61cdf0e10cSrcweir     /** The MultiServiceFactory from StarOffice **/
62cdf0e10cSrcweir     static XMultiServiceFactory MSF = null;
63cdf0e10cSrcweir     /** IS this a new connection or an existing one? **/
64cdf0e10cSrcweir     static boolean bIsNewConnection = true;
65cdf0e10cSrcweir 
66cdf0e10cSrcweir     /**
67cdf0e10cSrcweir      * Get a BasicHandler
68cdf0e10cSrcweir      * @param tParam Test parameters.
69cdf0e10cSrcweir      * @param log A log writer
70cdf0e10cSrcweir      * @return An instance of BasicHandler
71cdf0e10cSrcweir      */
getHandler(TestParameters tParam, LogWriter log)72cdf0e10cSrcweir     static public BasicHandler getHandler(TestParameters tParam, LogWriter log) {
73cdf0e10cSrcweir 
74cdf0e10cSrcweir         XMultiServiceFactory xMSF = (XMultiServiceFactory)tParam.getMSF();
75cdf0e10cSrcweir 
76cdf0e10cSrcweir         if (!xMSF.equals(MSF)) {
77cdf0e10cSrcweir             MSF = xMSF;
78cdf0e10cSrcweir             oHandler = new BasicHandler(tParam);
79cdf0e10cSrcweir             oConnector = new Connector();
80cdf0e10cSrcweir             oFilter = new Filter();
81cdf0e10cSrcweir             oDocumentHandler = new DocumentHandler();
82cdf0e10cSrcweir 	    oThreadRunner = new ThreadRunner(xMSF);
83cdf0e10cSrcweir             oCeptor = new DispatchProviderInterceptor() ;
84cdf0e10cSrcweir             oAttributeList = new AttributeList();
85cdf0e10cSrcweir             XSet xMSFSet = (XSet)UnoRuntime.queryInterface(XSet.class, xMSF);
86cdf0e10cSrcweir 
87cdf0e10cSrcweir             try {
88cdf0e10cSrcweir                 xMSFSet.insert(oHandler);
89cdf0e10cSrcweir                 xMSFSet.insert(oConnector);
90cdf0e10cSrcweir                 xMSFSet.insert(oFilter);
91cdf0e10cSrcweir                 xMSFSet.insert(oDocumentHandler);
92cdf0e10cSrcweir 		xMSFSet.insert(oThreadRunner);
93cdf0e10cSrcweir                 xMSFSet.insert(oCeptor);
94cdf0e10cSrcweir                 xMSFSet.insert(oAttributeList);
95cdf0e10cSrcweir             } catch (ElementExistException e) {
96cdf0e10cSrcweir                 System.out.println(e.toString());
97cdf0e10cSrcweir             } catch (IllegalArgumentException e) {
98cdf0e10cSrcweir                 System.out.println(e.toString());
99cdf0e10cSrcweir             }
100cdf0e10cSrcweir 
101cdf0e10cSrcweir             try {
102cdf0e10cSrcweir                 oHandler.Connect(util.utils.getFullURL((String)tParam.get("BASICBRIDGE")),
103cdf0e10cSrcweir                                                                tParam, xMSF, log);
104cdf0e10cSrcweir             } catch (ConnectionSetupException e) {
105cdf0e10cSrcweir                 System.out.println("Can't connect to BASIC !");
106cdf0e10cSrcweir             }
107cdf0e10cSrcweir 
108cdf0e10cSrcweir             bIsNewConnection = true;
109cdf0e10cSrcweir         } else {
110cdf0e10cSrcweir             bIsNewConnection = false;
111cdf0e10cSrcweir         }
112cdf0e10cSrcweir 
113cdf0e10cSrcweir         return oHandler;
114cdf0e10cSrcweir     }
115cdf0e10cSrcweir 
116cdf0e10cSrcweir     /**
117cdf0e10cSrcweir      * Is this a new connection?
118cdf0e10cSrcweir      * @return True, if the connection did not exist before.
119cdf0e10cSrcweir      */
isNewConnection()120cdf0e10cSrcweir     static public boolean isNewConnection() {
121cdf0e10cSrcweir         return bIsNewConnection;
122cdf0e10cSrcweir     }
123cdf0e10cSrcweir 
124cdf0e10cSrcweir     /**
125cdf0e10cSrcweir      * Dispose the BasicHandler
126cdf0e10cSrcweir      */
disposeHandler()127cdf0e10cSrcweir     static public void disposeHandler() {
128cdf0e10cSrcweir 
129cdf0e10cSrcweir         try {
130cdf0e10cSrcweir             if (oHandler != null) {
131cdf0e10cSrcweir                 oHandler.dispose();
132cdf0e10cSrcweir             }
133cdf0e10cSrcweir             if (MSF != null) {
134cdf0e10cSrcweir                 XSet xMSFSet = (XSet)UnoRuntime.queryInterface(XSet.class, MSF);
135cdf0e10cSrcweir                 xMSFSet.remove(oHandler);
136cdf0e10cSrcweir                 xMSFSet.remove(oFilter);
137cdf0e10cSrcweir                 xMSFSet.remove(oConnector);
138cdf0e10cSrcweir                 xMSFSet.remove(oDocumentHandler);
139cdf0e10cSrcweir 		xMSFSet.remove(oThreadRunner);
140cdf0e10cSrcweir                 xMSFSet.remove(oAttributeList);
141cdf0e10cSrcweir             }
142cdf0e10cSrcweir         } catch (Exception e){
143cdf0e10cSrcweir             System.out.println(e.toString());
144cdf0e10cSrcweir         }
145cdf0e10cSrcweir 
146cdf0e10cSrcweir         MSF = null;
147cdf0e10cSrcweir         oHandler = null;
148cdf0e10cSrcweir     }
149cdf0e10cSrcweir }
150