/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef __com_sun_star_sdb_DataSource_idl__ #define __com_sun_star_sdb_DataSource_idl__ #ifndef __com_sun_star_io_XPersistObject_idl__ #include #endif #ifndef __com_sun_star_beans_XPropertySet_idl__ #include #endif #ifndef __com_sun_star_beans_PropertyValue_idl__ #include #endif #ifndef __com_sun_star_util_XFlushable_idl__ #include #endif #ifndef __com_sun_star_util_XNumberFormatsSupplier_idl__ #include #endif module com { module sun { module star { module sdbc { published interface XIsolatedConnection; published interface XDataSource; };};};}; module com { module sun { module star { module sdb { published interface XCompletedConnection; published interface XQueryDefinitionsSupplier; published interface XBookmarksSupplier; /** is a factory to establish database connections. It should be registered at a NamingService. @see com::sun::star::sdb::DatabaseContext */ published service DataSource { interface com::sun::star::beans::XPropertySet; /** useful for establishing connections with the completion of connection parameters provided during user interaction. */ interface XCompletedConnection; /** useful for establishing isolated connections which are not shared among others as it is the case when using XCompletedConnection or XDataSource. @see XCompletedConnection @see com::sun::star::sdbc::XDataSource @since OOo 1.1.2 */ interface com::sun::star::sdbc::XIsolatedConnection; /** is provided to flush a DataSource within to a Database Context. */ interface com::sun::star::util::XFlushable; /** provides the access to DataSource related queries.

The object returned by the XQueryDefinitionsSupplier::getQueryDefinitions() supports the DefinitionContainer service.

*/ interface XQueryDefinitionsSupplier; /* useful for establishing connections and to get and set the login timeout. */ interface com::sun::star::sdbc::XDataSource; /** provides access to bookmarks to documents associated with the data source

The object returned by the XBookmarksSupplier::getBookmarks() supports the DefinitionContainer service.

*/ [optional] interface XBookmarksSupplier; /** is the name of the data source.

If the data source is registered at the database context, then the Name property denotes the registration name. Otherwise, the name property contains the URL of the file which the database document associated with the data source is based on.

If the same data source is registered under different names, the value of the Name property is not defined.

*/ [readonly, property] string Name; /** indicates a database url of the form
jdbc:subprotocol:subname or sdbc:subprotocol:subname */ [property] string URL; /** is a list of arbitrary string tag/value pairs as connection arguments

The DataSource itself does not attempt to interpret any of those values.

Instead, the values in this property have two use cases:

  • Upon creating a connection, for every value in this sequence it's checked whether the XDriver which is to provide the connection supports a setting with the respective name, using its XDriver::getPropertyInfo method.br/> If so, the settings is passed to the drivers's XDriver::connect method. If not, the setting is ignored.
  • External components may use the settings to carry arbitrary information with the data source. Usually, this is used to control the behaviour of components working with the data source.
*/ [property] sequence Info; /** is a convenience wrapper around the Info property.

Since fiddling around with a sequence of property values is somewhat uncomfortable in all known UNO language bindings (especially for tasks like simply changing the value of an existing value), the Settings property wraps the Info property for easier single-value access.

You should use the Setting property if you need to access a few properties only, and the Info property if you need access to all existent settings at once.

The object represented by this property supports the PropertyBag service. That is, you can at runtime add arbitrary new properties to the bag.

Additionally, the property bag supports default values of properties, and thus the XPropertyState interface. If you add an own property to the bag using XPropertyContainer::addProperty, you need to specifiy an initial value, which is also used as default value (exceptions see below).

Effectively, the property bag represented by Settings contains two classes of properties: Pre-defined ones and user-defined ones.

Pre-defined properties are properties which are potentially used by the data source, the application UI for the data source, or a particular backend driver employed by the data source. There's a large set of such properties, no all of them are effectively used for a concrete data source, nonetheless, they're all present in the Settings.
Such properties are not removeable from the bag, that is, their PropertyAttribute::REMOVEABLE attribute is not set.
Usually, you'll find that all of this properties have the PropertyState::PropertyState_DEFAULT_VALUE state.

User-defined properties are the ones which are added at runtime by any instance. They might or might not be removeable, this depends on whether or not the code adding them specifies the PropertyAttribute::REMOVEABLE attribute. Also, they might or might not have a default value, determined by the PropertyAttribute::MAYBEDEFAULT attribute at the time they're added to the bag.

When a data source is made persistent, then properties which are not removeable (which are assumed to be the pre-defined properties) are ignored when they are in DEFAULT state. All other properties are always made persistent, except when an explicit PropertyAttribute::TRANSIENT attribute prohibits this.

Similar, when you obtain the Info property of a DataSource, the Settings bag is asked for all its property values, and the ones which are removeable and in state default are stripped, and not returned in the Info sequence.

*/ [property, readonly, optional] com::sun::star::beans::XPropertySet Settings; /** determines a users login name. */ [property] string User; /** determines a users password. The password is not persistent. */ [property] string Password; /** indicates that a password is always necessary. */ [property] boolean IsPasswordRequired; /** indicates that components displaying data obtained from this data source should suppress columns used for versioning. */ [property] boolean SuppressVersionColumns; /** determines whether modifications on the data source are allowed or not. */ [readonly, property] boolean IsReadOnly; /** provides an object for formatting numbers. */ [readonly, property] com::sun::star::util::XNumberFormatsSupplier NumberFormatsSupplier; /** defines a list of tables, on which the DataSource should have it's focus. If empty, all tables are rejected. */ [property] sequence TableFilter; /** defines a list of table types, on which the DataSource should have it's focus. If empty, all table types are rejected. */ [property] sequence TableTypeFilter; }; //============================================================================= }; }; }; }; #endif