summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl')
-rw-r--r--offapi/com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl262
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
+