|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.softslate.commerce.daos.core.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
settingsBean
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:
com.softslate.commerce.daos.customer.CustomerDAOMSSQL
com.softslate.commerce.daos.customer.CustomerDAOBasic
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.
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.util.StringTokenizer |
moduleList
The list of modules in use by the application in StringTokenizer form. |
private java.lang.String |
moduleListString
The list of modules in use by the application in String
form. |
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 SettingsBean |
settingsBean
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. |
Constructor Summary | |
DAOFactory()
|
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 |
createDAOFromClassName(java.lang.String className)
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.util.StringTokenizer |
getModuleList()
|
java.lang.String |
getModuleListString()
|
java.lang.String |
getPaymentPrivateKeyFile()
|
java.lang.String |
getPaymentPublicKeyFile()
|
javax.sql.DataSource |
getPooledDataSource()
Creates a connection pool using various properties defined in this factory. |
java.util.Properties |
getProperties(java.lang.String databaseType,
java.lang.String module)
Loads SQL statements into a Properties object for a given
database type. |
java.lang.String |
getRemoveAbandoned()
|
java.lang.String |
getRemoveAbandonedTimeout()
|
SettingsBean |
getSettingsBean()
|
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 . |
java.util.Properties |
loadProperties(java.lang.String path)
Load properties from a .properties file represented by the argument. |
java.util.Properties |
loadProperties(java.lang.String path,
java.util.Properties defaultProperties)
Load properties from a .properties file represented by the argument, using a given Properties object as the default properties. |
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 |
setModuleList(java.util.StringTokenizer moduleList)
|
void |
setModuleListString(java.lang.String moduleListString)
|
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 |
setSettingsBean(SettingsBean settingsBean)
|
void |
setSqlMap(java.util.Map sqlMap)
|
void |
setTwoWayKeyFile(java.lang.String twoWayKeyFile)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
static org.apache.commons.logging.Log log
public static final java.lang.String defaultSettingsLocation
DataSource
.
private java.util.Map sqlMap
Map
of SQL statements used by the application.
private java.util.StringTokenizer moduleList
StringTokenizer
form. Modules may include core, product,
order, and customer.
private java.lang.String moduleListString
String
form. Modules may include core, product, order, and customer.
private javax.sql.DataSource dataSource
DataSource
used for persistent storage.
private java.lang.String dataSourceName
DataSource
, if one is
set up in the servlet container's configuration. (For example, in
server.xml for Tomcat.)
private java.lang.String jndiContext
DataSource
, if one
is set up in the servlet container's configuration. (For example, in
server.xml for Tomcat.)
private java.lang.String databaseDriver
DataSource
.
private java.lang.String databaseURL
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.
private java.lang.String databaseUserName
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.
private java.lang.String databasePassword
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.
private java.lang.String databaseType
private java.lang.String maxIdle
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.
private java.lang.String maxActive
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.
private java.lang.String maxWait
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.
private java.lang.String removeAbandoned
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.
private java.lang.String removeAbandonedTimeout
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.
private java.lang.String paymentPrivateKeyFile
private java.lang.String paymentPublicKeyFile
private java.lang.String twoWayKeyFile
private SettingsBean settingsBean
Constructor Detail |
public DAOFactory()
Method Detail |
public java.util.Map getSqlMap()
public void setSqlMap(java.util.Map sqlMap)
public java.util.StringTokenizer getModuleList()
public void setModuleList(java.util.StringTokenizer moduleList)
public java.lang.String getModuleListString()
public void setModuleListString(java.lang.String moduleListString)
public javax.sql.DataSource getDataSource()
public void setDataSource(javax.sql.DataSource dataSource)
public java.lang.String getDataSourceName()
public void setDataSourceName(java.lang.String dataSourceName)
public java.lang.String getJndiContext()
public void setJndiContext(java.lang.String jndiContext)
public java.lang.String getDatabaseDriver()
public void setDatabaseDriver(java.lang.String databaseDriver)
public java.lang.String getDatabaseURL()
public void setDatabaseURL(java.lang.String databaseURL)
public java.lang.String getDatabaseUserName()
public void setDatabaseUserName(java.lang.String databaseUserName)
public java.lang.String getDatabasePassword()
public void setDatabasePassword(java.lang.String databasePassword)
public java.lang.String getDatabaseType()
public void setDatabaseType(java.lang.String databaseType)
public java.lang.String getMaxIdle()
public void setMaxIdle(java.lang.String maxIdle)
public java.lang.String getMaxActive()
public void setMaxActive(java.lang.String maxActive)
public java.lang.String getMaxWait()
public void setMaxWait(java.lang.String maxWait)
public java.lang.String getRemoveAbandoned()
public void setRemoveAbandoned(java.lang.String removeAbandoned)
public java.lang.String getRemoveAbandonedTimeout()
public void setRemoveAbandonedTimeout(java.lang.String removeAbandonedTimeout)
public java.lang.String getPaymentPrivateKeyFile()
public void setPaymentPrivateKeyFile(java.lang.String paymentPrivateKeyFile)
public java.lang.String getPaymentPublicKeyFile()
public void setPaymentPublicKeyFile(java.lang.String paymentPublicKeyFile)
public java.lang.String getTwoWayKeyFile()
public void setTwoWayKeyFile(java.lang.String twoWayKeyFile)
public SettingsBean getSettingsBean()
public void setSettingsBean(SettingsBean settingsBean)
public void initialize() throws java.lang.Exception
DAOFactory
. Called by
BaseRequestProcessor
.
java.lang.Exception
public void initialize(java.lang.String settingsLocation) throws java.lang.Exception
DAOFactory
using the settings defined in
the file located at the imcoming settingLocation
.
settingsLocation
- The location of a file containing database settings.
java.lang.Exception
public void initializeSQLProperties() throws java.lang.Exception
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.
java.lang.Exception
public void initializeSettings(java.lang.String settingsLocation)
DAOFactory
.
settingsLocation
- The location of a file containing database settings.public java.util.Properties getProperties(java.lang.String databaseType, java.lang.String module) throws java.lang.Exception
Properties
object for a given
database type. Reads a default sql.properties file for a given module
under "WEB-INF/classes/resources" and then another file with SQL
statements that override the defaults with SQL specific to the given
database type. Finally, loads the sql-custom.properties file in each
module to provide a way to override any of the statements deployed with
the application.
databaseType
- The type of database the SQL statements apply to.module
- The module the SQL statements correspond to. For example,
core, product, order, or customer.
Properties
object representing the SQL
statements.
java.lang.Exception
public java.util.Properties loadProperties(java.lang.String path)
path
- The path to the .properties file being loaded.
Properties
object representing the contents of
the file.public java.util.Properties loadProperties(java.lang.String path, java.util.Properties defaultProperties)
Properties
object as the default properties.
path
- The path to the .properties file being loaded.defaultProperties
- A Properties
object representing the default
properties to be returned.
Properties
object representing the contents of
the file.public void initializeDataSource() throws java.lang.Exception
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.
java.lang.Exception
public javax.sql.DataSource getJndiDataSource() throws java.lang.Exception
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.
DataSource
object for the application.
java.lang.Exception
public javax.sql.DataSource getPooledDataSource() throws java.lang.Exception
DataSource
object tied to it.
DataSource
object for the application.
java.lang.Exception
public java.util.Map getTransferMap()
Map
of properties that will be transfered to
each of the data access objects this factory creates.
Map
of properties that will be transfered to
each of the data access objects this factory createspublic java.lang.Object createSettingsDAO() throws java.lang.Exception
null
if initialization failed.
java.lang.Exception
public java.lang.Object createDAO(java.lang.String type) throws java.lang.Exception
settingsBean
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:
com.softslate.commerce.daos.customer.CustomerDAOMSSQL
com.softslate.commerce.daos.customer.CustomerDAOBasic
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.
type
- A String
associated with the class name of the
data access object to be created.
null
if initialization failed.
java.lang.Exception
public java.lang.Object createDAOFromClassName(java.lang.String className) throws java.lang.Exception
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 class name itself is used.
For example, if this factory receives a request to create an instance of
CustomerDAO
, this factory will try to instantiate the
following objects in this order:
com.softslate.commerce.daos.customer.CustomerDAOMSSQL
com.softslate.commerce.daos.customer.CustomerDAOBasic
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.
className
- A String
representing the class name of the
data access object to be created.
null
if initialization failed.
java.lang.Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |