com.softslate.commerce.daos.core
Class LegacyDAOFactory

java.lang.Object
  extended by com.softslate.commerce.daos.core.BaseDAOFactory
      extended by com.softslate.commerce.daos.core.LegacyDAOFactory
All Implemented Interfaces:
DAOFactory

public class LegacyDAOFactory
extends BaseDAOFactory
implements DAOFactory

Factory class used to create and initialize instances of data access objects.

An instance of DAOFactory is created in the Struts layer and placed in the application scope. (See BaseRequestProcessor.) The initialize method is called; various settings affecting the application's DataSource are read; and a DataSource employing connection pooling is initialized. Next, all of the application's SQL statements are read into memory from the "sql.properties" files in the "/WEB-INF/classes/resources" directory.

The createDAO method in this class uses the settings property to look up the fully-qualified class name of the requested data access object. It then appends the value of the databaseType property to the class name and attempts to instantiate that object. If that fails, it next appends "Basic" to the end of the class name. If a class still cannot be found, the class name from the database setting itself is used.

For example, if this factory's databaseType is "MSSQL" and it receives a request to create an instance of the system's "customerDAOImplementer", and the database setting for "customerDAOImplementer" is com.softslate.commerce.daos.customer.CustomerDAO, this factory will try to instantiate the following objects in this order:

  1. com.softslate.commerce.daos.customer.CustomerDAOMSSQL
  2. com.softslate.commerce.daos.customer.CustomerDAOBasic
  3. com.softslate.commerce.daos.customer.CustomerDAO

Immediately after instantiating the requested DAO, this factory passes its own properties to it so that the newly created object can use them to communicate with the rest of the application.

Author:
David Tobey

Field Summary
private  java.lang.String databaseDriver
          The fully-qualified class name of the database driver used for the DataSource.
private  java.lang.String databasePassword
          The password used for this factory's DataSource database connection, if the built-in connection pooling is used.
private  java.lang.String databaseType
          The type of database this factory connects to.
private  java.lang.String databaseURL
          The URL used for this factory's DataSource database connection, if the built-in connection pooling is used.
private  java.lang.String databaseUserName
          The user name used for this factory's DataSource database connection, if the built-in connection pooling is used.
private  javax.sql.DataSource dataSource
          The application's DataSource used for persistent storage.
private  java.lang.String dataSourceName
          The JNDI name for the application's DataSource, if one is set up in the servlet container's configuration.
static java.lang.String defaultSettingsLocation
          The default location of the properties file containing settings for initializing this factory's DataSource.
private  java.lang.String jndiContext
          The JNDI context for the application's DataSource, if one is set up in the servlet container's configuration.
(package private) static org.apache.commons.logging.Log log
           
private  java.lang.String maxActive
          The maximum number of active connections for the pool used by this factory's DataSource, if the built-in connection pooling is used.
private  java.lang.String maxIdle
          The maximum number of idle connections for the pool used by this factory's DataSource, if the built-in connection pooling is used.
private  java.lang.String maxWait
          The maximum time to wait for a connection to become available in milliseconds, before an exception is thrown.
private  java.lang.String paymentPrivateKeyFile
          The full path to the file on the server where the private key is stored for key pair encryption.
private  java.lang.String paymentPublicKeyFile
          The full path to the file on the server where the public key is stored for key pair (RSA) encryption.
private  java.lang.String removeAbandoned
          If set to true, abandoned connections will be removed and recycled.
private  java.lang.String removeAbandonedTimeout
          The number of seconds a connection is idle before it is considered abandoned.
private  Settings settings
          Used to look up the Java class names for the various DAO's this factory creates.
private  java.util.Map sqlMap
          A Map of SQL statements used by the application.
private  java.lang.String twoWayKeyFile
          The full path to the file on the server where the key is stored for two way (DES) encryption.
 
Fields inherited from class com.softslate.commerce.daos.core.BaseDAOFactory
moduleListString
 
Constructor Summary
LegacyDAOFactory()
           
 
Method Summary
 java.lang.Object createDAO(java.lang.String type)
          Creates and initializes a data access object for use by the application.
 java.lang.Object createSettingsDAO()
          Creates and initializes a settings bean data access object for use by the application.
 java.lang.String getDatabaseDriver()
           
 java.lang.String getDatabasePassword()
           
 java.lang.String getDatabaseType()
           
 java.lang.String getDatabaseURL()
           
 java.lang.String getDatabaseUserName()
           
 javax.sql.DataSource getDataSource()
           
 java.lang.String getDataSourceName()
           
 java.lang.String getJndiContext()
           
 javax.sql.DataSource getJndiDataSource()
          Looks up a DataSource object in a JNDI context.
 java.lang.String getMaxActive()
           
 java.lang.String getMaxIdle()
           
 java.lang.String getMaxWait()
           
 java.lang.String getPaymentPrivateKeyFile()
           
 java.lang.String getPaymentPublicKeyFile()
           
 javax.sql.DataSource getPooledDataSource()
          Creates a connection pool using various properties defined in this factory.
 java.lang.String getRemoveAbandoned()
           
 java.lang.String getRemoveAbandonedTimeout()
           
 Settings getSettings()
          Retrieves this factory's Settings instance.
 java.util.Map getSqlMap()
           
 java.util.Map getTransferMap()
          Retrieves a Map of properties that will be transfered to each of the data access objects this factory creates.
 java.lang.String getTwoWayKeyFile()
           
 void initialize()
          Initializes this DAOFactory.
 void initialize(java.lang.String settingsLocation)
          Initializes this DAOFactory using the settings defined in the file located at the imcoming settingLocation.
 void initializeDataSource()
          Initializes this factory's dataSource property.
 void initializeSettings(java.lang.String settingsLocation)
          Loads database settings from a properties file into the properties of this DAOFactory.
 void initializeSQLProperties()
          Reads in the application's SQL statements into this factory's sqlMap.
 void setDatabaseDriver(java.lang.String databaseDriver)
           
 void setDatabasePassword(java.lang.String databasePassword)
           
 void setDatabaseType(java.lang.String databaseType)
           
 void setDatabaseURL(java.lang.String databaseURL)
           
 void setDatabaseUserName(java.lang.String databaseUserName)
           
 void setDataSource(javax.sql.DataSource dataSource)
           
 void setDataSourceName(java.lang.String dataSourceName)
           
 void setJndiContext(java.lang.String jndiContext)
           
 void setMaxActive(java.lang.String maxActive)
           
 void setMaxIdle(java.lang.String maxIdle)
           
 void setMaxWait(java.lang.String maxWait)
           
 void setPaymentPrivateKeyFile(java.lang.String paymentPrivateKeyFile)
           
 void setPaymentPublicKeyFile(java.lang.String paymentPublicKeyFile)
           
 void setRemoveAbandoned(java.lang.String removeAbandoned)
           
 void setRemoveAbandonedTimeout(java.lang.String removeAbandonedTimeout)
           
 void setSettings(Settings settings)
           
 void setSqlMap(java.util.Map sqlMap)
           
 void setTwoWayKeyFile(java.lang.String twoWayKeyFile)
           
 
Methods inherited from class com.softslate.commerce.daos.core.BaseDAOFactory
beginTransaction, closeSession, commitTransaction, createDAOFromClassName, evictCache, getAppComponents, getAppSettings, getHibernateSettings, getModuleList, getModuleListString, getProperties, getSession, getSessionFactory, loadProperties, loadProperties, rollbackTransaction, setAppComponents, setAppSettings, setHibernateSettings, setModuleList, setModuleListString, setSessionFactory, startSession
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.softslate.commerce.daos.core.DAOFactory
beginTransaction, closeSession, commitTransaction, createDAOFromClassName, evictCache, getAppComponents, getAppSettings, getHibernateSettings, getModuleList, getModuleListString, getSession, getSessionFactory, rollbackTransaction, setAppComponents, setAppSettings, setHibernateSettings, setModuleList, setModuleListString, setSessionFactory, startSession
 

Field Detail

log

static org.apache.commons.logging.Log log

defaultSettingsLocation

public static final java.lang.String defaultSettingsLocation
The default location of the properties file containing settings for initializing this factory's DataSource.

See Also:
Constant Field Values

sqlMap

private java.util.Map sqlMap
A Map of SQL statements used by the application.


dataSource

private javax.sql.DataSource dataSource
The application's DataSource used for persistent storage.


dataSourceName

private java.lang.String dataSourceName
The JNDI name for the application's DataSource, if one is set up in the servlet container's configuration. (For example, in server.xml for Tomcat.)


jndiContext

private java.lang.String jndiContext
The JNDI context for the application's DataSource, if one is set up in the servlet container's configuration. (For example, in server.xml for Tomcat.)


databaseDriver

private java.lang.String databaseDriver
The fully-qualified class name of the database driver used for the DataSource.


databaseURL

private java.lang.String databaseURL
The URL used for this factory's DataSource database connection, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


databaseUserName

private java.lang.String databaseUserName
The user name used for this factory's DataSource database connection, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


databasePassword

private java.lang.String databasePassword
The password used for this factory's DataSource database connection, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


databaseType

private java.lang.String databaseType
The type of database this factory connects to. For example, "MSSQL" or "MySQL".


maxIdle

private java.lang.String maxIdle
The maximum number of idle connections for the pool used by this factory's DataSource, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


maxActive

private java.lang.String maxActive
The maximum number of active connections for the pool used by this factory's DataSource, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


maxWait

private java.lang.String maxWait
The maximum time to wait for a connection to become available in milliseconds, before an exception is thrown. Used by this factory's DataSource, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


removeAbandoned

private java.lang.String removeAbandoned
If set to true, abandoned connections will be removed and recycled. Used by this factory's DataSource, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


removeAbandonedTimeout

private java.lang.String removeAbandonedTimeout
The number of seconds a connection is idle before it is considered abandoned. Used by this factory's DataSource, if the built-in connection pooling is used. This factory will use its own connection pooling if it fails to connect using the JNDI dataSourceName and jndiContext settings.


paymentPrivateKeyFile

private java.lang.String paymentPrivateKeyFile
The full path to the file on the server where the private key is stored for key pair encryption.


paymentPublicKeyFile

private java.lang.String paymentPublicKeyFile
The full path to the file on the server where the public key is stored for key pair (RSA) encryption.


twoWayKeyFile

private java.lang.String twoWayKeyFile
The full path to the file on the server where the key is stored for two way (DES) encryption.


settings

private Settings settings
Used to look up the Java class names for the various DAO's this factory creates.

Constructor Detail

LegacyDAOFactory

public LegacyDAOFactory()
Method Detail

getSqlMap

public java.util.Map getSqlMap()
Specified by:
getSqlMap in interface DAOFactory
Overrides:
getSqlMap in class BaseDAOFactory

setSqlMap

public void setSqlMap(java.util.Map sqlMap)
Overrides:
setSqlMap in class BaseDAOFactory

getDataSource

public javax.sql.DataSource getDataSource()
Specified by:
getDataSource in interface DAOFactory
Overrides:
getDataSource in class BaseDAOFactory

setDataSource

public void setDataSource(javax.sql.DataSource dataSource)
Specified by:
setDataSource in interface DAOFactory
Overrides:
setDataSource in class BaseDAOFactory

getDataSourceName

public java.lang.String getDataSourceName()
Specified by:
getDataSourceName in interface DAOFactory
Overrides:
getDataSourceName in class BaseDAOFactory

setDataSourceName

public void setDataSourceName(java.lang.String dataSourceName)
Specified by:
setDataSourceName in interface DAOFactory
Overrides:
setDataSourceName in class BaseDAOFactory

getJndiContext

public java.lang.String getJndiContext()
Specified by:
getJndiContext in interface DAOFactory
Overrides:
getJndiContext in class BaseDAOFactory

setJndiContext

public void setJndiContext(java.lang.String jndiContext)
Specified by:
setJndiContext in interface DAOFactory
Overrides:
setJndiContext in class BaseDAOFactory

getDatabaseDriver

public java.lang.String getDatabaseDriver()
Specified by:
getDatabaseDriver in interface DAOFactory
Overrides:
getDatabaseDriver in class BaseDAOFactory

setDatabaseDriver

public void setDatabaseDriver(java.lang.String databaseDriver)
Specified by:
setDatabaseDriver in interface DAOFactory
Overrides:
setDatabaseDriver in class BaseDAOFactory

getDatabaseURL

public java.lang.String getDatabaseURL()
Specified by:
getDatabaseURL in interface DAOFactory
Overrides:
getDatabaseURL in class BaseDAOFactory

setDatabaseURL

public void setDatabaseURL(java.lang.String databaseURL)
Specified by:
setDatabaseURL in interface DAOFactory
Overrides:
setDatabaseURL in class BaseDAOFactory

getDatabaseUserName

public java.lang.String getDatabaseUserName()
Specified by:
getDatabaseUserName in interface DAOFactory
Overrides:
getDatabaseUserName in class BaseDAOFactory

setDatabaseUserName

public void setDatabaseUserName(java.lang.String databaseUserName)
Specified by:
setDatabaseUserName in interface DAOFactory
Overrides:
setDatabaseUserName in class BaseDAOFactory

getDatabasePassword

public java.lang.String getDatabasePassword()
Specified by:
getDatabasePassword in interface DAOFactory
Overrides:
getDatabasePassword in class BaseDAOFactory

setDatabasePassword

public void setDatabasePassword(java.lang.String databasePassword)
Specified by:
setDatabasePassword in interface DAOFactory
Overrides:
setDatabasePassword in class BaseDAOFactory

getDatabaseType

public java.lang.String getDatabaseType()
Specified by:
getDatabaseType in interface DAOFactory
Overrides:
getDatabaseType in class BaseDAOFactory

setDatabaseType

public void setDatabaseType(java.lang.String databaseType)
Specified by:
setDatabaseType in interface DAOFactory
Overrides:
setDatabaseType in class BaseDAOFactory

getMaxIdle

public java.lang.String getMaxIdle()
Specified by:
getMaxIdle in interface DAOFactory
Overrides:
getMaxIdle in class BaseDAOFactory

setMaxIdle

public void setMaxIdle(java.lang.String maxIdle)
Specified by:
setMaxIdle in interface DAOFactory
Overrides:
setMaxIdle in class BaseDAOFactory

getMaxActive

public java.lang.String getMaxActive()
Specified by:
getMaxActive in interface DAOFactory
Overrides:
getMaxActive in class BaseDAOFactory

setMaxActive

public void setMaxActive(java.lang.String maxActive)
Specified by:
setMaxActive in interface DAOFactory
Overrides:
setMaxActive in class BaseDAOFactory

getMaxWait

public java.lang.String getMaxWait()
Specified by:
getMaxWait in interface DAOFactory
Overrides:
getMaxWait in class BaseDAOFactory

setMaxWait

public void setMaxWait(java.lang.String maxWait)
Specified by:
setMaxWait in interface DAOFactory
Overrides:
setMaxWait in class BaseDAOFactory

getRemoveAbandoned

public java.lang.String getRemoveAbandoned()
Specified by:
getRemoveAbandoned in interface DAOFactory
Overrides:
getRemoveAbandoned in class BaseDAOFactory

setRemoveAbandoned

public void setRemoveAbandoned(java.lang.String removeAbandoned)
Specified by:
setRemoveAbandoned in interface DAOFactory
Overrides:
setRemoveAbandoned in class BaseDAOFactory

getRemoveAbandonedTimeout

public java.lang.String getRemoveAbandonedTimeout()
Specified by:
getRemoveAbandonedTimeout in interface DAOFactory
Overrides:
getRemoveAbandonedTimeout in class BaseDAOFactory

setRemoveAbandonedTimeout

public void setRemoveAbandonedTimeout(java.lang.String removeAbandonedTimeout)
Specified by:
setRemoveAbandonedTimeout in interface DAOFactory
Overrides:
setRemoveAbandonedTimeout in class BaseDAOFactory

getPaymentPrivateKeyFile

public java.lang.String getPaymentPrivateKeyFile()
Specified by:
getPaymentPrivateKeyFile in interface DAOFactory
Overrides:
getPaymentPrivateKeyFile in class BaseDAOFactory

setPaymentPrivateKeyFile

public void setPaymentPrivateKeyFile(java.lang.String paymentPrivateKeyFile)
Specified by:
setPaymentPrivateKeyFile in interface DAOFactory
Overrides:
setPaymentPrivateKeyFile in class BaseDAOFactory

getPaymentPublicKeyFile

public java.lang.String getPaymentPublicKeyFile()
Specified by:
getPaymentPublicKeyFile in interface DAOFactory
Overrides:
getPaymentPublicKeyFile in class BaseDAOFactory

setPaymentPublicKeyFile

public void setPaymentPublicKeyFile(java.lang.String paymentPublicKeyFile)
Specified by:
setPaymentPublicKeyFile in interface DAOFactory
Overrides:
setPaymentPublicKeyFile in class BaseDAOFactory

getTwoWayKeyFile

public java.lang.String getTwoWayKeyFile()
Specified by:
getTwoWayKeyFile in interface DAOFactory
Overrides:
getTwoWayKeyFile in class BaseDAOFactory

setTwoWayKeyFile

public void setTwoWayKeyFile(java.lang.String twoWayKeyFile)
Specified by:
setTwoWayKeyFile in interface DAOFactory
Overrides:
setTwoWayKeyFile in class BaseDAOFactory

getSettings

public Settings getSettings()
Description copied from interface: DAOFactory
Retrieves this factory's Settings instance. The current Settings, containing various settings to be used by DAOs created by this factory. This factory will pass the Settings to every object it creates.

Specified by:
getSettings in interface DAOFactory
Overrides:
getSettings in class BaseDAOFactory

setSettings

public void setSettings(Settings settings)
Specified by:
setSettings in interface DAOFactory
Overrides:
setSettings in class BaseDAOFactory

initialize

public void initialize()
                throws java.lang.Exception
Initializes this DAOFactory. Called by BaseRequestProcessor.

Specified by:
initialize in interface DAOFactory
Overrides:
initialize in class BaseDAOFactory
Throws:
java.lang.Exception

initialize

public void initialize(java.lang.String settingsLocation)
                throws java.lang.Exception
Initializes this DAOFactory using the settings defined in the file located at the imcoming settingLocation.

Specified by:
initialize in interface DAOFactory
Overrides:
initialize in class BaseDAOFactory
Parameters:
settingsLocation - The location of a file containing database settings.
Throws:
java.lang.Exception

initializeSQLProperties

public void initializeSQLProperties()
                             throws java.lang.Exception
Reads in the application's SQL statements into this factory's sqlMap. Loops through each of the active modules defined in the moduleList property and reads in the SQL properities from the files in "/WEB-INF/classes/resources.

Specified by:
initializeSQLProperties in interface DAOFactory
Overrides:
initializeSQLProperties in class BaseDAOFactory
Throws:
java.lang.Exception

initializeSettings

public void initializeSettings(java.lang.String settingsLocation)
Loads database settings from a properties file into the properties of this DAOFactory.

Overrides:
initializeSettings in class BaseDAOFactory
Parameters:
settingsLocation - The location of a file containing database settings.

initializeDataSource

public void initializeDataSource()
                          throws java.lang.Exception
Initializes this factory's dataSource property. This method first attempts to establish a DataSource based on a JNDI data source name and context defined in the JNDI environment, using the datasourceName and jndiContext properties. If this fails, it will create it's own connection pool using the various other properties defined in this factory, including the databaseURL,databaseUserName, and databasePassword properties.

Specified by:
initializeDataSource in interface DAOFactory
Overrides:
initializeDataSource in class BaseDAOFactory
Throws:
java.lang.Exception

getJndiDataSource

public javax.sql.DataSource getJndiDataSource()
                                       throws java.lang.Exception
Looks up a DataSource object in a JNDI context. Attempts to establish a DataSource based on a JNDI data source name and context defined in the JNDI environment, using the datasourceName and jndiContext properties.

Specified by:
getJndiDataSource in interface DAOFactory
Overrides:
getJndiDataSource in class BaseDAOFactory
Returns:
A DataSource object for the application.
Throws:
java.lang.Exception

getPooledDataSource

public javax.sql.DataSource getPooledDataSource()
                                         throws java.lang.Exception
Creates a connection pool using various properties defined in this factory. Returns a DataSource object tied to it.

Overrides:
getPooledDataSource in class BaseDAOFactory
Returns:
A DataSource object for the application.
Throws:
java.lang.Exception

getTransferMap

public java.util.Map getTransferMap()
Retrieves a Map of properties that will be transfered to each of the data access objects this factory creates.

Overrides:
getTransferMap in class BaseDAOFactory
Returns:
A Map of properties that will be transfered to each of the data access objects this factory creates

createSettingsDAO

public java.lang.Object createSettingsDAO()
                                   throws java.lang.Exception
Creates and initializes a settings bean data access object for use by the application.

Specified by:
createSettingsDAO in interface DAOFactory
Overrides:
createSettingsDAO in class BaseDAOFactory
Returns:
An instantiated and initialized settings bean data access object, or null if initialization failed.
Throws:
java.lang.Exception

createDAO

public java.lang.Object createDAO(java.lang.String type)
                           throws java.lang.Exception
Creates and initializes a data access object for use by the application. Uses the settings property to look up the fully-qualified class name of the requested data access object. It then appends the value of the databaseType property to the class name and attempts to instantiate that object. If that fails, it next appends "Basic" to the end of the class name. If a class still cannot be found, the class name from the database setting itself is used.

For example, if this factory's databaseType is "MSSQL" and it receives a request to create an instance of the system's "customerDAOImplementer", and the database setting for "customerDAOImplementer" is com.softslate.commerce.daos.customer.CustomerDAO, this factory will try to instantiate the following objects in this order:

  1. com.softslate.commerce.daos.customer.CustomerDAOMSSQL
  2. com.softslate.commerce.daos.customer.CustomerDAOBasic
  3. com.softslate.commerce.daos.customer.CustomerDAO

Immediately after instantiating the requested DAO, this factory passes its own properties to it so that the newly created object can use them to communicate with the rest of the application.

Specified by:
createDAO in interface DAOFactory
Overrides:
createDAO in class BaseDAOFactory
Parameters:
type - A String associated with the class name of the data access object to be created.
Returns:
An instantiated and initialized data access object, or null if initialization failed.
Throws:
java.lang.Exception


Copyright ? SoftSlate, LLC 2003?2005