forked from amazingfate/loongoffice
165 lines
7.2 KiB
Plaintext
165 lines
7.2 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_tools_XObjectNames_idl__
|
|
#define __com_sun_star_sdb_tools_XObjectNames_idl__
|
|
|
|
#include <com/sun/star/lang/IllegalArgumentException.idl>
|
|
#include <com/sun/star/sdbc/SQLException.idl>
|
|
|
|
module com { module sun { module star { module sdb { module tools {
|
|
|
|
/** encapsulates functionality which you might find useful when writing a
|
|
database application which deals with query and table names.
|
|
|
|
<p>The most important task fulfilled by this instance is that it hides
|
|
different naming restrictions from you, which are caused by server-side
|
|
or client side specialties.</p>
|
|
|
|
<p>For instance, it can validate names against
|
|
the characters allowed in the object names of a connection. Also, it
|
|
relieves you from caring whether a database supports queries in a <code>SELECT</code>
|
|
statement's <code>FROM</code> part (known as "queries in queries"). In such
|
|
databases, query and table names share a common namespace, thus they must be
|
|
unique. Using this interface, you can easily ensure this uniqueness.</p>
|
|
|
|
<p>All of the functionality present in this interface depends on a connection,
|
|
thus it entry point for obtaining it is a com::sun::star::sdb::Connection
|
|
service.</p>
|
|
|
|
<p>The component itself does not have life-time control mechanisms, i.e. you
|
|
cannot explicitly dispose it (com::sun::star::lang::XComponent::dispose()),
|
|
and you cannot be notified when it dies.<br/>
|
|
However, if your try to access any of its methods or attributes, after the
|
|
connection which was used to create it was closed, a com::sun::star::lang::DisposedException
|
|
will be thrown.</p>
|
|
|
|
@see XConnectionTools
|
|
|
|
@since OOo 2.0.4
|
|
*/
|
|
interface XObjectNames
|
|
{
|
|
/** suggests a (unique) table or query name
|
|
|
|
<p>If in the database, tables and queries share a common namespace, this will be respected
|
|
by this function.</p>
|
|
|
|
<p>Note that in an multi-threaded environment, the name you obtain here is not absolutely
|
|
guaranteed to be unique. It is unique at the very moment the function returns to you.
|
|
But already when you evaluate the returned value, it might not be unique anymore, if
|
|
another process or thread created a query or table with this name.</p>
|
|
|
|
<p>This implies that you cannot rely on the name's uniqueness, but you can use it as
|
|
first guess to present to the user. In most cases, it will still be sufficient when
|
|
you are actually creating the table respectively query.</p>
|
|
|
|
@param CommandType
|
|
specifies the com::sun::star::sdb::CommandType of the object for which
|
|
a unique name is to be generated. Must be either com::sun::star::sdb::CommandType::TABLE
|
|
or com::sun::star::sdb::CommandType::QUERY.
|
|
|
|
@param BaseName
|
|
specifies the base of the to-be-created object name. If empty, a default
|
|
base name will be used.
|
|
|
|
@throws com::sun::star::lang::IllegalArgumentException
|
|
if CommandType specifies an invalid command type.
|
|
*/
|
|
string suggestName( [in] long CommandType, [in] string BaseName )
|
|
raises ( com::sun::star::lang::IllegalArgumentException,
|
|
com::sun::star::sdbc::SQLException );
|
|
|
|
/** converts the given object name to a name which is valid in the database.
|
|
|
|
<p>The conversion takes place by converting every character which is neither
|
|
allowed by the SQL-92 standard, nor part of the special characters supported
|
|
by the database, with an underscore character (_).</p>
|
|
|
|
@see com::sun::star::sdbc::XDatabaseMetaData::getExtraNameCharacters
|
|
*/
|
|
string convertToSQLName( [in] string Name );
|
|
|
|
/** checks whether a given name is used as table respectively query name in the database.
|
|
|
|
<p>If in the database, tables and queries share a common namespace, this will be respected
|
|
by this function.</p>
|
|
|
|
<p>As before, the information you obtain by calling this method might be obsolete
|
|
in the very moment you evaluate this, in case another process or thread interferes.
|
|
However, it's usually sufficiently up-to-date for purpose of using it in a database
|
|
application driven by user interactions.</p>
|
|
|
|
@param CommandType
|
|
specifies the com::sun::star::sdb::CommandType of the object whose
|
|
name should be checked. Must be either com::sun::star::sdb::CommandType::TABLE
|
|
or com::sun::star::sdb::CommandType::QUERY.
|
|
|
|
@param Name
|
|
specifies the to-be-checked name of the object.
|
|
|
|
@return
|
|
`TRUE` if and only if the given name is legitimate as table respectively query name
|
|
to be used in the database.
|
|
|
|
@throws com::sun::star::lang::IllegalArgumentException
|
|
if CommandType specifies an invalid command type.
|
|
|
|
@see checkNameIsUsed
|
|
*/
|
|
boolean isNameUsed( [in] long CommandType, [in] string Name )
|
|
raises ( com::sun::star::lang::IllegalArgumentException,
|
|
com::sun::star::sdbc::SQLException );
|
|
|
|
/** checks whether a given name is valid as table or query name
|
|
|
|
<p>For tables, the name must consist of characters allowed by the SQL-92 standard,
|
|
plus characters allowed by the connection as extra name characters.</p>
|
|
|
|
<p>For queries, names are nearly arbitrary, except that usual quoting characters
|
|
must not be part of the name.</p>
|
|
|
|
@see com::sun::star::sdbc::XDatabaseMetaData::getExtraNameCharacters
|
|
*/
|
|
boolean isNameValid( [in] long CommandType, [in] string Name )
|
|
raises ( com::sun::star::lang::IllegalArgumentException );
|
|
|
|
/** checks whether a given name is allowed for a to-be-created table or query in the
|
|
database.
|
|
|
|
<p>This method basically does the same checks as isNameUsed() and
|
|
isNameValid(). In case the given name is not allowed, it throws an
|
|
exception. This error can be presented to the user, to give it a common experience
|
|
in all cases where he's required to enter an object name.</p>
|
|
|
|
@see isNameUsed
|
|
@see isNameValid
|
|
@see com::sun::star::sdb::ErrorMessageDialog
|
|
@see com::sun::star::sdb::InteractionHandler
|
|
*/
|
|
void checkNameForCreate( [in] long CommandType, [in] string Name )
|
|
raises ( com::sun::star::sdbc::SQLException );
|
|
};
|
|
|
|
}; }; }; }; };
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|