summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl235
1 files changed, 235 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 000000000..2a5369602
--- /dev/null
+++ b/offapi/com/sun/star/sdb/XSingleSelectQueryComposer.idl
@@ -0,0 +1,235 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+#ifndef __com_sun_star_sdb_XSingleSelectQueryComposer_idl__
+#define __com_sun_star_sdb_XSingleSelectQueryComposer_idl__
+
+#include <com/sun/star/beans/XPropertySet.idl>
+#include <com/sun/star/beans/PropertyValue.idl>
+#include <com/sun/star/lang/WrappedTargetException.idl>
+#include <com/sun/star/sdbc/SQLException.idl>
+#include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.idl>
+
+
+ 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 com::sun::star::sdb::SQLFilterOperator.
+
+ @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
+ com::sun::star::sdb::DataColumn
+ providing the name and the value for the filter.
+ The value property must be supported by the com::sun::star::sdb::DataColumn.
+ @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 com::sun::star::sdb::SQLFilterOperator.
+ @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, com::sun::star::lang::WrappedTargetException);
+
+ // 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 com::sun::star::sdbcx::Column.
+ @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 com::sun::star::sdb::SQLFilterOperator.
+
+ @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
+ com::sun::star::sdb::DataColumn
+ 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 com::sun::star::sdb::SQLFilterOperator.
+ @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, com::sun::star::lang::WrappedTargetException);
+
+ // 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 com::sun::star::sdbcx::Column.
+ @param column
+ the column which is used to create an 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
+ XSingleSelectQueryAnalyzer::getFilter() will not return you this
+ filter. Instead, only filters which have been set using for instance setFilter()
+ are covered by the get methods.</p>
+
+ <p>The only methods which take all parts of the elementary statement into account are
+ XSingleSelectQueryAnalyzer::getQuery() and
+ XSingleSelectQueryAnalyzer::getQueryWithSubstitution(), 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 #ElementaryQuery to a statement already containing
+ filters, and then use setFilter() 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 QueryDefinition, and extend it with additional
+ filters or sort orders, while not touching the respective parts already present
+ in QueryDefinition::Command. This can be achieved by setting the
+ QueryDefinition::Command as #ElementaryQuery of a
+ SingleSelectQueryComposer.</p>
+
+ <p>If, in such a scenario, you would be interested in the filter part of the
+ QueryDefinition::Command, you would set it via
+ XSingleSelectQueryAnalyzer::setQuery(), and retrieve the filter
+ part via XSingleSelectQueryAnalyzer::getFilter().</p>
+
+ <p>If you'd be interested in the composed filter, you would set the
+ QueryDefinition::Command as #ElementaryQuery, add your
+ filter, and propagate the resulting query (XSingleSelectQueryAnalyzer::getQuery())
+ to an SingleSelectQueryAnalyzer instance via
+ XSingleSelectQueryAnalyzer::setQuery().</p>
+ */
+ [attribute] string ElementaryQuery
+ {
+ set raises (com::sun::star::sdbc::SQLException);
+ };
+};
+
+
+}; }; }; };
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */