|
Hello! I'm working on this problem for a long time now, but
I can't get a solution. Maybe someone can help me. I want to add a new QueryDefinition to the
DefenitionContainer. It's an example from the OOo Developer Guide (12.2.2
DataSources - Adding and Editing Predefined Queries) The Method createQuerydefinition() which I'm using is
one-to-one from the CodeSamples.java (see code below) The Problem is that the last-but-one command returns
null (=> the xStore variable is null). When I look at the XQueryDefinitionsSupplier
interface at api.openoffice.org there is nothing about a support of XStorable.
But there should be one as the example of the DevelopersGuide and
CodeSamples.java explains. So how else can I retrieve the XStorable interface
and then store the query definition? Besides: I have read in the api reference that
XSingleServiceFactory is deprecated and it is recommended to use the
XSingleComponentFactory instead. So I alter the method (see code below) with this
code: XInterface nQuery =null;
try {
nQuery = (XInterface) xSingleFac.createInstanceWithContext(xContext);
} catch (Exception e) {System.out.println(e);}
XPropertySet xProp = (XPropertySet)
UnoRuntime.queryInterface(XPropertySet.class,nQuery); Here the NullPointerException is already thrown at
the [nQuery= ..........] line. I'm at my wits' end. I have read through the API 100
times but can't find a solution. Greets Stefan Code: public static void main(String[] args) { /********* create
service factory ******************************/ //get the remote
office component context
com.sun.star.uno.XComponentContext xContext = null;
com.sun.star.lang.XMultiComponentFactory xMCF = null; try {
xContext = com.sun.star.comp.helper.Bootstrap.bootstrap();
System.out.println("Connected to a running office ...");
//get the Service Factory xMCF
= xContext.getServiceManager(); } catch
(BootstrapException e) { e.printStackTrace(); }
/***************************************************************/ try {
createQuerydefinition(xContext, xMCF); } catch (Exception e)
{
e.printStackTrace(); } } public static void
createQuerydefinition(com.sun.star.uno.XComponentContext xContext,
com.sun.star.lang.XMultiComponentFactory xMCF) throws
com.sun.star.uno.Exception {
XNameAccess xNameAccess = (XNameAccess)UnoRuntime.queryInterface(
XNameAccess.class,
xMCF.createInstanceWithContext("com.sun.star.sdb.DatabaseContext",
xContext)); //
we use the first datasource
XQueryDefinitionsSupplier xQuerySup = (XQueryDefinitionsSupplier)
UnoRuntime.queryInterface(XQueryDefinitionsSupplier.class,
xNameAccess.getByName( "Bibliography" ));
XNameAccess xQDefs = xQuerySup.getQueryDefinitions(); //
create new query definition
XSingleServiceFactory xSingleFac = (XSingleServiceFactory)
UnoRuntime.queryInterface(XSingleServiceFactory.class, xQDefs);
XPropertySet xProp = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class,xSingleFac.createInstance());
xProp.setPropertyValue("Command","SELECT * FROM biblio");
xProp.setPropertyValue("EscapeProcessing",new Boolean(true));
XNameContainer xCont = (XNameContainer)
UnoRuntime.queryInterface(XNameContainer.class, xQDefs);
try
{
if ( xCont.hasByName("Query1") )
xCont.removeByName("Query1");
}
catch(com.sun.star.uno.Exception e)
{}
xCont.insertByName("Query1",xProp);
XStorable xStore =
(XStorable)UnoRuntime.queryInterface(XStorable.class,xQuerySup);
System.out.println(xStore);
xStore.store();
} |
- [api-dev] Problem to create ... Stefan Schmid
- Re: [api-dev] Problem t... Frank Schönheit - Sun Microsystems Germa ny
