com.hp.hpl.jena.db
Class DBConnection

java.lang.Object
  extended bycom.hp.hpl.jena.db.DBConnection
All Implemented Interfaces:
IDBConnection

public class DBConnection
extends java.lang.Object
implements IDBConnection

Encapsulate the specification of a jdbc connection. This is mostly used to simplify the calling pattern for ModelRDB factory methods.

Version:
$Revision: 1.7 $
Author:
csayers (based in part on the jena 1 implementation by der).

Constructor Summary
DBConnection(java.sql.Connection connection)
          Deprecated. As of Jena 2.0, it is recommended to use one of the DBConnection constructors which takes a database type as an argument. (The DBConnection can operate more efficiently if it knows the database type).
DBConnection(java.sql.Connection connection, java.lang.String databaseType)
          Create a connection specification that just wraps up an existing database connection.
DBConnection(java.lang.String url, java.lang.String user, java.lang.String password)
          Deprecated. As of Jena 2.0, it is recommended to use one of the DBConnection constructors which takes a database type as an argument. (The DBConnection can operate more efficiently if it knows the database type).
DBConnection(java.lang.String url, java.lang.String user, java.lang.String password, java.lang.String databaseType)
          Create a connection specification based on jdbc address and appropriate authentication information.
 
Method Summary
 void cleanDB()
          Clear all RDF information from the database.
 void close()
          Close the jdbc connection.
 boolean containsDefaultModel()
          Test if a default model is contained in the database.
 boolean containsModel(java.lang.String name)
          Test if a given model is contained in the database.
 ExtendedIterator getAllModelNames()
          Retrieve a list of all graphs in the database.
 java.sql.Connection getConnection()
          Return the jdbc connection or null if we no longer have access to a connection.
 Model getDatabaseProperties()
          Returns a Jena Model containing database-specific properties.
 java.lang.String getDatabaseType()
          Get the database type.
 Model getDefaultModelProperties()
          Retrieve a default set of model customization properties.
 com.hp.hpl.jena.db.impl.IRDBDriver getDriver()
          Get the database-specific driver For this to work, it needs to know the type of database being used.
 com.hp.hpl.jena.db.impl.IRDBDriver getDriver(java.lang.String layout, java.lang.String database)
          Deprecated. As of Jena 2.0 this call should not be used. Instead specify the database type when constructing a DBConnection and then pass that connection to the ModelRDB. There is no longer any need for applications to interact directly with the IRDBDriver. To customize the database configuration/layout use the setDatabaseProperties method.
 boolean isFormatOK()
          Return true if the database seems to be formated for RDF storage.
 void setDatabaseProperties(Model dbProperties)
          Set the database-specific properties.
 void setDatabaseType(java.lang.String databaseType)
          Set the database type manually.
 void setDriver(com.hp.hpl.jena.db.impl.IRDBDriver driver)
          Set the IRDBDriver to use for this connection.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DBConnection

public DBConnection(java.lang.String url,
                    java.lang.String user,
                    java.lang.String password)
Deprecated. As of Jena 2.0, it is recommended to use one of the DBConnection constructors which takes a database type as an argument. (The DBConnection can operate more efficiently if it knows the database type).

Create a connection specification based on jdbc address and appropriate authentication information.

Parameters:
url - the jdbc url for the database, note that the format of this is database dependent and that the appropriate jdbc driver will need to be specified via the standard pattern
     Class.forName("my.sql.driver");
 
user - the user name to log on with
password - the password corresponding to this user

DBConnection

public DBConnection(java.lang.String url,
                    java.lang.String user,
                    java.lang.String password,
                    java.lang.String databaseType)
Create a connection specification based on jdbc address and appropriate authentication information.

Parameters:
url - the jdbc url for the database, note that the format of this is database dependent and that the appropriate jdbc driver will need to be specified via the standard pattern
     Class.forName("my.sql.driver");
 
user - the user name to log on with
password - the password corresponding to this user
databaseType - the type of database to which we are connecting.
Since:
Jena 2.0

DBConnection

public DBConnection(java.sql.Connection connection)
Deprecated. As of Jena 2.0, it is recommended to use one of the DBConnection constructors which takes a database type as an argument. (The DBConnection can operate more efficiently if it knows the database type).

Create a connection specification that just wraps up an existing database connection.

Parameters:
connection - the open jdbc connection to use

DBConnection

public DBConnection(java.sql.Connection connection,
                    java.lang.String databaseType)
Create a connection specification that just wraps up an existing database connection.

Parameters:
connection - the open jdbc connection to use
databaseType - the type of database to which we are connecting.
Since:
Jena 2.0
Method Detail

getConnection

public java.sql.Connection getConnection()
                                  throws java.sql.SQLException
Return the jdbc connection or null if we no longer have access to a connection.

Specified by:
getConnection in interface IDBConnection
Throws:
java.sql.SQLException

close

public void close()
           throws java.sql.SQLException
Close the jdbc connection. It might be reopend with a getConnection() if the full database uri, user and password were provided.

Specified by:
close in interface IDBConnection
Throws:
java.sql.SQLException

cleanDB

public void cleanDB()
             throws java.sql.SQLException
Clear all RDF information from the database. This is equivalent to (but faster than) calling ModelRDB.clear() on every model in the database and then deleting the underlying tables.

Specified by:
cleanDB in interface IDBConnection
Throws:
java.sql.SQLException

isFormatOK

public boolean isFormatOK()
Return true if the database seems to be formated for RDF storage. This is not an integrity check this is simply a flag recording that a base level table exists. Any access errors are treated as the database not being formated.

Specified by:
isFormatOK in interface IDBConnection

setDatabaseProperties

public void setDatabaseProperties(Model dbProperties)
                           throws RDFRDBException
Set the database-specific properties.

This call is only valid before the first Model is stored in the database. After that point, the database structure is frozen.

Use the properties to optionally customize the database - this won't change the results you see when using the Graph or Model interfaces, but it may alter the speed with which you get them or the space required by the database.

The properties must form a complete and consistent set. The easist way to get a complete and consistent set is to call getDatabaseProperties(), modify it, and then use that as an argument in the call to setDatbaseProperties(). Remember that most properties can only have a single value, so to change values you'll need to replace the appropriate statements (rather than just adding additional ones).

May throw an exception if the database cannot be suitably formatted with the new parameters. Note that some implementations may delay processing the parameters until the first Model is constructed. Thus a successful return from this call does not guarantee the properties are correct and consistent.

Specified by:
setDatabaseProperties in interface IDBConnection
Parameters:
dbProperties - is a Jena Model describing the database parameters
Throws:
RDFRDBException
Since:
Jena 2.0

getDatabaseProperties

public Model getDatabaseProperties()
                            throws RDFRDBException
Returns a Jena Model containing database-specific properties. These describe the optimization/layout for the database. If the database has not been formatted, then a default set of properties is returned. Otherwise the actual properties are returned. The returned Model is a copy, modifying it will have no immediate effect on the database. To change the database use setDatabaseProperties.

Specified by:
getDatabaseProperties in interface IDBConnection
Throws:
RDFRDBException
Since:
Jena 2.0

getDefaultModelProperties

public Model getDefaultModelProperties()
                                throws RDFRDBException
Retrieve a default set of model customization properties. The returned default set of properties is suitable for use in a call to ModelRDB.create(..., modelProperties);

Specified by:
getDefaultModelProperties in interface IDBConnection
Returns:
Model containing default properties
Throws:
RDFRDBException

getAllModelNames

public ExtendedIterator getAllModelNames()
                                  throws RDFRDBException
Retrieve a list of all graphs in the database.

Specified by:
getAllModelNames in interface IDBConnection
Returns:
Iterator over String names for graphs.
Throws:
RDFDBException
RDFRDBException

containsModel

public boolean containsModel(java.lang.String name)
                      throws RDFRDBException
Test if a given model is contained in the database.

Specified by:
containsModel in interface IDBConnection
Parameters:
name - the name of a model which may be in the database
Returns:
Boolean true if the model is contained in the database
Throws:
RDFDBException
RDFRDBException
Since:
Jena 2.0

containsDefaultModel

public boolean containsDefaultModel()
                             throws RDFRDBException
Test if a default model is contained in the database. A default model is a model for which no specific name was specified. (One that was created by calling ModelRDB.createModel without specifying a name).

Specified by:
containsDefaultModel in interface IDBConnection
Returns:
Boolean true if the model is contained in the database
Throws:
RDFDBException
RDFRDBException
Since:
Jena 2.0

setDatabaseType

public void setDatabaseType(java.lang.String databaseType)
Set the database type manually. This is not for public use (it is preferable to specify it in the constructor) - included here to handle older code, which didn't use the new constructor.

Specified by:
setDatabaseType in interface IDBConnection
Since:
Jena 2.0

getDatabaseType

public java.lang.String getDatabaseType()
Get the database type.

Specified by:
getDatabaseType in interface IDBConnection
Returns:
String database type, or null if unset
Since:
Jena 2.0

getDriver

public com.hp.hpl.jena.db.impl.IRDBDriver getDriver()
                                             throws RDFRDBException
Get the database-specific driver For this to work, it needs to know the type of database being used. That may be specified in the constructor (preferred) or done later by using the setDatabaseType method (for backward compatability).

Specified by:
getDriver in interface IDBConnection
Throws:
RDFRDBException

setDriver

public void setDriver(com.hp.hpl.jena.db.impl.IRDBDriver driver)
Set the IRDBDriver to use for this connection. Useful to enable external drivers to be registered outside of the standard driver package.

Specified by:
setDriver in interface IDBConnection

getDriver

public com.hp.hpl.jena.db.impl.IRDBDriver getDriver(java.lang.String layout,
                                                    java.lang.String database)
                                             throws RDFRDBException
Deprecated. As of Jena 2.0 this call should not be used. Instead specify the database type when constructing a DBConnection and then pass that connection to the ModelRDB. There is no longer any need for applications to interact directly with the IRDBDriver. To customize the database configuration/layout use the setDatabaseProperties method.

Helper function to locate and instantiate the driver class corresponding to a given layout and database name Throws an RDFRDBexception if the driver can't be instantiated

Specified by:
getDriver in interface IDBConnection
Throws:
RDFRDBException


Copyright © 2001-2003 Hewlett-Packard. All Rights Reserved.