Tag: cws_dev300_dba31c User: fs Date: 2008-09-12 18:54:55+0000 Modified: dba/connectivity/qa/connectivity/tools/HsqlDatabase.java
Log: #i93737# allow creating the object with an existing database document (given by URL) File Changes: Directory: /dba/connectivity/qa/connectivity/tools/ =================================================== File [changed]: HsqlDatabase.java Url: http://dba.openoffice.org/source/browse/dba/connectivity/qa/connectivity/tools/HsqlDatabase.java?r1=1.5.16.2&r2=1.5.16.3 Delta lines: +31 -6 -------------------- --- HsqlDatabase.java 2008-09-12 10:42:43+0000 1.5.16.2 +++ HsqlDatabase.java 2008-09-12 18:54:52+0000 1.5.16.3 @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: HsqlDatabase.java,v $ - * $Revision: 1.5.16.2 $ + * $Revision: 1.5.16.3 $ * * This file is part of OpenOffice.org. * @@ -33,6 +33,7 @@ import com.sun.star.beans.PropertyValue; import com.sun.star.beans.XPropertySet; import com.sun.star.container.ElementExistException; +import com.sun.star.container.XNameAccess; import com.sun.star.frame.XStorable; import com.sun.star.frame.XModel; import com.sun.star.lang.XMultiServiceFactory; @@ -45,9 +46,11 @@ import com.sun.star.sdbcx.XTablesSupplier; import com.sun.star.uno.UnoRuntime; import com.sun.star.io.IOException; +import com.sun.star.sdb.XDocumentDataSource; import java.io.File; import com.sun.star.util.CloseVetoException; +import helper.URLHelper; import java.util.HashMap; import java.util.Iterator; import java.util.Set; @@ -70,29 +73,51 @@ // the default connection XConnection m_connection; - /** Creates a new instance of HsqlDatabase */ + // -------------------------------------------------------------------------------------------------------- public HsqlDatabase( XMultiServiceFactory orb ) throws Exception { m_orb = orb; createDBDocument(); } + // -------------------------------------------------------------------------------------------------------- + public HsqlDatabase( XMultiServiceFactory orb, String _existingDocumentURL ) throws Exception + { + m_orb = orb; + createDBDocument( _existingDocumentURL ); + } + + // -------------------------------------------------------------------------------------------------------- + private void createDBDocument( String _docURL ) throws Exception + { + m_databaseDocumentFile = _docURL; + + XNameAccess dbContext = (XNameAccess)UnoRuntime.queryInterface( XNameAccess.class, + m_orb.createInstance( "com.sun.star.sdb.DatabaseContext" ) ); + XDocumentDataSource dataSource = (XDocumentDataSource)UnoRuntime.queryInterface( XDocumentDataSource.class, + dbContext.getByName( _docURL ) ); + + m_databaseDocument = dataSource.getDatabaseDocument(); + m_dataSource = new DataSource( m_orb, m_databaseDocument.getDataSource() ); + } + + /** creates an empty database document in a temporary location + */ private void createDBDocument() throws Exception { - m_databaseDocumentFile = new String(); File documentFile = File.createTempFile("testdb",".odb"); documentFile.deleteOnExit(); - - m_databaseDocumentFile = documentFile.getAbsoluteFile().toURL().toString(); + m_databaseDocumentFile = URLHelper.getFileURLFromSystemPath( documentFile ); m_databaseDocument = (XOfficeDatabaseDocument)UnoRuntime.queryInterface( XOfficeDatabaseDocument.class, m_orb.createInstance( "com.sun.star.sdb.OfficeDatabaseDocument" ) ); m_dataSource = new DataSource( m_orb, m_databaseDocument.getDataSource() ); + XPropertySet dsProperties = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, m_databaseDocument.getDataSource() ); dsProperties.setPropertyValue("URL", "sdbc:embedded:hsqldb"); XStorable storable = (XStorable)UnoRuntime.queryInterface( XStorable.class, m_databaseDocument ); - storable.storeAsURL(m_databaseDocumentFile,new PropertyValue[]{}); + storable.storeAsURL( m_databaseDocumentFile, new PropertyValue[]{} ); } /** returns a connection to the database --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]