xref: /aoo4110/main/offapi/com/sun/star/sdb/DataSource.idl (revision b1cdbd2c)
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#ifndef __com_sun_star_sdb_DataSource_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_sdb_DataSource_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_io_XPersistObject_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/io/XPersistObject.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_XPropertySet_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/XPropertySet.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_PropertyValue_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/PropertyValue.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_util_XFlushable_idl__
39*b1cdbd2cSJim Jagielski#include <com/sun/star/util/XFlushable.idl>
40*b1cdbd2cSJim Jagielski#endif
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_util_XNumberFormatsSupplier_idl__
43*b1cdbd2cSJim Jagielski#include <com/sun/star/util/XNumberFormatsSupplier.idl>
44*b1cdbd2cSJim Jagielski#endif
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski module com {  module sun {  module star {  module sdbc {
48*b1cdbd2cSJim Jagielski	 published interface XIsolatedConnection;
49*b1cdbd2cSJim Jagielski	 published interface XDataSource;
50*b1cdbd2cSJim Jagielski };};};};
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski module com {  module sun {  module star {  module sdb {
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski published interface XCompletedConnection;
56*b1cdbd2cSJim Jagielski published interface XQueryDefinitionsSupplier;
57*b1cdbd2cSJim Jagielski published interface XBookmarksSupplier;
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski/** is a factory to establish database connections. It should be registered at
61*b1cdbd2cSJim Jagielski	a <type scope="com::sun::star::uno">NamingService</type>.
62*b1cdbd2cSJim Jagielski	@see com::sun::star::sdb::DatabaseContext
63*b1cdbd2cSJim Jagielski */
64*b1cdbd2cSJim Jagielskipublished service DataSource
65*b1cdbd2cSJim Jagielski{
66*b1cdbd2cSJim Jagielski	interface com::sun::star::beans::XPropertySet;
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski	/** useful for establishing connections with the completion of connection parameters
70*b1cdbd2cSJim Jagielski				provided during user interaction.
71*b1cdbd2cSJim Jagielski	 */
72*b1cdbd2cSJim Jagielski	interface XCompletedConnection;
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski	/** useful for establishing isolated connections which are not shared among others
75*b1cdbd2cSJim Jagielski		as it is the case when using <type>XCompletedConnection</type> or <type scope="com::sun::star::sdbc">XDataSource</type>.
76*b1cdbd2cSJim Jagielski		@see XCompletedConnection
77*b1cdbd2cSJim Jagielski		@see com::sun::star::sdbc::XDataSource
78*b1cdbd2cSJim Jagielski		@since OpenOffice 1.1.2
79*b1cdbd2cSJim Jagielski	 */
80*b1cdbd2cSJim Jagielski	interface com::sun::star::sdbc::XIsolatedConnection;
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski	/** is provided to flush a DataSource within to a Database Context.
84*b1cdbd2cSJim Jagielski	 */
85*b1cdbd2cSJim Jagielski	interface com::sun::star::util::XFlushable;
86*b1cdbd2cSJim Jagielski
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski	/** provides the access to DataSource related queries.
89*b1cdbd2cSJim Jagielski		<p>
90*b1cdbd2cSJim Jagielski		The object returned by the
91*b1cdbd2cSJim Jagielski		<method scope="com::sun::star::sdb">XQueryDefinitionsSupplier::getQueryDefinitions()</method>
92*b1cdbd2cSJim Jagielski		supports the
93*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::sdb">DefinitionContainer</type>
94*b1cdbd2cSJim Jagielski		service.
95*b1cdbd2cSJim Jagielski		</p>
96*b1cdbd2cSJim Jagielski	 */
97*b1cdbd2cSJim Jagielski	interface XQueryDefinitionsSupplier;
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski	/* useful for establishing connections and to get and set the login timeout.
100*b1cdbd2cSJim Jagielski	*/
101*b1cdbd2cSJim Jagielski	interface com::sun::star::sdbc::XDataSource;
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski	/** provides access to bookmarks to documents associated with the data source
104*b1cdbd2cSJim Jagielski		<p>
105*b1cdbd2cSJim Jagielski		The object returned by the
106*b1cdbd2cSJim Jagielski		<method scope="com::sun::star::sdb">XBookmarksSupplier::getBookmarks()</method>
107*b1cdbd2cSJim Jagielski		supports the
108*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::sdb">DefinitionContainer</type>
109*b1cdbd2cSJim Jagielski		service.
110*b1cdbd2cSJim Jagielski		</p>
111*b1cdbd2cSJim Jagielski	 */
112*b1cdbd2cSJim Jagielski	[optional] interface XBookmarksSupplier;
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski	/** is the name of the data source.
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski        <p>If the data source is registered at the database context, then the <code>Name</code> property
117*b1cdbd2cSJim Jagielski        denotes the registration name. Otherwise, the name property contains the URL of the file which the
118*b1cdbd2cSJim Jagielski        database document associated with the data source is based on.</p>
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski        <p>If the same data source is registered under different names, the value of the <code>Name</code>
121*b1cdbd2cSJim Jagielski        property is not defined.</p>
122*b1cdbd2cSJim Jagielski	 */
123*b1cdbd2cSJim Jagielski	[readonly, property] string Name;
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski
126*b1cdbd2cSJim Jagielski	/** indicates a database url of the form <br>
127*b1cdbd2cSJim Jagielski		<code> jdbc:<em>subprotocol</em>:<em>subname</em></code>
128*b1cdbd2cSJim Jagielski		or
129*b1cdbd2cSJim Jagielski		<code>sdbc:<em>subprotocol</em>:<em>subname</em></code>
130*b1cdbd2cSJim Jagielski	 */
131*b1cdbd2cSJim Jagielski	[property] string URL;
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielski	/** is a list of arbitrary string tag/value pairs as connection arguments
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski        <p>The <type>DataSource</type> itself does not attempt to interpret any of those values.</p>
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski        <p>Instead, the values in this property have two use cases:
139*b1cdbd2cSJim Jagielski        <ul><li>Upon creating a connection, for every value in this sequence it's checked
140*b1cdbd2cSJim Jagielski                whether the <type scope="com::sun::star::sdbc">XDriver</type> which is to provide
141*b1cdbd2cSJim Jagielski                the connection supports a setting with the respective name, using its
142*b1cdbd2cSJim Jagielski                <member scope="com::sun::star::sdbc">XDriver::getPropertyInfo<member> method.br/>
143*b1cdbd2cSJim Jagielski                If so, the settings is passed to the drivers's
144*b1cdbd2cSJim Jagielski                <member scope="com::sun::star::sdbc">XDriver::connect<member> method. If not,
145*b1cdbd2cSJim Jagielski                the setting is ignored.</li>
146*b1cdbd2cSJim Jagielski            <li>External components may use the settings to carry arbitrary information with
147*b1cdbd2cSJim Jagielski                the data source. Usually, this is used to control the behaviour of components
148*b1cdbd2cSJim Jagielski                working with the data source.</li>
149*b1cdbd2cSJim Jagielski        </ul>
150*b1cdbd2cSJim Jagielski    */
151*b1cdbd2cSJim Jagielski	[property] sequence<com::sun::star::beans::PropertyValue> Info;
152*b1cdbd2cSJim Jagielski
153*b1cdbd2cSJim Jagielski    /** is a convenience wrapper around the <member>Info</member> property.
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski        <p>Since fiddling around with a sequence of property values is somewhat uncomfortable
156*b1cdbd2cSJim Jagielski        in all known UNO language bindings (especially for tasks like simply changing the value
157*b1cdbd2cSJim Jagielski        of an existing value), the <member>Settings</member> property wraps the <member>Info</member>
158*b1cdbd2cSJim Jagielski        property for easier single-value access.</p>
159*b1cdbd2cSJim Jagielski
160*b1cdbd2cSJim Jagielski        <p>You should use the <member>Setting</member> property if you need to access a few properties only,
161*b1cdbd2cSJim Jagielski        and the <member>Info</member> property if you need access to all existent settings at once.</p>
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski        <p>The object represented by this property supports the <type scope="com::sun::star::beans">PropertyBag</type>
164*b1cdbd2cSJim Jagielski        service. That is, you can at runtime add arbitrary new properties to the bag.</p>
165*b1cdbd2cSJim Jagielski
166*b1cdbd2cSJim Jagielski        <p>Additionally, the property bag supports default values of properties, and thus the
167*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::beans">XPropertyState</type> interface. If you add an own property to
168*b1cdbd2cSJim Jagielski        the bag using <member scope="com::sun::star::beans">XPropertyContainer::addProperty</member>, you need
169*b1cdbd2cSJim Jagielski        to specifiy an initial value, which is also used as default value (exceptions see below).</p>
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski        <p>Effectively, the property bag represented by <code>Settings</code> contains two classes of properties:
172*b1cdbd2cSJim Jagielski        Pre-defined ones and user-defined ones.</p>
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim Jagielski        <p><em>Pre-defined</em> properties are properties which are potentially used by the data source, the
175*b1cdbd2cSJim Jagielski        application UI for the data source, or a particular backend driver employed by the data source. There's
176*b1cdbd2cSJim Jagielski        a large set of such properties, no all of them are effectively used for a concrete data source, nonetheless,
177*b1cdbd2cSJim Jagielski        they're all present in the <code>Settings</code>.<br/>
178*b1cdbd2cSJim Jagielski        Such properties are not removeable from the bag, that is, their
179*b1cdbd2cSJim Jagielski        <member scope="com::sun::star::beans">PropertyAttribute::REMOVEABLE</member> attribute is <em>not</em> set.<br/>
180*b1cdbd2cSJim Jagielski        Usually, you'll find that all of this properties have the
181*b1cdbd2cSJim Jagielski        <member scope="com::sun::star::beans::">PropertyState::PropertyState_DEFAULT_VALUE</member> state.</p>
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski        <p><em>User-defined</em> properties are the ones which are added at runtime by any instance. They might or might
184*b1cdbd2cSJim Jagielski        not be removeable, this depends on whether or not the code adding them specifies the
185*b1cdbd2cSJim Jagielski        <member scope="com::sun::star::beans">PropertyAttribute::REMOVEABLE</member> attribute. Also, they might
186*b1cdbd2cSJim Jagielski        or might not have a default value, determined by the
187*b1cdbd2cSJim Jagielski        <member scope="com::sun::star::beans">PropertyAttribute::MAYBEDEFAULT</member> attribute at the time they're added
188*b1cdbd2cSJim Jagielski        to the bag.</p>
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski        <p>When a data source is made persistent, then properties which are not removeable (which are assumed to be the
191*b1cdbd2cSJim Jagielski        pre-defined properties) are ignored when they are in <code>DEFAULT</code> state. All other properties are
192*b1cdbd2cSJim Jagielski        always made persistent, except when an explicit
193*b1cdbd2cSJim Jagielski        <member scope="com::sun::star::beans">PropertyAttribute::TRANSIENT</member> attribute prohibits this.</p>
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski        <p>Similar, when you obtain the <member>Info</member> property of a <code>DataSource</code>, the
196*b1cdbd2cSJim Jagielski        <code>Settings</code> bag is asked for all its property values, and the ones which are removeable and
197*b1cdbd2cSJim Jagielski        in state default are stripped, and <em>not</em> returned in the <code>Info</code> sequence.</p>
198*b1cdbd2cSJim Jagielski    */
199*b1cdbd2cSJim Jagielski    [property, readonly, optional] com::sun::star::beans::XPropertySet Settings;
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielski	/** determines a users login name.
202*b1cdbd2cSJim Jagielski	 */
203*b1cdbd2cSJim Jagielski	[property] string User;
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski	/** determines a users password. The password is not persistent.
207*b1cdbd2cSJim Jagielski	 */
208*b1cdbd2cSJim Jagielski	[property] string Password;
209*b1cdbd2cSJim Jagielski
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielski	/** indicates that a password is always necessary.
212*b1cdbd2cSJim Jagielski	 */
213*b1cdbd2cSJim Jagielski	[property] boolean IsPasswordRequired;
214*b1cdbd2cSJim Jagielski
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski	/** indicates that components displaying data obtained from this
217*b1cdbd2cSJim Jagielski		data source should suppress columns used for versioning.
218*b1cdbd2cSJim Jagielski	 */
219*b1cdbd2cSJim Jagielski	[property] boolean SuppressVersionColumns;
220*b1cdbd2cSJim Jagielski
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski	/** determines whether modifications on the data source are allowed or not.
223*b1cdbd2cSJim Jagielski	 */
224*b1cdbd2cSJim Jagielski	[readonly, property] boolean IsReadOnly;
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski	/** provides an object for formatting numbers.
228*b1cdbd2cSJim Jagielski	 */
229*b1cdbd2cSJim Jagielski	[readonly, property] com::sun::star::util::XNumberFormatsSupplier
230*b1cdbd2cSJim Jagielski						NumberFormatsSupplier;
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielski
233*b1cdbd2cSJim Jagielski	/** defines a list of tables, on which the DataSource should have it's focus.
234*b1cdbd2cSJim Jagielski		If empty, all tables are rejected.
235*b1cdbd2cSJim Jagielski
236*b1cdbd2cSJim Jagielski	*/
237*b1cdbd2cSJim Jagielski	[property] sequence<string> TableFilter;
238*b1cdbd2cSJim Jagielski
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski	/** defines a list of table types, on which the DataSource should have it's focus.
241*b1cdbd2cSJim Jagielski			 If empty, all table types are rejected.
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski	*/
244*b1cdbd2cSJim Jagielski	[property] sequence<string> TableTypeFilter;
245*b1cdbd2cSJim Jagielski};
246*b1cdbd2cSJim Jagielski
247*b1cdbd2cSJim Jagielski//=============================================================================
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielski}; }; }; };
250*b1cdbd2cSJim Jagielski
251*b1cdbd2cSJim Jagielski#endif
252