blob: 793c389f48e3b7b5038b7691be9a54a85a211146 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
import java.io.*;
import com.sun.star.comp.helper.RegistryServiceFactory;
import com.sun.star.comp.servicemanager.ServiceManager;
import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.lang.XServiceInfo;
import com.sun.star.lang.XComponent;
import com.sun.star.bridge.XUnoUrlResolver;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XComponentContext;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.XNameAccess;
import com.sun.star.sdbc.*;
import com.sun.star.sdbcx.Privilege;
import com.sun.star.sdb.CommandType;
import com.sun.star.sdb.XRowSetApproveBroadcaster;
public class RowSet
{
private static XComponentContext xContext = null;
private static XMultiComponentFactory xMCF = null;
public static void main(String argv[]) throws java.lang.Exception
{
try {
// get the remote office component context
xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
System.out.println("Connected to a running office ...");
xMCF = xContext.getServiceManager();
}
catch( Exception e) {
System.err.println("ERROR: can't get a component context from a running office ...");
e.printStackTrace(System.out);
System.exit(1);
}
try{
showRowSetEvents();
showRowSetRowCount();
showRowSetPrivileges();
useRowSet();
}
catch(com.sun.star.uno.Exception e)
{
System.err.println(e);
e.printStackTrace();
}
System.exit(0);
}
public static void printDataSources() throws com.sun.star.uno.Exception
{
// create a DatabaseContext and print all DataSource names
XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(
XNameAccess.class,
xMCF.createInstanceWithContext("com.sun.star.sdb.DatabaseContext",
xContext));
String aNames [] = xNameAccess.getElementNames();
for(int i=0;i<aNames.length;++i)
System.out.println(aNames[i]);
}
public static void useRowSet() throws com.sun.star.uno.Exception
{
// first we create our RowSet object
XRowSet xRowRes = (XRowSet)UnoRuntime.queryInterface(
XRowSet.class,
xMCF.createInstanceWithContext("com.sun.star.sdb.RowSet", xContext));
System.out.println("RowSet created!");
// set the properties needed to connect to a database
XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xRowRes);
xProp.setPropertyValue("DataSourceName","Bibliography");
xProp.setPropertyValue("Command","biblio");
xProp.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE));
xRowRes.execute();
System.out.println("RowSet executed!");
XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class,xRowRes);
xComp.dispose();
System.out.println("RowSet destroyed!");
}
public static void showRowSetPrivileges() throws com.sun.star.uno.Exception
{
// first we create our RowSet object
XRowSet xRowRes = (XRowSet)UnoRuntime.queryInterface(
XRowSet.class,
xMCF.createInstanceWithContext("com.sun.star.sdb.RowSet", xContext));
System.out.println("RowSet created!");
// set the properties needed to connect to a database
XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xRowRes);
xProp.setPropertyValue("DataSourceName","Bibliography");
xProp.setPropertyValue("Command","biblio");
xProp.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE));
xRowRes.execute();
System.out.println("RowSet executed!");
Integer aPriv = (Integer)xProp.getPropertyValue("Privileges");
int nPriv = aPriv.intValue();
if( (nPriv & Privilege.SELECT) == Privilege.SELECT)
System.out.println("SELECT");
if( (nPriv & Privilege.INSERT) == Privilege.INSERT)
System.out.println("INSERT");
if( (nPriv & Privilege.UPDATE) == Privilege.UPDATE)
System.out.println("UPDATE");
if( (nPriv & Privilege.DELETE) == Privilege.DELETE)
System.out.println("DELETE");
// now destroy the RowSet
XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class,xRowRes);
xComp.dispose();
System.out.println("RowSet destroyed!");
}
public static void showRowSetRowCount() throws com.sun.star.uno.Exception
{
// first we create our RowSet object
XRowSet xRowRes = (XRowSet)UnoRuntime.queryInterface(
XRowSet.class,
xMCF.createInstanceWithContext("com.sun.star.sdb.RowSet", xContext));
System.out.println("RowSet created!");
// set the properties needed to connect to a database
XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xRowRes);
xProp.setPropertyValue("DataSourceName","Bibliography");
xProp.setPropertyValue("Command","biblio");
xProp.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE));
xRowRes.execute();
System.out.println("RowSet executed!");
// now look if the RowCount is already final
System.out.println("The RowCount is final: " + xProp.getPropertyValue("IsRowCountFinal"));
XResultSet xRes = (XResultSet)UnoRuntime.queryInterface(XResultSet.class,xRowRes);
xRes.last();
System.out.println("The RowCount is final: " + xProp.getPropertyValue("IsRowCountFinal"));
System.out.println("There are " + xProp.getPropertyValue("RowCount") + " rows!");
// now destroy the RowSet
XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class,xRowRes);
xComp.dispose();
System.out.println("RowSet destroyed!");
}
public static void showRowSetEvents() throws com.sun.star.uno.Exception
{
// first we create our RowSet object
XRowSet xRowRes = (XRowSet)UnoRuntime.queryInterface(
XRowSet.class,
xMCF.createInstanceWithContext("com.sun.star.sdb.RowSet", xContext));
System.out.println("RowSet created!");
// add our Listener
System.out.println("Append our Listener!");
RowSetEventListener pRow = new RowSetEventListener();
XRowSetApproveBroadcaster xApBroad = (XRowSetApproveBroadcaster)UnoRuntime.queryInterface(XRowSetApproveBroadcaster.class,xRowRes);
xApBroad.addRowSetApproveListener(pRow);
xRowRes.addRowSetListener(pRow);
// set the properties needed to connect to a database
XPropertySet xProp = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class,xRowRes);
xProp.setPropertyValue("DataSourceName","Bibliography");
xProp.setPropertyValue("Command","biblio");
xProp.setPropertyValue("CommandType",new Integer(com.sun.star.sdb.CommandType.TABLE));
xRowRes.execute();
System.out.println("RowSet executed!");
// do some movements to check if we got all notifications
XResultSet xRes = (XResultSet)UnoRuntime.queryInterface(XResultSet.class,xRowRes);
System.out.println("beforeFirst");
xRes.beforeFirst();
// this should lead to no notifications because
// we should stand before the first row at the beginning
System.out.println("We stand before the first row: " + xRes.isBeforeFirst());
System.out.println("next");
xRes.next();
System.out.println("next");
xRes.next();
System.out.println("last");
xRes.last();
System.out.println("next");
xRes.next();
System.out.println("We stand after the last row: " + xRes.isAfterLast());
System.out.println("first");
xRes.first();
System.out.println("previous");
xRes.previous();
System.out.println("We stand before the first row: " + xRes.isBeforeFirst());
System.out.println("afterLast");
xRes.afterLast();
System.out.println("We stand after the last row: " + xRes.isAfterLast());
// now destroy the RowSet
XComponent xComp = (XComponent)UnoRuntime.queryInterface(XComponent.class,xRowRes);
xComp.dispose();
System.out.println("RowSet destroyed!");
}
}