1ef39d40dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3ef39d40dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4ef39d40dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5ef39d40dSAndrew Rist * distributed with this work for additional information 6ef39d40dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7ef39d40dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8ef39d40dSAndrew Rist * "License"); you may not use this file except in compliance 9ef39d40dSAndrew Rist * with the License. You may obtain a copy of the License at 10ef39d40dSAndrew Rist * 11ef39d40dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12ef39d40dSAndrew Rist * 13ef39d40dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14ef39d40dSAndrew Rist * software distributed under the License is distributed on an 15ef39d40dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16ef39d40dSAndrew Rist * KIND, either express or implied. See the License for the 17ef39d40dSAndrew Rist * specific language governing permissions and limitations 18ef39d40dSAndrew Rist * under the License. 19ef39d40dSAndrew Rist * 20ef39d40dSAndrew Rist *************************************************************/ 21ef39d40dSAndrew Rist 22ef39d40dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package util; 25cdf0e10cSrcweir 26cdf0e10cSrcweir // access the implementations via names 27cdf0e10cSrcweir import com.sun.star.uno.XInterface; 28cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 29cdf0e10cSrcweir import com.sun.star.lang.XComponent; 30cdf0e10cSrcweir import com.sun.star.drawing.XControlShape; 31cdf0e10cSrcweir import com.sun.star.drawing.XDrawPage; 32cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 33cdf0e10cSrcweir import com.sun.star.awt.Size; 34cdf0e10cSrcweir import com.sun.star.awt.Point; 35cdf0e10cSrcweir import com.sun.star.awt.XControlModel; 36cdf0e10cSrcweir import com.sun.star.container.XNameContainer; 37cdf0e10cSrcweir import com.sun.star.container.XIndexContainer; 38cdf0e10cSrcweir import com.sun.star.form.XFormsSupplier; 39cdf0e10cSrcweir import com.sun.star.form.XForm; 40cdf0e10cSrcweir import com.sun.star.form.XLoadable; 41cdf0e10cSrcweir import com.sun.star.text.XTextDocument; 42cdf0e10cSrcweir import com.sun.star.beans.XPropertySet; 43cdf0e10cSrcweir import com.sun.star.uno.AnyConverter; 44cdf0e10cSrcweir import com.sun.star.uno.Type; 45cdf0e10cSrcweir 46cdf0e10cSrcweir /** 47cdf0e10cSrcweir * contains helper methods forms 48cdf0e10cSrcweir */ 49cdf0e10cSrcweir 50cdf0e10cSrcweir public class FormTools { 51cdf0e10cSrcweir 52cdf0e10cSrcweir 53cdf0e10cSrcweir /** 54cdf0e10cSrcweir * creates a XControlShape 55cdf0e10cSrcweir * 56cdf0e10cSrcweir * @param oDoc the document 57cdf0e10cSrcweir * @param height the height of the shape 58cdf0e10cSrcweir * @param width the width of the shape 59cdf0e10cSrcweir * @param x the x-position of the shape 60cdf0e10cSrcweir * @param y the y-position of the shape 61cdf0e10cSrcweir * @param kind the kind of the shape 62cdf0e10cSrcweir * @return the created XControlShape 63cdf0e10cSrcweir */ createControlShape( XComponent oDoc, int height, int width, int x, int y, String kind )64cdf0e10cSrcweir public static XControlShape createControlShape( XComponent oDoc, int height, 65cdf0e10cSrcweir int width, int x, int y, String kind ) { 66cdf0e10cSrcweir 67cdf0e10cSrcweir Size size = new Size(); 68cdf0e10cSrcweir Point position = new Point(); 69cdf0e10cSrcweir XControlShape oCShape = null; 70cdf0e10cSrcweir XControlModel aControl = null; 71cdf0e10cSrcweir 72cdf0e10cSrcweir //get MSF 73cdf0e10cSrcweir XMultiServiceFactory oDocMSF = (XMultiServiceFactory) 74cdf0e10cSrcweir UnoRuntime.queryInterface( XMultiServiceFactory.class, oDoc ); 75cdf0e10cSrcweir 76cdf0e10cSrcweir try{ 77cdf0e10cSrcweir Object oInt = oDocMSF.createInstance("com.sun.star.drawing.ControlShape"); 78cdf0e10cSrcweir Object aCon = oDocMSF.createInstance("com.sun.star.form.component."+kind); 79cdf0e10cSrcweir XPropertySet model_props = (XPropertySet) 80cdf0e10cSrcweir UnoRuntime.queryInterface(XPropertySet.class,aCon); 81cdf0e10cSrcweir model_props.setPropertyValue("DefaultControl","com.sun.star.form.control."+kind); 82cdf0e10cSrcweir aControl = (XControlModel) UnoRuntime.queryInterface( XControlModel.class, aCon ); 83cdf0e10cSrcweir oCShape = (XControlShape) UnoRuntime.queryInterface( XControlShape.class, oInt ); 84cdf0e10cSrcweir size.Height = height; 85cdf0e10cSrcweir size.Width = width; 86cdf0e10cSrcweir position.X = x; 87cdf0e10cSrcweir position.Y = y; 88cdf0e10cSrcweir oCShape.setSize(size); 89cdf0e10cSrcweir oCShape.setPosition(position); 90cdf0e10cSrcweir } catch ( com.sun.star.uno.Exception e ) { 91*30acf5e8Spfg // Some exception occured.FAILED 92cdf0e10cSrcweir System.out.println( "Couldn't create instance "+ e ); 93cdf0e10cSrcweir } 94cdf0e10cSrcweir 95cdf0e10cSrcweir oCShape.setControl(aControl); 96cdf0e10cSrcweir 97cdf0e10cSrcweir return oCShape; 98cdf0e10cSrcweir } // finish createControlShape 99cdf0e10cSrcweir createUnoControlShape( XComponent oDoc, int height, int width, int x, int y, String kind, String defControl )100cdf0e10cSrcweir public static XControlShape createUnoControlShape( XComponent oDoc, int height, 101cdf0e10cSrcweir int width, int x, int y, String kind, String defControl ) { 102cdf0e10cSrcweir 103cdf0e10cSrcweir Size size = new Size(); 104cdf0e10cSrcweir Point position = new Point(); 105cdf0e10cSrcweir XControlShape oCShape = null; 106cdf0e10cSrcweir XControlModel aControl = null; 107cdf0e10cSrcweir 108cdf0e10cSrcweir //get MSF 109cdf0e10cSrcweir XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface( XMultiServiceFactory.class, oDoc ); 110cdf0e10cSrcweir 111cdf0e10cSrcweir try{ 112cdf0e10cSrcweir Object oInt = oDocMSF.createInstance("com.sun.star.drawing.ControlShape"); 113cdf0e10cSrcweir Object aCon = oDocMSF.createInstance("com.sun.star.form.component."+kind); 114cdf0e10cSrcweir XPropertySet model_props = (XPropertySet) 115cdf0e10cSrcweir UnoRuntime.queryInterface(XPropertySet.class,aCon); 116cdf0e10cSrcweir model_props.setPropertyValue("DefaultControl","com.sun.star.awt."+defControl); 117cdf0e10cSrcweir aControl = (XControlModel) UnoRuntime.queryInterface( XControlModel.class, aCon ); 118cdf0e10cSrcweir oCShape = (XControlShape) UnoRuntime.queryInterface( XControlShape.class, oInt ); 119cdf0e10cSrcweir size.Height = height; 120cdf0e10cSrcweir size.Width = width; 121cdf0e10cSrcweir position.X = x; 122cdf0e10cSrcweir position.Y = y; 123cdf0e10cSrcweir oCShape.setSize(size); 124cdf0e10cSrcweir oCShape.setPosition(position); 125cdf0e10cSrcweir 126cdf0e10cSrcweir 127cdf0e10cSrcweir } catch ( com.sun.star.uno.Exception e ) { 128*30acf5e8Spfg // Some exception occured.FAILED 129cdf0e10cSrcweir System.out.println( "Couldn't create instance "+ e ); 130cdf0e10cSrcweir } 131cdf0e10cSrcweir 132cdf0e10cSrcweir oCShape.setControl(aControl); 133cdf0e10cSrcweir 134cdf0e10cSrcweir return oCShape; 135cdf0e10cSrcweir } // finish createControlShape 136cdf0e10cSrcweir createControlShapeWithDefaultControl( XComponent oDoc, int height, int width, int x, int y, String kind )137cdf0e10cSrcweir public static XControlShape createControlShapeWithDefaultControl( XComponent oDoc, int height, 138cdf0e10cSrcweir int width, int x, int y, String kind ) { 139cdf0e10cSrcweir 140cdf0e10cSrcweir Size size = new Size(); 141cdf0e10cSrcweir Point position = new Point(); 142cdf0e10cSrcweir XControlShape oCShape = null; 143cdf0e10cSrcweir XControlModel aControl = null; 144cdf0e10cSrcweir 145cdf0e10cSrcweir //get MSF 146cdf0e10cSrcweir XMultiServiceFactory oDocMSF = (XMultiServiceFactory) UnoRuntime.queryInterface( XMultiServiceFactory.class, oDoc ); 147cdf0e10cSrcweir 148cdf0e10cSrcweir try{ 149cdf0e10cSrcweir Object oInt = oDocMSF.createInstance("com.sun.star.drawing.ControlShape"); 150cdf0e10cSrcweir Object aCon = oDocMSF.createInstance("com.sun.star.form.component."+kind); 151cdf0e10cSrcweir 152cdf0e10cSrcweir aControl = (XControlModel) UnoRuntime.queryInterface( XControlModel.class, aCon ); 153cdf0e10cSrcweir oCShape = (XControlShape) UnoRuntime.queryInterface( XControlShape.class, oInt ); 154cdf0e10cSrcweir size.Height = height; 155cdf0e10cSrcweir size.Width = width; 156cdf0e10cSrcweir position.X = x; 157cdf0e10cSrcweir position.Y = y; 158cdf0e10cSrcweir oCShape.setSize(size); 159cdf0e10cSrcweir oCShape.setPosition(position); 160cdf0e10cSrcweir 161cdf0e10cSrcweir 162cdf0e10cSrcweir } catch ( com.sun.star.uno.Exception e ) { 163*30acf5e8Spfg // Some exception occured.FAILED 164cdf0e10cSrcweir System.out.println( "Couldn't create instance "+ e ); 165cdf0e10cSrcweir } 166cdf0e10cSrcweir 167cdf0e10cSrcweir oCShape.setControl(aControl); 168cdf0e10cSrcweir 169cdf0e10cSrcweir return oCShape; 170cdf0e10cSrcweir } // finish createControlShape 171cdf0e10cSrcweir createControl( XComponent oDoc, String kind )172cdf0e10cSrcweir public static XInterface createControl( XComponent oDoc, String kind ) { 173cdf0e10cSrcweir 174cdf0e10cSrcweir XInterface oControl = null; 175cdf0e10cSrcweir 176cdf0e10cSrcweir XMultiServiceFactory oDocMSF = (XMultiServiceFactory) 177cdf0e10cSrcweir UnoRuntime.queryInterface( XMultiServiceFactory.class, oDoc ); 178cdf0e10cSrcweir 179cdf0e10cSrcweir try{ 180cdf0e10cSrcweir oControl = (XInterface) oDocMSF.createInstance( 181cdf0e10cSrcweir "com.sun.star.form.component."+kind); 182cdf0e10cSrcweir } catch ( Exception e ) { 183*30acf5e8Spfg // Some exception occured.FAILED 184cdf0e10cSrcweir System.out.println( "Couldn't create instance "+ kind + ": "+ e ); 185cdf0e10cSrcweir } 186cdf0e10cSrcweir return oControl; 187cdf0e10cSrcweir } // finish createControl 188cdf0e10cSrcweir getForms( XDrawPage oDP )189cdf0e10cSrcweir public static XNameContainer getForms ( XDrawPage oDP ) 190cdf0e10cSrcweir { 191cdf0e10cSrcweir XFormsSupplier oFS = (XFormsSupplier) UnoRuntime.queryInterface( 192cdf0e10cSrcweir XFormsSupplier.class,oDP); 193cdf0e10cSrcweir return oFS.getForms(); 194cdf0e10cSrcweir } //finish getForms 195cdf0e10cSrcweir getIndexedForms( XDrawPage oDP )196cdf0e10cSrcweir public static XIndexContainer getIndexedForms ( XDrawPage oDP ) 197cdf0e10cSrcweir { 198cdf0e10cSrcweir XFormsSupplier oFS = (XFormsSupplier) UnoRuntime.queryInterface( 199cdf0e10cSrcweir XFormsSupplier.class,oDP); 200cdf0e10cSrcweir return (XIndexContainer)UnoRuntime.queryInterface( XIndexContainer.class, 201cdf0e10cSrcweir oFS.getForms() ); 202cdf0e10cSrcweir } //finish getIndexedForms 203cdf0e10cSrcweir insertForm( XComponent aDoc, XNameContainer Forms, String aName )204cdf0e10cSrcweir public static void insertForm ( XComponent aDoc, XNameContainer Forms, 205cdf0e10cSrcweir String aName ) { 206cdf0e10cSrcweir try { 207cdf0e10cSrcweir XInterface oControl = createControl(aDoc, "Form"); 208cdf0e10cSrcweir XForm oForm = (XForm) UnoRuntime.queryInterface(XForm.class, oControl); 209cdf0e10cSrcweir Forms.insertByName(aName,oForm); 210cdf0e10cSrcweir } catch ( Exception e ) { 211cdf0e10cSrcweir throw new IllegalArgumentException( "Couldn't insert Form" ); 212cdf0e10cSrcweir } 213cdf0e10cSrcweir } 214cdf0e10cSrcweir insertControlShape( XComponent oDoc, int height, int width, int x, int y, String kind )215cdf0e10cSrcweir public static XControlShape insertControlShape( XComponent oDoc, int height, 216cdf0e10cSrcweir int width, int x, int y, String kind ) { 217cdf0e10cSrcweir 218cdf0e10cSrcweir XControlShape aShape = createControlShape(oDoc,height,width,x,y,kind); 219cdf0e10cSrcweir XDrawPage oDP = DrawTools.getDrawPage(oDoc,0); 220cdf0e10cSrcweir DrawTools.getShapes(oDP).add(aShape); 221cdf0e10cSrcweir return aShape; 222cdf0e10cSrcweir } 223cdf0e10cSrcweir bindForm( XTextDocument aDoc )224cdf0e10cSrcweir public static XLoadable bindForm( XTextDocument aDoc ) { 225cdf0e10cSrcweir XLoadable formLoader = null; 226cdf0e10cSrcweir 227cdf0e10cSrcweir try { 228cdf0e10cSrcweir Object aForm = FormTools.getIndexedForms(WriterTools.getDrawPage(aDoc)).getByIndex(0); 229cdf0e10cSrcweir XForm the_form = null; 230cdf0e10cSrcweir try { 231cdf0e10cSrcweir the_form = (XForm) AnyConverter.toObject(new Type(XForm.class), aForm); 232cdf0e10cSrcweir } catch (com.sun.star.lang.IllegalArgumentException iae) { 233cdf0e10cSrcweir System.out.println("### Couldn't convert Any"); 234cdf0e10cSrcweir } 235cdf0e10cSrcweir XPropertySet formProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, the_form); 236cdf0e10cSrcweir formProps.setPropertyValue("DataSourceName","Bibliography"); 237cdf0e10cSrcweir formProps.setPropertyValue("Command","biblio"); 238cdf0e10cSrcweir formProps.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE)); 239cdf0e10cSrcweir formLoader = (XLoadable) UnoRuntime.queryInterface(XLoadable.class, the_form); 240cdf0e10cSrcweir } 241cdf0e10cSrcweir catch (Exception ex) { 242cdf0e10cSrcweir System.out.println("Exception: "+ex); 243cdf0e10cSrcweir ex.printStackTrace(System.out); 244cdf0e10cSrcweir } 245cdf0e10cSrcweir 246cdf0e10cSrcweir return formLoader; 247cdf0e10cSrcweir } 248cdf0e10cSrcweir 249cdf0e10cSrcweir /** 250cdf0e10cSrcweir * Binds <code>'Standard'</code> form of <code>aDoc</code> Writer document 251cdf0e10cSrcweir * to the <code>tableName</code> table of <code>sourceName</code> 252cdf0e10cSrcweir * Data Source. 253cdf0e10cSrcweir * @param aDoc Writer document where DB controls are added. 254cdf0e10cSrcweir * @param sourceName The name of DataSource in the <code>DatabaseContext</code>. 255cdf0e10cSrcweir * @param tableName The name of the table to which controls are bound. 256cdf0e10cSrcweir * @return <code>com.sun.star.form.component.DatabaseForm</code> service 257cdf0e10cSrcweir * implementation which is the bound form inside the document. 258cdf0e10cSrcweir */ bindForm( XTextDocument aDoc, String sourceName, String tableName )259cdf0e10cSrcweir public static XLoadable bindForm( XTextDocument aDoc, String sourceName, String tableName ) 260cdf0e10cSrcweir throws com.sun.star.uno.Exception { 261cdf0e10cSrcweir 262cdf0e10cSrcweir XForm the_form = (XForm) AnyConverter.toObject(new Type(XForm.class), 263cdf0e10cSrcweir FormTools.getIndexedForms(WriterTools.getDrawPage(aDoc)).getByIndex(0)); 264cdf0e10cSrcweir XPropertySet formProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, the_form); 265cdf0e10cSrcweir formProps.setPropertyValue("DataSourceName",sourceName); 266cdf0e10cSrcweir formProps.setPropertyValue("Command",tableName); 267cdf0e10cSrcweir formProps.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE)); 268cdf0e10cSrcweir 269cdf0e10cSrcweir return (XLoadable) UnoRuntime.queryInterface(XLoadable.class, the_form); 270cdf0e10cSrcweir } 271cdf0e10cSrcweir bindForm( XTextDocument aDoc, String formName )272cdf0e10cSrcweir public static XLoadable bindForm( XTextDocument aDoc, String formName ) { 273cdf0e10cSrcweir XLoadable formLoader = null; 274cdf0e10cSrcweir 275cdf0e10cSrcweir try { 276cdf0e10cSrcweir XForm the_form = (XForm) FormTools.getForms(WriterTools.getDrawPage(aDoc)).getByName(formName); 277cdf0e10cSrcweir XPropertySet formProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, the_form); 278cdf0e10cSrcweir formProps.setPropertyValue("DataSourceName","Bibliography"); 279cdf0e10cSrcweir formProps.setPropertyValue("Command","biblio"); 280cdf0e10cSrcweir formProps.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE)); 281cdf0e10cSrcweir formLoader = (XLoadable) UnoRuntime.queryInterface(XLoadable.class, the_form); 282cdf0e10cSrcweir } 283cdf0e10cSrcweir catch (Exception ex) { 284cdf0e10cSrcweir System.out.println("Exception: "+ex); 285cdf0e10cSrcweir ex.printStackTrace(System.out); 286cdf0e10cSrcweir } 287cdf0e10cSrcweir 288cdf0e10cSrcweir return formLoader; 289cdf0e10cSrcweir } 290cdf0e10cSrcweir 291cdf0e10cSrcweir /** 292cdf0e10cSrcweir * Binds the form with the name specified of <code>aDoc</code> Writer document 293cdf0e10cSrcweir * to the <code>tableName</code> table of <code>sourceName</code> 294cdf0e10cSrcweir * Data Source. 295cdf0e10cSrcweir * @param aDoc Writer document where DB controls are added. 296cdf0e10cSrcweir * @param formName The name of the form to be bound. 297cdf0e10cSrcweir * @param sourceName The name of DataSource in the <code>DatabaseContext</code>. 298cdf0e10cSrcweir * @param tableName The name of the table to which controls are bound. 299cdf0e10cSrcweir * @return <code>com.sun.star.form.component.DatabaseForm</code> service 300cdf0e10cSrcweir * implementation which is the bound form inside the document. 301cdf0e10cSrcweir */ bindForm( XTextDocument aDoc, String formName, String sourceName, String tableName)302cdf0e10cSrcweir public static XLoadable bindForm( XTextDocument aDoc, String formName, String sourceName, 303cdf0e10cSrcweir String tableName) throws com.sun.star.uno.Exception { 304cdf0e10cSrcweir 305cdf0e10cSrcweir XForm the_form = (XForm) AnyConverter.toObject(new Type(XForm.class), 306cdf0e10cSrcweir FormTools.getForms(WriterTools.getDrawPage(aDoc)).getByName(formName)); 307cdf0e10cSrcweir XPropertySet formProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, the_form); 308cdf0e10cSrcweir formProps.setPropertyValue("DataSourceName",sourceName); 309cdf0e10cSrcweir formProps.setPropertyValue("Command",tableName); 310cdf0e10cSrcweir formProps.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE)); 311cdf0e10cSrcweir 312cdf0e10cSrcweir return (XLoadable) UnoRuntime.queryInterface(XLoadable.class, the_form); 313cdf0e10cSrcweir } 314cdf0e10cSrcweir switchDesignOf(XMultiServiceFactory xMSF, XTextDocument aDoc)315cdf0e10cSrcweir public static void switchDesignOf(XMultiServiceFactory xMSF, XTextDocument aDoc) { 316cdf0e10cSrcweir try { 317cdf0e10cSrcweir com.sun.star.frame.XController aController = aDoc.getCurrentController(); 318cdf0e10cSrcweir com.sun.star.frame.XFrame aFrame = aController.getFrame(); 319cdf0e10cSrcweir com.sun.star.frame.XDispatchProvider aDispProv = (com.sun.star.frame.XDispatchProvider) 320cdf0e10cSrcweir UnoRuntime.queryInterface(com.sun.star.frame.XDispatchProvider.class,aFrame); 321cdf0e10cSrcweir com.sun.star.util.URL aURL = new com.sun.star.util.URL(); 322cdf0e10cSrcweir aURL.Complete = ".uno:SwitchControlDesignMode"; 323cdf0e10cSrcweir 324cdf0e10cSrcweir Object instance = xMSF.createInstance("com.sun.star.util.URLTransformer"); 325cdf0e10cSrcweir com.sun.star.util.XURLTransformer atrans = 326cdf0e10cSrcweir (com.sun.star.util.XURLTransformer)UnoRuntime.queryInterface( 327cdf0e10cSrcweir com.sun.star.util.XURLTransformer.class,instance); 328cdf0e10cSrcweir com.sun.star.util.URL[] aURLA = new com.sun.star.util.URL[1]; 329cdf0e10cSrcweir aURLA[0] = aURL; 330cdf0e10cSrcweir atrans.parseStrict(aURLA); 331cdf0e10cSrcweir aURL = aURLA[0]; 332cdf0e10cSrcweir 333cdf0e10cSrcweir com.sun.star.frame.XDispatch aDisp = (com.sun.star.frame.XDispatch)aDispProv.queryDispatch(aURL, "", 334cdf0e10cSrcweir com.sun.star.frame.FrameSearchFlag.SELF | 335cdf0e10cSrcweir com.sun.star.frame.FrameSearchFlag.CHILDREN); 336cdf0e10cSrcweir 337cdf0e10cSrcweir com.sun.star.beans.PropertyValue[] noArgs = new com.sun.star.beans.PropertyValue[0]; 338cdf0e10cSrcweir aDisp.dispatch(aURL, noArgs); 339cdf0e10cSrcweir } catch (Exception e) { 340cdf0e10cSrcweir System.out.println("******* Mist"); 341cdf0e10cSrcweir e.printStackTrace(); 342cdf0e10cSrcweir } 343cdf0e10cSrcweir } 344cdf0e10cSrcweir 345cdf0e10cSrcweir } 346