/* -*- 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 . */ 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 com::sun::star::uno::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 com::sun::star::sdbc::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 com::sun::star::sdb::XQueryDefinitionsSupplier::getQueryDefinitions() supports the com::sun::star::sdb::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 sourceThe object returned by the com::sun::star::sdb::XBookmarksSupplier::getBookmarks() supports the com::sun::star::sdb::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.
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:
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 #Settings 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 com::sun::star::beans::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 com::sun::star::beans::XPropertyState interface. If you add an own property to the bag using com::sun::star::beans::XPropertyContainer::addProperty(), you need to specify 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 removable from the bag, that is, their
com::sun::star::beans::PropertyAttribute::REMOVABLE attribute is not set.
Usually, you'll find that all of this properties have the
com::sun::star::beans::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 removable, this depends on whether or not the code adding them specifies the com::sun::star::beans::PropertyAttribute::REMOVABLE attribute. Also, they might or might not have a default value, determined by the com::sun::star::beans::PropertyAttribute::MAYBEDEFAULT attribute at the time they're added to the bag.
When a data source is made persistent, then properties which are not removable (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
com::sun::star::beans::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 removable and
in state default are stripped, and not returned in the Info
sequence.