dk.netarkivet.harvester.datamodel
Class DerbySpecifics

java.lang.Object
  extended by dk.netarkivet.common.utils.SettingsFactory<DBSpecifics>
      extended by dk.netarkivet.harvester.datamodel.DBSpecifics
          extended by dk.netarkivet.harvester.datamodel.DerbySpecifics
Direct Known Subclasses:
DerbyEmbeddedSpecifics, DerbyServerSpecifics

public abstract class DerbySpecifics
extends DBSpecifics

Derby-specific implementation of DB methods.


Field Summary
(package private)  org.apache.commons.logging.Log log
           
 
Constructor Summary
DerbySpecifics()
           
 
Method Summary
 boolean connectionIsValid(java.sql.Connection connection, int validityTimeout)
          Checks that the connection is valid (i.e.
 void createFrontierReportMonitorTable()
          Create the frontierReportMonitor table in the database.
protected  void createGlobalCrawlerTrapExpressions()
          Creates the initial (version 1) of table 'global_crawler_trap_expressions'.
protected  void createGlobalCrawlerTrapLists()
          Creates the initial (version 1) of table 'global_crawler_trap_lists'.
 void createRunningJobsHistoryTable()
          Create the frontierReportMonitor table in the database.
 void createRunningJobsMonitorTable()
          Create the frontierReportMonitor table in the database.
 void dropJobConfigsTmpTable(java.sql.Connection c, java.lang.String tableName)
          Dispose of a temporary table gotten with getTemporaryTable.
 java.lang.String getJobConfigsTmpTable(java.sql.Connection c)
          Get a temporary table for short-time use.
 java.lang.String getOrderByLimitAndOffsetSubClause(long limit, long offset)
          Formats the LIMIT sub-clause of an SQL order clause.
protected  void migrateConfigurationsv3ov4()
          Migrates the 'configurations' table from version 3 to version 4.
protected  void migrateFullharvestsv2tov3()
          Migrates the 'fullharvests' table from version 2 to version 3.
protected  void migrateJobsv3tov4()
          Migrates the 'jobs' table from version 3 to version 4 consisting of a change of the field forcemaxbytes from int to bigint and setting its default to -1.
protected  void migrateJobsv4tov5()
          Migrates the 'jobs' table from version 4 to version 5 consisting of adding new fields 'resubmitted_as_job' and 'submittedDate'.
 boolean supportsClob()
          Returns true if the target RDBMS supports CLOBs.
 
Methods inherited from class dk.netarkivet.harvester.datamodel.DBSpecifics
getDriverClassName, getInstance, updateTable
 
Methods inherited from class dk.netarkivet.common.utils.SettingsFactory
getInstance
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

org.apache.commons.logging.Log log
Constructor Detail

DerbySpecifics

public DerbySpecifics()
Method Detail

getJobConfigsTmpTable

public java.lang.String getJobConfigsTmpTable(java.sql.Connection c)
                                       throws java.sql.SQLException
Get a temporary table for short-time use. The table should be disposed of with dropTemporaryTable. The table has two columns domain_name varchar(Constants.MAX_NAME_SIZE) + config_name varchar(Constants.MAX_NAME_SIZE) All rows in the table must be deleted at commit or rollback.

Specified by:
getJobConfigsTmpTable in class DBSpecifics
Parameters:
c - The DB connection to use.
Returns:
The name of the created table
Throws:
java.sql.SQLException - if there is a problem getting the table.

dropJobConfigsTmpTable

public void dropJobConfigsTmpTable(java.sql.Connection c,
                                   java.lang.String tableName)
Dispose of a temporary table gotten with getTemporaryTable. This can be expected to be called from within a finally clause, so it mustn't throw exceptions.

Specified by:
dropJobConfigsTmpTable in class DBSpecifics
Parameters:
c - The DB connection to use.
tableName - The name of the temporary table

connectionIsValid

public boolean connectionIsValid(java.sql.Connection connection,
                                 int validityTimeout)
                          throws java.sql.SQLException
Checks that the connection is valid (i.e. still open on the server side). This implementation can be overriden if a specific RDBM is not handling the Connection.isValid(int) JDBC4 method properly.

Specified by:
connectionIsValid in class DBSpecifics
Parameters:
connection -
validityTimeout - The time in seconds to wait for the database operation used to validate the connection to complete. If the timeout period expires before the operation completes, this method returns false. A value of 0 indicates a timeout is not applied to the database operation.
Returns:
true, if the connection is valid; false, otherwise
Throws:
java.sql.SQLException
See Also:
Connection.isValid(int)

getOrderByLimitAndOffsetSubClause

public java.lang.String getOrderByLimitAndOffsetSubClause(long limit,
                                                          long offset)
Description copied from class: DBSpecifics
Formats the LIMIT sub-clause of an SQL order clause. This sub-clause allows to paginate query results and its syntax might be dependant on the target RDBMS

Specified by:
getOrderByLimitAndOffsetSubClause in class DBSpecifics
Parameters:
limit - the maximum number of rows to fetch.
offset - the starting offset in the full query results.
Returns:
the proper sub-clause.

supportsClob

public boolean supportsClob()
Description copied from class: DBSpecifics
Returns true if the target RDBMS supports CLOBs. If possible seedlists will be stored as CLOBs.

Specified by:
supportsClob in class DBSpecifics
Returns:
true if CLOBs are supported, false otherwise.

migrateJobsv3tov4

protected void migrateJobsv3tov4()
Migrates the 'jobs' table from version 3 to version 4 consisting of a change of the field forcemaxbytes from int to bigint and setting its default to -1. Furthermore the default value for field num_configs is set to 0.

Specified by:
migrateJobsv3tov4 in class DBSpecifics
Throws:
IOFailure - in case of problems in interacting with the database

migrateJobsv4tov5

protected void migrateJobsv4tov5()
Migrates the 'jobs' table from version 4 to version 5 consisting of adding new fields 'resubmitted_as_job' and 'submittedDate'.

Specified by:
migrateJobsv4tov5 in class DBSpecifics
Throws:
IOFailure - in case of problems in interacting with the database

migrateConfigurationsv3ov4

protected void migrateConfigurationsv3ov4()
Migrates the 'configurations' table from version 3 to version 4. This consists of altering the default value of field 'maxbytes' to -1.

Specified by:
migrateConfigurationsv3ov4 in class DBSpecifics

migrateFullharvestsv2tov3

protected void migrateFullharvestsv2tov3()
Migrates the 'fullharvests' table from version 2 to version 3. This consists of altering the default value of field 'maxbytes' to -1.

Specified by:
migrateFullharvestsv2tov3 in class DBSpecifics

createGlobalCrawlerTrapLists

protected void createGlobalCrawlerTrapLists()
Description copied from class: DBSpecifics
Creates the initial (version 1) of table 'global_crawler_trap_lists'.

Specified by:
createGlobalCrawlerTrapLists in class DBSpecifics

createGlobalCrawlerTrapExpressions

protected void createGlobalCrawlerTrapExpressions()
Description copied from class: DBSpecifics
Creates the initial (version 1) of table 'global_crawler_trap_expressions'.

Specified by:
createGlobalCrawlerTrapExpressions in class DBSpecifics

createFrontierReportMonitorTable

public void createFrontierReportMonitorTable()
Description copied from class: DBSpecifics
Create the frontierReportMonitor table in the database.

Specified by:
createFrontierReportMonitorTable in class DBSpecifics

createRunningJobsHistoryTable

public void createRunningJobsHistoryTable()
Description copied from class: DBSpecifics
Create the frontierReportMonitor table in the database.

Specified by:
createRunningJobsHistoryTable in class DBSpecifics

createRunningJobsMonitorTable

public void createRunningJobsMonitorTable()
Description copied from class: DBSpecifics
Create the frontierReportMonitor table in the database.

Specified by:
createRunningJobsMonitorTable in class DBSpecifics