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