1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_sdb_tools_XTableName_idl__
25*b1cdbd2cSJim Jagielski#define __com_sun_star_sdb_tools_XTableName_idl__
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
28*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl>
29*b1cdbd2cSJim Jagielski#endif
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_NoSuchElementException_idl__
32*b1cdbd2cSJim Jagielski#include <com/sun/star/container/NoSuchElementException.idl>
33*b1cdbd2cSJim Jagielski#endif
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_XPropertySet_idl__
36*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/XPropertySet.idl>
37*b1cdbd2cSJim Jagielski#endif
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski//=============================================================================
40*b1cdbd2cSJim Jagielskimodule com {  module sun {  module star {  module sdb { module tools {
41*b1cdbd2cSJim Jagielski//=============================================================================
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski//-----------------------------------------------------------------------------
44*b1cdbd2cSJim Jagielski/** allows to manipulate table names.
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski    <p>When, in a database application, dealing with table names, there's many degrees
47*b1cdbd2cSJim Jagielski    of freedom to deal with. For instance, suppose you want to have the full name of a
48*b1cdbd2cSJim Jagielski    table object, as it should be used in a <code>SELECT</code> statement's <code>FROM</code>
49*b1cdbd2cSJim Jagielski    part. This requires you to evaluate whether or not the table has a catalog and/or schema
50*b1cdbd2cSJim Jagielski    name, to combine the catalog, the schema, and the basic table name into one name, respecting
51*b1cdbd2cSJim Jagielski    the database's quoting character, and the order in which all those parts should be combined.
52*b1cdbd2cSJim Jagielski    Additionally, you have to respect the client-side settings which tell OpenOffice.org
53*b1cdbd2cSJim Jagielski    to use or not use catalogs and schemas in <code>SELECT</code> at all.</p>
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski    <p>The <type>XTableName</type> interface eases this and other, similar tasks around table
56*b1cdbd2cSJim Jagielski    names.</p>
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski    <p>The component itself does not have life-time control mechanimns, i.e. you
59*b1cdbd2cSJim Jagielski    cannot explicitly dispose it (<member scope="com::sun::star::lang">XComponent::dispose</member>),
60*b1cdbd2cSJim Jagielski    and you cannot be notified when it dies.<br/>
61*b1cdbd2cSJim Jagielski    However, if your try to access any of its methods or attributes, after the
62*b1cdbd2cSJim Jagielski    connection which was used to create it was closed, a <type scope="com::sun::star::lang">DisposedException</type>
63*b1cdbd2cSJim Jagielski    will be thrown.</p>
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielski    @see XConnectionTools
66*b1cdbd2cSJim Jagielski    @see com::sun::star::sdbc::XDatabaseMetaData
67*b1cdbd2cSJim Jagielski    @see com::sun::star::sdb::DataSource::Settings
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski    @since OpenOffice 2.0.4
70*b1cdbd2cSJim Jagielski*/
71*b1cdbd2cSJim Jagielskipublished interface XTableName
72*b1cdbd2cSJim Jagielski{
73*b1cdbd2cSJim Jagielski    /** denotes the name of the catalog which the table is a part of
74*b1cdbd2cSJim Jagielski    */
75*b1cdbd2cSJim Jagielski    [attribute] string  CatalogName;
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski    /** denotes the name of the schema which the table is a part of
78*b1cdbd2cSJim Jagielski    */
79*b1cdbd2cSJim Jagielski    [attribute] string  SchemaName;
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski    /** denotes the mere, unqualified table name, excluding any catalog and
82*b1cdbd2cSJim Jagielski        schema.
83*b1cdbd2cSJim Jagielski    */
84*b1cdbd2cSJim Jagielski    [attribute] string  TableName;
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski    /** returns the composed table name, including the catalog and schema name,
87*b1cdbd2cSJim Jagielski        respecting the databases's quoting requirements, plus
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski        @param Type
90*b1cdbd2cSJim Jagielski            the type of name composition to be used.
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski        @param Quote
93*b1cdbd2cSJim Jagielski            specifies whether the single parts of the table name should be quoted
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski        @see CompositionType
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski        @throws com::sun::star::IllegalArgumentException
98*b1cdbd2cSJim Jagielski            if the given <arg>Type</arg> does not denote a valid <type>CompositionType</type>
99*b1cdbd2cSJim Jagielski    */
100*b1cdbd2cSJim Jagielski    string  getComposedName( [in] long Type, [in] boolean Quote )
101*b1cdbd2cSJim Jagielski        raises ( com::sun::star::lang::IllegalArgumentException );
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski    /** sets a new composed table name
105*b1cdbd2cSJim Jagielski        @param ComposedName
106*b1cdbd2cSJim Jagielski            specifies the composed table name
107*b1cdbd2cSJim Jagielski        @param Type
108*b1cdbd2cSJim Jagielski            specifies the composition type which was used to create the composed table name
109*b1cdbd2cSJim Jagielski    */
110*b1cdbd2cSJim Jagielski    void    setComposedName( [in] string ComposedName, [in] long Type );
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski    /** represents the table name in a form to be used in a <code>SELECT</code> statement.
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski        <p>On a per-data-source basis, OpenOffice.org allows to override database meta
115*b1cdbd2cSJim Jagielski        data information in that you can specify to not use catalog and or schema names
116*b1cdbd2cSJim Jagielski        in <code>SELECT</code> statements. Using this attribute, you can generate a table
117*b1cdbd2cSJim Jagielski        name which respects those settings.</p>
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski        @see com::sun::star::sdb::DataSource::Settings
120*b1cdbd2cSJim Jagielski    */
121*b1cdbd2cSJim Jagielski    [attribute, readonly]   string  NameForSelect;
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski    /** is the <type scope="com::sun::star::sdb">Table</type> object specified
124*b1cdbd2cSJim Jagielski        by the current name.
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski        <p>Retrieving this attribute is equivalent to obtaining the tables
127*b1cdbd2cSJim Jagielski        container from the connection (via <type scope="com::sun::star::sdbcx">XTablesSupplier</type>),
128*b1cdbd2cSJim Jagielski        and calling its <member scope="com::sun::star::container">XNameAccess::getByName</member>
129*b1cdbd2cSJim Jagielski        method with the ComposedName.</p>
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
132*b1cdbd2cSJim Jagielski            if, upon getting the attribute value, the current composed table name
133*b1cdbd2cSJim Jagielski            represented by this instance does not denote an existing table in the database.
134*b1cdbd2cSJim Jagielski        @throws com::sun::star::lang::IllegalArgumentException
135*b1cdbd2cSJim Jagielski            if you try to set an object which does not denote a table from the underlying
136*b1cdbd2cSJim Jagielski            database.
137*b1cdbd2cSJim Jagielski    */
138*b1cdbd2cSJim Jagielski    [attribute] ::com::sun::star::beans::XPropertySet    Table
139*b1cdbd2cSJim Jagielski    {
140*b1cdbd2cSJim Jagielski        get raises ( com::sun::star::container::NoSuchElementException );
141*b1cdbd2cSJim Jagielski        set raises ( com::sun::star::lang::IllegalArgumentException );
142*b1cdbd2cSJim Jagielski    };
143*b1cdbd2cSJim Jagielski};
144*b1cdbd2cSJim Jagielski
145*b1cdbd2cSJim Jagielski//=============================================================================
146*b1cdbd2cSJim Jagielski}; }; }; }; };
147*b1cdbd2cSJim Jagielski//=============================================================================
148*b1cdbd2cSJim Jagielski
149*b1cdbd2cSJim Jagielski#endif
150*b1cdbd2cSJim Jagielski
151