diff options
Diffstat (limited to 'offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl')
-rw-r--r-- | offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl b/offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl new file mode 100644 index 000000000000..96041b71e86b --- /dev/null +++ b/offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl @@ -0,0 +1,262 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef __com_sun_star_sdb_XSingleSelectQueryAnalyzer_idl__ +#define __com_sun_star_sdb_XSingleSelectQueryAnalyzer_idl__ + +#ifndef __com_sun_star_beans_XPropertySet_idl__ +#include <com/sun/star/beans/XPropertySet.idl> +#endif + +#ifndef __com_sun_star_beans_PropertyValue_idl__ +#include <com/sun/star/beans/PropertyValue.idl> +#endif + +#ifndef __com_sun_star_sdbc_SQLException_idl__ +#include <com/sun/star/sdbc/SQLException.idl> +#endif + +module com { module sun { module star { module container { +interface XIndexAccess; +};};};}; +//============================================================================= + + module com { module sun { module star { module sdb { + +//============================================================================= + +/** simplifies the analyzing of single select statements. + + <p> + The interface can be used for analyzing single SELECT statements without knowing the + structure of the used query. + </p> + */ +interface XSingleSelectQueryAnalyzer : com::sun::star::uno::XInterface +{ + + /** returns the query. + @returns + the query + */ + string getQuery(); + //------------------------------------------------------------------------- + + /** sets a new query for the composer, which may be expanded by filters, group by, having + and sort criteria. + @param command + the single select statement to set + @throws com::sun::star::sdbc::SQLException + if a database access error occurs + or the statement isn't a single select statement + or the statement isn't valid + or the statement can not be parsed. + */ + void setQuery([in] string command ) + raises (com::sun::star::sdbc::SQLException); + //------------------------------------------------------------------------- + // FILTER + //------------------------------------------------------------------------- + + /** returns the used filter. + <p> + The filter criteria returned is part of the where condition of the + select command, but it does not contain the where token. + </p> + @returns + the filter + */ + string getFilter(); + //------------------------------------------------------------------------- + + /** returns the currently used filter. + <p> + The filter criteria is split into levels. Each level represents the + OR criterias. Within each level, the filters are provided as an AND criteria + with the name of the column and the filter condition. The filter condition + is of type string. The operator used, is defined by <type scope="com::sun::star::sdb">SQLFilterOperator</type>. + </p> + @returns + the structured filter + */ + sequence< sequence<com::sun::star::beans::PropertyValue> > + getStructuredFilter(); + + //------------------------------------------------------------------------- + // GROUP BY + //------------------------------------------------------------------------- + + /** returns the currently used GROUP BY. + <p> + The group criteria returned is part of the GROUP BY clause of the + select command, but it does not contain the GROUP BY keyword . + </p> + @returns + the group + */ + string getGroup(); + + //------------------------------------------------------------------------- + /** returns the currently used group. + <p> + The columns returned form the GROUP BY clause. + </p> + @returns + a collection of <type scope="com::sun::star::sdb">GroupColumn</type> which form the GROUP BY. + */ + com::sun::star::container::XIndexAccess getGroupColumns(); + + //------------------------------------------------------------------------- + // HAVING + //------------------------------------------------------------------------- + + /** returns the used HAVING filter. + <p> + The HAVING filter criteria returned is part of the HAVING condition of the + select command, but it does not contain the HAVING token. + </p> + @returns + the filter + */ + string getHavingClause(); + //------------------------------------------------------------------------- + + /** returns the currently used HAVING filter. + <p> + The HAVING filter criteria is split into levels. Each level represents the + OR criterias. Within each level, the filters are provided as an AND criteria + with the name of the column and the filter condition. The filter condition + is of type string. The operator used, is defined by <type scope="com::sun::star::sdb">SQLFilterOperator</type>. + </p> + @returns + the structured HAVING filter + */ + sequence< sequence<com::sun::star::beans::PropertyValue> > + getStructuredHavingClause(); + + //------------------------------------------------------------------------- + // ORDER BY + //------------------------------------------------------------------------- + /** returns the currently used sort order. + <p> + The order criteria returned is part of the ORDER BY clause of the + select command, but it does not contain the ORDER BY keyword . + </p> + @returns + the order + */ + string getOrder(); + + //------------------------------------------------------------------------- + /** returns the currently used sort order. + <p> + The order criteria returned is part of the ORDER BY clause of the + select command, but it does not contain the ORDER BY keyword . + </p> + @returns + a collection of <type scope="com::sun::star::sdb">OrderColumn</type> which form the ORDER BY. + */ + com::sun::star::container::XIndexAccess getOrderColumns(); + + //------------------------------------------------------------------------- + /** returns the query previously set at the analyzer, with all application-level + features being substituted by their database-level counterparts. + + <p>The <type>XSingleSelectQueryAnalyzer</type> is an application-level component, + which in some respect understands SQL features usually not present at the database + level. As a prominent example, you might pass a <code>SELECT</code> statement to the analyzer + which is based on another query.</p> + + <p>While all other methods will handle those additional features transparently - e.g. + the query in the <code>FROM</code> part of a <code>SELECT</code> statement will be handled + as if it really is a table -, <code>getQueryWithSubstitution</code> gives you the SQL statement + where all those features have been stripped, and replaced with appropriate standard SQL.</p> + + <p>For example, consider a database document which contains a client-side query named <code>All Orders</code>. + This query is not known to the underlying database, so an SQL statement like + <code>SELECT * from "All Orders"</code> would be rejected by the database. However, instantiating + a <type>SingleSelectQueryAnalyzer</type> at the <type>Connection</type> object, and passing it the above query, + you can then use <code>getQueryWithSubstitution</code> to retrieve a statement where <code>"All Orders"</code> + has been replaced with the <code>SELECT</code> statement which actually constitutes the <code>"All Orders"</code> + query.</p> + + @throws com::sun::star::sdbc::SQLException + if the query represented cannot be completely substituted. A usual case for this is a recursion in + the sub queries: Consider a query named <code>foo</code>, which is defined as <code>SELECT * FROM "bar"</code>. + Now assume that <code>bar</code> is a query defined as <code>SELECT * FROM "foo"</code>. Passing either + of those statements to an analyzer, and calling <member>getQueryWithSubstitution</member>, would result + in an exception being thrown, since it's impossible to substitute the sub queries with their + constituting statements. + + @see Connection + @see XQueriesSupplier + @see DatabaseDocument + + @since OOo 2.0.4 + */ + string getQueryWithSubstitution() + raises (com::sun::star::sdbc::SQLException); + + /** sets a new query for the composer, which may be expanded by filters, group by, having + and sort criteria. + @param Command + is the command which should be executed, the type of command depends + on the CommandType. + + <p>In case of a <member>CommandType</member> of <member>CommandType::COMMAND</member>, + means in case the <member>Command</member> specifies an SQL statement, the inherited + <member scope="com::sun::star::sdbc">RowSet::EscapeProcessing</member> + becomes relevant:<br/> + It then can be to used to specify whether the SQL statement should be analyzed on the + client side before sending it to the database server.<br/> + The default value for <member scope="com::sun::star::sdbc">RowSet::EscapeProcessing</member> + is <TRUE/>. By switching it to <FALSE/>, you can pass backend-specific SQL statements, + which are not standard SQL, to your database.</p> + + @see com::sun::star::sdb::CommandType + @see com::sun::star::sdbc::RowSet::EscapeProcessing + @param CommandType + is the type of the command. + @see com::sun::star::sdb::CommandType + @throws com::sun::star::sdbc::SQLException + if a database access error occurs + or the statement isn't a single select statement + or the statement isn't valid + or the statement can not be parsed. + */ + void setCommand([in] string Command ,[in] long CommandType) + raises (com::sun::star::sdbc::SQLException); +}; + +//============================================================================= + +}; }; }; }; + +/*============================================================================= + +=============================================================================*/ +#endif + |