/* -*- 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_ErrorCondition_idl__ #define __com_sun_star_sdb_ErrorCondition_idl__ module com { module sun { module star { module sdb { /** defines error conditions for OpenOffice.org Base core components
Core components of OpenOffice.org will use those error conditions
as error codes (com::sun::star::sdbc::SQLException::ErrorCode)
wherever possible.
That is, if an SQLException
is raised by
such a component, caused by an error condition which is included in the
ErrorCondition group, then the respective negative value
will be used as ErrorCode
.
This allows to determine specific error conditions in your client code, and to handle it appropriately.
Note that before you examine the ErrorCode
member of a caught
SQLException
, you need to make sure that the exception
is really thrown by an OpenOffice.org Base core component. To do so, check
whether the error message (Exception::Message
) starts with the
vendor string [OOoBase]
.
The list of defined error conditions, by nature, is expected to permanently grow, so never assume it being finalized.
@code{.java} catch ( SQLException e ) { if (e.Message.startsWith( "[OOoBase]" )) if (e.ErrorCode + ErrorCondition.SOME_ERROR_CONDITION == 0) handleSomeErrorCondition(); } @endcode */ constants ErrorCondition { // = section ROW_SET - css.sdb.RowSet related error conditions /** is used by and RowSet to indicate that an operation has been vetoed by one of its approval listenersThis error condition results in raising a RowSetVetoException.
@see RowSet @see XRowSetApproveBroadcaster @see XRowSetApproveListener */ const long ROW_SET_OPERATION_VETOED = 100; // = section PARSER - parsing related error conditions /** indicates that while parsing an SQL statement, cyclic sub queries have been detected.Imagine you have a client-side query SELECT * FROM table
, which is
saved as "query1". Additionally, there is a query "query2" defined
as SELECT * FROM query1
. Now if you try to change the statement of
query1 to SELECT * FROM query2
, this is prohibited, because
it would lead to a cyclic sub query.
*/
const long PARSER_CYCLIC_SUB_QUERIES = 200;
// = section DB - application-level error conditions
// = next section should start with 500
/** indicates that the name of a client side database object - a query, a form,
or a report - contains one or more slashes, which is forbidden.
*/
const long DB_OBJECT_NAME_WITH_SLASHES = 300;
/** indicates that an identifier is not SQL conform.
*/
const long DB_INVALID_SQL_NAME = 301;
/** indicates that the name of a query contains quote characters.
This error condition is met when the user attempts to save a query
with a name which contains one of the possible database quote characters.
This is an error since query names can potentially be used in
SELECT
statements, where quote identifiers would render the statement invalid.
In databases which support query names to appear in SELECT
statements, this could mean that a table was attempted to be saved with the
name of an existing query, or vice versa.
Otherwise, it means an object was attempted to be saved with the name of an already existing object of the same type.
@see com::sun::star::sdb::application::DatabaseObject @see com::sun::star::sdb::tools::XDataSourceMetaData::supportsQueriesInFrom */ const long DB_OBJECT_NAME_IS_USED = 303; /** indicates an operation was attempted which needs a connection to the database, which did not exist at that time. */ const long DB_NOT_CONNECTED = 304; // = section AB - address book access related error conditions // = next section should start with 550 /** used by the component implementing address book access to indicate that a requested address book could not be accessed.For instance, this error code is used when you try to access the address book in a Thunderbird profile named MyProfile, but there does not exist a profile with this name.
*/ const long AB_ADDRESSBOOK_NOT_FOUND = 500; // = section DATA - data retrieval related error conditions // = next section should start with 600 /** used to indicate that aSELECT
operation on a table needs a filter.
Some database drivers are not able to SELECT
from a table if the
statement does not contain a WHERE
clause. In this case, a statement
like SELECT * FROM "table"
will fail with the error code
DATA_CANNOT_SELECT_UNFILTERED
.
It is also legitimate for the driver to report this error condition as warning, and provide an empty result set, instead of ungraceful failing.
*/ const long DATA_CANNOT_SELECT_UNFILTERED = 550; }; }; }; }; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */