| Version 1 (modified by Leo Sauermann <leo.sauermann@…>, 20 years ago) (diff) |
|---|
An object that can create DataSources and related objects to a DataSource, like crawlers and other stuff. The Factory is one important thing in an OSGI package.
/**
* An object that can create DataSources and related objects to a DataSource, like crawlers and other stuff.
* The Factory is one important thing in an OSGI package.
* Each Factory represents one kind of DataSource object, and will only create objects regarding to this
* kind of DataSource.
*/
public interface DataFactory {
/**
* get some Information that can be displayed to a user when the user wants to register new DataSources.
* usually, you would return a label, an Icon ????, a description. etc
* TODO: we could also split this in several methods, easier to do.
* TODO: when we return an RDFMap, mutlilingual information is already there!!! (which may be very cool)
*/
public Properties getInformation();
/**
* create a new, emtpy and unconfigured, DataSource instance of the DataSource class represented.
*/
public DataSource createDataSource();
/**
* create a DataCrawler for this data source instance. The instance has to be configured already
*/
public DataCrawler createDataCrawler(DataSource source);
/**
* create a DataAccessor for this data source instance. The instance has to be configured already,
* and you should primarily use its getDataObject() function. The DataCrawler may use its own
* methods to create a DataAccessor
*/
public DataAccessor createDataAccessor(DataSource source);
/**
* create a HierachicalAccess for this data source instance. There are cases when no hierarchical
* access is supported. then, this method returns null.
* @return a HierachicalAccess or null, when HierachicalAccess not supported by this kind of DataSource
*/
public HierachicalAccess createHierachicalAccess(DataSource source);
/**
* create a DataOpener for this data source instance. There are cases when DataObjects
* of this DataSource cannot be opened. then, this method returns null. Then you may
* get an opener from somewhere else.
* @return a HierachicalAccess or null, when data cannot be opened by the DAtaAccessor
*/
public DataOpener createDataOpener(DataSource source);
}
