com.softslate.commerce.businessobjects.core
Class BusinessObjectFactoryImpl

java.lang.Object
  extended by com.softslate.commerce.businessobjects.core.BusinessObjectFactoryImpl
All Implemented Interfaces:
BusinessObjectFactory

public class BusinessObjectFactoryImpl
extends java.lang.Object
implements BusinessObjectFactory

Factory class used to create instances of business layer objects. Objects are created with the createObject, createObjectFromClassName, or createUtilsObject methods.

Generally, this class uses its appComponents property to look up the fully-qualified class name of the requested interface (taken from the appComponents.properties file. Then it uses the Java reflection API to create the instance.

An instance of BusinessObjectFactory is created in the Struts layer. Its properties are populated there with the application's DAOFactory, Settings, appComponents, appSettings, and with the User currently accessing the system.

Immediately after instantiating the requested business object, 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.util.Properties appComponents
          This factory's component settings.
private  java.util.Properties appSettings
          This factory's application settings.
private  DAOFactory daoFactory
          This factory's DAOFactory.
(package private) static org.apache.commons.logging.Log log
           
private  Settings settings
          This factory's Settings instance.
private  User user
          This factory's User.
 
Constructor Summary
BusinessObjectFactoryImpl()
           
BusinessObjectFactoryImpl(Settings settings)
           
 
Method Summary
 java.lang.Object createObject(java.lang.String type)
          Creates a business object.
 java.lang.Object createObjectFromClassName(java.lang.String className)
          Creates a business object.
 java.lang.Object createUtilsObject(java.lang.String type)
          Given a type corresponding to a key in the appComponents.properties file, creates and returns a utility object corresponding to the key.
 java.util.Properties getAppComponents()
          Retrieves the application components previously set for this factory.
 java.util.Properties getAppSettings()
          Retrieves the application settings previously set for this factory.
 DAOFactory getDaoFactory()
          Retrieves the DAOFactory previously set for this factory.
 Settings getSettings()
          Retrieves the Settings previously set for this factory.
 java.util.Map getTransferMap()
          Creates a Map of this factory's properties.
 User getUser()
          Retrieves the User previously set for this factory.
 java.util.Collection invokeMultipleCollectionProcessors(java.lang.String type, java.lang.String method, java.util.Map argument)
          Given a type corresponding to a key in the appComponents.properties file, a method name, and a Map as the argument, loops through all BusinessProcessors configured in appComponents.properties, calling each in turn.
 java.util.Map invokeMultipleProcessors(java.lang.String type, java.lang.String method, java.util.Map argument)
          Given a type corresponding to a key in the appComponents.properties file, a method name, and a Map as the argument, loops through all BusinessProcessors configured in appComponents.properties, calling each in turn.
 void setAppComponents(java.util.Properties appComponents)
          Sets this factory's application components.
 void setAppSettings(java.util.Properties appSettings)
          Sets this factory's application settings.
 void setDaoFactory(DAOFactory daoFactory)
          Sets this factory's DAOFactory.
 void setSettings(Settings settings)
          Sets this factory's Settings instance.
 void setUser(User user)
          Sets this factory's User.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

static org.apache.commons.logging.Log log

user

private User user
This factory's User. The current User accessing the system, for which business processing is to be performed by business objects created by this factory. This factory will pass the User to every business object it creates.


settings

private Settings settings
This factory's Settings instance. The current Settings, containing various settings to be used by business objects created by this factory. This factory will pass the Settings to every business object it creates.


appSettings

private java.util.Properties appSettings
This factory's application settings. The current application settings for the system. This factory will pass the application settings to every business object it creates. The application settings are settings for information unique to a given installation, such as the location of files on the server, as opposed to the SettingsBean, which stores settings drawn from the database.


appComponents

private java.util.Properties appComponents
This factory's component settings. The component settings identify which Java classes implement the various interfaces used by the system.


daoFactory

private DAOFactory daoFactory
This factory's DAOFactory. The current DAOFactory for the system, which will allow business objects created by this factory to create data access objects. This factory will pass the DAOFactory to every business object it creates.

Constructor Detail

BusinessObjectFactoryImpl

public BusinessObjectFactoryImpl()

BusinessObjectFactoryImpl

public BusinessObjectFactoryImpl(Settings settings)
Method Detail

getUser

public User getUser()
Description copied from interface: BusinessObjectFactory
Retrieves the User previously set for this factory.

Specified by:
getUser in interface BusinessObjectFactory
Returns:
A User object that represents the user currently accessing the system.

setUser

public void setUser(User user)
Description copied from interface: BusinessObjectFactory
Sets this factory's User. This factory will pass the User to every business object it creates.

Specified by:
setUser in interface BusinessObjectFactory
Parameters:
user - The current User accessing the system, for which business processing is to be performed by business objects created by this factory.

getSettings

public Settings getSettings()
Description copied from interface: BusinessObjectFactory
Retrieves the Settings previously set for this factory.

Specified by:
getSettings in interface BusinessObjectFactory
Returns:
A Settings object that represents various settings for the system.

setSettings

public void setSettings(Settings settings)
Description copied from interface: BusinessObjectFactory
Sets this factory's Settings instance. This factory will pass the Settings to every business object it creates.

Specified by:
setSettings in interface BusinessObjectFactory
Parameters:
settings - The current Settings for the system, containing various settings to be used by business objects created by this factory.

getAppSettings

public java.util.Properties getAppSettings()
Description copied from interface: BusinessObjectFactory
Retrieves the application settings previously set for this factory. The application settings are settings for information unique to a given installation, such as the location of files on the server, as opposed to the Settings, which stores settings drawn from the database.

Specified by:
getAppSettings in interface BusinessObjectFactory
Returns:
A Properties object that represents various settings for the application.

setAppSettings

public void setAppSettings(java.util.Properties appSettings)
Description copied from interface: BusinessObjectFactory
Sets this factory's application settings. This factory will pass the application settings to every business object it creates. The application settings are settings for information unique to a given installation, such as the location of files on the server, as opposed to the Settings interface, which stores settings drawn from the database.

Specified by:
setAppSettings in interface BusinessObjectFactory
Parameters:
appSettings - The current application settings in effect for the system.

getAppComponents

public java.util.Properties getAppComponents()
Description copied from interface: BusinessObjectFactory
Retrieves the application components previously set for this factory. The components identify which Java class implement the various Interfaces used by the system.

Specified by:
getAppComponents in interface BusinessObjectFactory
Returns:
A Properties object that represents the components for the application.

setAppComponents

public void setAppComponents(java.util.Properties appComponents)
Description copied from interface: BusinessObjectFactory
Sets this factory's application components. This factory will pass the application components to every business object it creates. The components identify which Java class implement the various Interfaces used by the system.

Specified by:
setAppComponents in interface BusinessObjectFactory
Parameters:
appComponents - The current application components in effect for the system.

getDaoFactory

public DAOFactory getDaoFactory()
Description copied from interface: BusinessObjectFactory
Retrieves the DAOFactory previously set for this factory.

Specified by:
getDaoFactory in interface BusinessObjectFactory
Returns:
A DAOFactory object that can be used to create data access objects.

setDaoFactory

public void setDaoFactory(DAOFactory daoFactory)
Description copied from interface: BusinessObjectFactory
Sets this factory's DAOFactory. This factory will pass the DAOFactory to every business object it creates.

Specified by:
setDaoFactory in interface BusinessObjectFactory
Parameters:
daoFactory - The current DAOFactory for the system, which will allow business objects created by this factory to create data access objects.

createObject

public java.lang.Object createObject(java.lang.String type)
                              throws java.lang.Exception
Description copied from interface: BusinessObjectFactory
Creates a business object.

A lookup is performed first to find the fully-qualified Java class name of the object to create. The type parameter corresponds to a key in the appComponents.properties file. This factory uses its appComponents property to perform the lookup.

If the Java class name is found, an object is created, and then this factory populates it with its own properties. These properties allow the newly create object to communicate with the rest of the application.

Specified by:
createObject in interface BusinessObjectFactory
Parameters:
type - A String associated with the class name of the business object to be created.
Returns:
An instance of the requested business object, or null, if an error occurs.
Throws:
java.lang.Exception

createObjectFromClassName

public java.lang.Object createObjectFromClassName(java.lang.String className)
                                           throws java.lang.Exception
Description copied from interface: BusinessObjectFactory
Creates a business object.

Using the className parameter, this factory creates an object, and then populates it with its own properties. These properties allow the newly create object to communicate with the rest of the application.

Specified by:
createObjectFromClassName in interface BusinessObjectFactory
Parameters:
className - A String associated with the class name of the business object to be created.
Returns:
An instance of the requested business object, or null, if an error occurs.
Throws:
java.lang.Exception

createUtilsObject

public java.lang.Object createUtilsObject(java.lang.String type)
Description copied from interface: BusinessObjectFactory
Given a type corresponding to a key in the appComponents.properties file, creates and returns a utility object corresponding to the key.

If no class can be instantiated for the given class name, an instance of one of the following classes is automatically returned (depending on the value of the type parameter):

Specified by:
createUtilsObject in interface BusinessObjectFactory
Parameters:
type - A String such as "formUtilsImplementer" corresponding to a key in the appComponents.properties file.
Returns:
An instance of the requested business object.

invokeMultipleProcessors

public java.util.Map invokeMultipleProcessors(java.lang.String type,
                                              java.lang.String method,
                                              java.util.Map argument)
                                       throws java.lang.Exception
Description copied from interface: BusinessObjectFactory
Given a type corresponding to a key in the appComponents.properties file, a method name, and a Map as the argument, loops through all BusinessProcessors configured in appComponents.properties, calling each in turn. Returns a Map compling all the results of each BusinessProcessor called. If any of the BusinessProcessors returns a Map with a key of resultCode that is not equal to "0", processing of all remaining processors is halted, and this method returns immediately.

Specified by:
invokeMultipleProcessors in interface BusinessObjectFactory
Parameters:
type - A String such as "activePaymentProcessors" corresponding to a key in the appComponents.properties file.
method - The method of each BusinessProcessor to invoke in turn.
argument - A Map representing the single argument the method accepts.
Returns:
A Map representing all the results of each processor combined. They are combined into a single Map using the Map.putAll() method.
Throws:
java.lang.Exception

invokeMultipleCollectionProcessors

public java.util.Collection invokeMultipleCollectionProcessors(java.lang.String type,
                                                               java.lang.String method,
                                                               java.util.Map argument)
                                                        throws java.lang.Exception
Description copied from interface: BusinessObjectFactory
Given a type corresponding to a key in the appComponents.properties file, a method name, and a Map as the argument, loops through all BusinessProcessors configured in appComponents.properties, calling each in turn. Returns a Collection compling all the results of each BusinessProcessor called.

Specified by:
invokeMultipleCollectionProcessors in interface BusinessObjectFactory
Parameters:
type - A String such as "activeShippingProcessors" corresponding to a key in the appComponents.properties file.
method - The method of each BusinessProcessor to invoke in turn. (E.g. "loadShippingOptions")
argument - A Map representing the single argument the method accepts.
Returns:
A Collection representing all the results of each processor combined.
Throws:
java.lang.Exception

getTransferMap

public java.util.Map getTransferMap()
Creates a Map of this factory's properties. This factory will pass the Map to the initialize(Map parameters) method of each business object it creates, which in turn populates the object's properties.

Returns:
A Map of this factory's properties.


Copyright ? SoftSlate, LLC 2003?2005