summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl')
-rw-r--r--offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl274
1 files changed, 274 insertions, 0 deletions
diff --git a/offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl b/offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl
new file mode 100644
index 000000000000..2bd5270adee8
--- /dev/null
+++ b/offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl
@@ -0,0 +1,274 @@
+/*************************************************************************
+ *
+ * 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_XSingleSelectQueryComposer_idl__
+#define __com_sun_star_sdb_XSingleSelectQueryComposer_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
+
+#ifndef __com_sun_star_sdb_XSingleSelectQueryAnalyzer_idl__
+#include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl>
+#endif
+
+//=============================================================================
+
+ module com { module sun { module star { module sdb {
+
+//=============================================================================
+
+/** simplifies the composing of single select statements.
+
+ <p>
+ The interface can be used for composing single SELECT statements without knowing the
+ structure of the used query.
+ </p>
+
+ @see com::sun::star::sdb::SingleSelectQueryComposer
+ */
+interface XSingleSelectQueryComposer: XSingleSelectQueryAnalyzer
+{
+ //-------------------------------------------------------------------------
+ // FILTER
+ //-------------------------------------------------------------------------
+
+ /** makes it possible to set a filter condition for the query.
+ @param filter
+ the filter to set
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs
+ or the statement isn't valid
+ or the statement isn't parsable.
+ */
+ void setFilter([in] string filter)
+ raises (com::sun::star::sdbc::SQLException);
+ //-------------------------------------------------------------------------
+
+ /** appends a new set of filter criteria which is split into levels.
+ @param filter
+ The filter criteria is split into levels. Each level represents the
+ OR criteria. 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>.
+
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void setStructuredFilter([in] sequence< sequence<com::sun::star::beans::PropertyValue> > filter)
+ raises (com::sun::star::sdbc::SQLException,com::sun::star::lang::IllegalArgumentException);
+ //-------------------------------------------------------------------------
+
+ /** appends a new filter condition by a
+ <type scope="com::sun::star::sdb">DataColumn</type>
+ providing the name and the value for the filter.
+ The value property must be supported by the <type scope="com::sun::star::sdb">DataColumn</type>.
+ @param column
+ the column which is used to create a filter
+ @param andCriteria
+ If <TRUE/> the filter condition will be appended as an AND condition, otherwise
+ the new filter condition will be appended as OR criteria.
+ E.g. (xx AND bb AND cc) OR newCriteria
+ @param filterOperator
+ The operator used, is defined by <type scope="com::sun::star::sdb">SQLFilterOperator</type>.
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void appendFilterByColumn([in] com::sun::star::beans::XPropertySet column,[in] boolean andCriteria,[in] long filterOperator)
+ raises (com::sun::star::sdbc::SQLException);
+
+ //-------------------------------------------------------------------------
+ // GROUP BY
+ //-------------------------------------------------------------------------
+
+
+ /** makes it possible to set a group for the query.
+ @param group
+ the group part to set
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs
+ or the statement isn't valid
+ or the statement isn't parsable.
+ */
+ void setGroup([in] string group)
+ raises (com::sun::star::sdbc::SQLException);
+
+ //-------------------------------------------------------------------------
+
+ /** appends an additional part to the group criteria of the select
+ statement. The column must be a <type scope="com::sun::star::sdbcx">Column</type>.
+ @param column
+ the column which is used to create a group part
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void appendGroupByColumn([in] com::sun::star::beans::XPropertySet column)
+ raises (com::sun::star::sdbc::SQLException);
+
+ //-------------------------------------------------------------------------
+ // HAVING
+ //-------------------------------------------------------------------------
+
+ /** makes it possible to set a HAVING filter condition for the query.
+ @param filter
+ the filter to set
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs
+ or the statement isn't valid
+ or the statement isn't parsable.
+ */
+ void setHavingClause([in] string filter)
+ raises (com::sun::star::sdbc::SQLException);
+
+ //-------------------------------------------------------------------------
+
+ /** appends a new set of HAVING filter criteria which is split into levels.
+ @param filter
+ The HAVING filter criteria is split into levels. Each level represents the
+ OR criteria. 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>.
+
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void setStructuredHavingClause([in] sequence< sequence<com::sun::star::beans::PropertyValue> > filter)
+ raises (com::sun::star::sdbc::SQLException);
+ //-------------------------------------------------------------------------
+
+ /** appends a new HAVING filter condition by a
+ <type scope="com::sun::star::sdb">DataColumn</type>
+ providing the name and the value for the filter.
+ @param column
+ the column which is used to create a filter
+ @param andCriteria
+ If <TRUE/> the filter condition will be appended as an AND condition, otherwise
+ the new filter condition will be appended as OR criteria.
+ E.g. (xx AND bb AND cc) OR newCriteria
+ @param filterOperator
+ The operator used, is defined by <type scope="com::sun::star::sdb">SQLFilterOperator</type>.
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void appendHavingClauseByColumn([in] com::sun::star::beans::XPropertySet column,[in] boolean andCriteria,[in] long filterOperator)
+ raises (com::sun::star::sdbc::SQLException);
+
+ //-------------------------------------------------------------------------
+ // ORDER BY
+ //-------------------------------------------------------------------------
+
+ /** makes it possible to set a sort condition for the query.
+ @param order
+ the order part to set
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs
+ or the order isn't valid
+ or the statement isn't parsable.
+ */
+ void setOrder([in] string order)
+ raises (com::sun::star::sdbc::SQLException);
+
+ //-------------------------------------------------------------------------
+
+ /** appends an additional part to the sort order criteria of the select
+ statement. The column must be a <type scope="com::sun::star::sdbcx">Column</type>.
+ @param column
+ the column which is used to create a order part
+ @param ascending
+ <TRUE/> when the order should be ascending, otherwise if <FALSE/> descending.
+ @throws com::sun::star::sdbc::SQLException
+ if a database access error occurs.
+ */
+ void appendOrderByColumn([in] com::sun::star::beans::XPropertySet column,
+ [in] boolean ascending)
+ raises (com::sun::star::sdbc::SQLException);
+
+ //-------------------------------------------------------------------------
+ // cumulative composing
+ //-------------------------------------------------------------------------
+
+ /** sets a new elementary query for the composer
+
+ <p>An elementary query or statement is a (single select) statement whose parts are
+ not covered by the various set and get methods of the composer. That is, if the
+ elementary statement contains a filter clause, a call to
+ <member>XSingleSelectQueryAnalyzer::getFilter</member> will not return you this
+ filter. Instead, only filters which have been set using for instance <member>setFilter</member>
+ are covered by the get methods.</p>
+
+ <p>The only methods which take all parts of the elementary statement into account are
+ <member>XSingleSelectQueryAnalyzer::getQuery</member> and
+ <member>XSingleSelectQueryAnalyzer::getQueryWithSubstitution</member>, which always returns
+ the complete composed query.</p>
+
+ <p>As a result, you can use the composer to build cumulative filter expressions. That
+ is, you can set <member>ElementaryQuery</member> to a statement already containing
+ filters, and then use <member>setFilter</member> to append additional filters.</p>
+
+ <p>The very same holds for sort orders, <code>HAVING</code> and <code>GROUP BY</code>
+ clauses.</p>
+
+ <p>There are various use cases for this. For instance, you might want to use the
+ statement represented by a <type>QueryDefinition</type>, and extend it with additional
+ filters or sort orders, while not touching the respective parts already present
+ in <member>QueryDefinition::Command</member>. This can be achieved by setting the
+ <member>QueryDefinition::Command</member> as <member>ElementaryQuery</member> of a
+ <type>SingleSelectQueryComposer</type>.</p>
+
+ <p>If, in such a scenario, you would be interested in the filter part of the
+ <member>QueryDefinition::Command</member>, you would set it via
+ <member>XSingleSelectQueryAnalyzer::setQuery</member>, and retrieve the filter
+ part via <member>XSingleSelectQueryAnalyzer::getFilter</member>.</p>
+
+ <p>If you'd be interested in the composed filter, you would set the
+ <member>QueryDefinition::Command</member> as <member>ElementaryQuery</member>, add your
+ filter, and propagate the resulting query (<member>XSingleSelectQueryAnalyzer::getQuery</member>)
+ to an <type>SingleSelectQueryAnalyzer</type> instance via
+ <member>XSingleSelectQueryAnalyzer::setQuery</member>.</p>
+ */
+ [attribute] string ElementaryQuery
+ {
+ set raises (com::sun::star::sdbc::SQLException);
+ };
+};
+
+//=============================================================================
+
+}; }; }; };
+
+/*=============================================================================
+
+=============================================================================*/
+#endif
+