com.is.jrf
Class PostgreSQLDatabasePolicy

java.lang.Object
  |
  +--com.is.jrf.PostgreSQLDatabasePolicy
All Implemented Interfaces:
DatabasePolicy

public class PostgreSQLDatabasePolicy
extends java.lang.Object
implements DatabasePolicy

Instances of this class perform PostgreSQL-specific logic and return PostgreSQL-specific information.


Constructor Summary
PostgreSQLDatabasePolicy()
           
 
Method Summary
 java.lang.String autoIncrementIdentifier()
          PostgreSQL has Sequences for generating an arbitrary integer primary key so AUTO INCREMENT is not needed here.
 void createSequence(AbstractDomain domain, JDBCHelper aJDBCHelper)
          This is called when creating a table that has a SEQUENCED_PRIMARY_KEY.
 java.lang.String currentTimestampSQL()
          This should return the the SQL to use to have the database return the current timestamp.
 java.lang.Long findAutoIncrementId(java.lang.String tableName, java.lang.String columnName, JDBCHelper aJDBCHelper)
          This method throws an exception since it should never be called.
 java.lang.String formatDate(java.sql.Date sqlDate)
          The result of this is used in SQL.
 java.lang.String formatTimestamp(java.sql.Timestamp ts)
          The result of this is used in SQL.
 java.lang.String outerWhereJoin(java.lang.String mainTableColumn, java.lang.String joinTableColumn)
          Return a string with a name-value pair that represents an SQL outer join in PostgreSQL.
 java.lang.String sequenceSQL(java.lang.String tableName)
          This assumes there is a PostgreSQL SEQUENCE object created with name of seq_tableNameHere When executed, this SQL should return a one row, one column result set with an Integer in it that column.
 java.lang.String timestampColumnType()
          This method used when building SQL for creating a table.
 java.lang.String timestampFunction()
          This should return the string value (function name) to put into the SQL to tell the database to insert the current timestamp.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PostgreSQLDatabasePolicy

public PostgreSQLDatabasePolicy()
Method Detail

sequenceSQL

public java.lang.String sequenceSQL(java.lang.String tableName)
This assumes there is a PostgreSQL SEQUENCE object created with name of seq_tableNameHere When executed, this SQL should return a one row, one column result set with an Integer in it that column.
Specified by:
sequenceSQL in interface DatabasePolicy
Parameters:
tableName - a value of type 'String'
Returns:
a value of type 'String'

timestampFunction

public java.lang.String timestampFunction()
This should return the string value (function name) to put into the SQL to tell the database to insert the current timestamp.
Specified by:
timestampFunction in interface DatabasePolicy
Returns:
a value of type 'String'

formatTimestamp

public java.lang.String formatTimestamp(java.sql.Timestamp ts)
The result of this is used in SQL.
Specified by:
formatTimestamp in interface DatabasePolicy
Parameters:
ts - a value of type 'Timestamp'
Returns:
a value of type 'String'

formatDate

public java.lang.String formatDate(java.sql.Date sqlDate)
The result of this is used in SQL. This will return only the date (not the time portion)
Specified by:
formatDate in interface DatabasePolicy
Parameters:
sqlDate - a value of type 'java.sql.Date'
Returns:
a value of type 'String'

currentTimestampSQL

public java.lang.String currentTimestampSQL()
This should return the the SQL to use to have the database return the current timestamp.
Specified by:
currentTimestampSQL in interface DatabasePolicy
Returns:
a value of type 'String'

autoIncrementIdentifier

public java.lang.String autoIncrementIdentifier()
PostgreSQL has Sequences for generating an arbitrary integer primary key so AUTO INCREMENT is not needed here.
Specified by:
autoIncrementIdentifier in interface DatabasePolicy
Returns:
null since PostgreSQL doesn't support the auto-increment method

findAutoIncrementId

public java.lang.Long findAutoIncrementId(java.lang.String tableName,
                                          java.lang.String columnName,
                                          JDBCHelper aJDBCHelper)
This method throws an exception since it should never be called.
Specified by:
findAutoIncrementId in interface DatabasePolicy
Parameters:
tableName - a value of type 'String'
columnName - a value of type 'String'
aJDBCHelper - a value of type 'JDBCHelper'
Returns:
a value of type 'Long'

createSequence

public void createSequence(AbstractDomain domain,
                           JDBCHelper aJDBCHelper)
                    throws java.sql.SQLException
This is called when creating a table that has a SEQUENCED_PRIMARY_KEY. If the sequence already exists, it is dropped before being created.
Specified by:
createSequence in interface DatabasePolicy
Parameters:
domain - a value of type 'AbstractDomain'
aJDBCHelper - a value of type 'JDBCHelper'

outerWhereJoin

public java.lang.String outerWhereJoin(java.lang.String mainTableColumn,
                                       java.lang.String joinTableColumn)
Return a string with a name-value pair that represents an SQL outer join in PostgreSQL. Since we always put the main table on the left, we put the (+) after the right side so that any extra null rows will be generated for the right-hand table.
Specified by:
outerWhereJoin in interface DatabasePolicy
Parameters:
mainTableColumn - a value of type 'String'
joinTableColumn - a value of type 'String'
Returns:
a value of type 'String'

timestampColumnType

public java.lang.String timestampColumnType()
This method used when building SQL for creating a table.
Specified by:
timestampColumnType in interface DatabasePolicy
Returns:
a value of type 'String'