forked from amazingfate/loongoffice
and coverity#1231675 Uncaught exception Change-Id: If0907f2048fc5e492d5b8b49388c3bfad542e5f7
236 lines
10 KiB
Plaintext
236 lines
10 KiB
Plaintext
/* -*- 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 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
|
|
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: */
|