Interface BusinessObjectFactory

All Known Implementing Classes:
BusinessObjectFactoryImpl

public interface BusinessObjectFactory
Interface for the factory class used to create instances of business layer objects, BusinessObjectFactoryImpl. 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
  • Method Details

    • getAppSettings

      Properties getAppSettings()
      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.
      Returns:
      A Properties object that represents various settings for the application.
    • setAppSettings

      void setAppSettings(Properties appSettings)
      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.
      Parameters:
      appSettings - The current application settings in effect for the system.
    • getAppComponents

      Properties getAppComponents()
      Retrieves the application components previously set for this factory. The components identify which Java class implement the various Interfaces used by the system.
      Returns:
      A Properties object that represents the components for the application.
    • setAppComponents

      void setAppComponents(Properties appComponents)
      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.
      Parameters:
      appComponents - The current application components in effect for the system.
    • getUser

      User getUser()
      Retrieves the User previously set for this factory.
      Returns:
      A User object that represents the user currently accessing the system.
    • setUser

      void setUser(User user)
      Sets this factory's User. This factory will pass the User to every business object it creates.
      Parameters:
      user - The current User accessing the system, for which business processing is to be performed by business objects created by this factory.
    • getSettings

      Settings getSettings()
      Retrieves the Settings previously set for this factory.
      Returns:
      A Settings object that represents various settings for the system.
    • setSettings

      void setSettings(Settings settings)
      Sets this factory's Settings instance. This factory will pass the Settings to every business object it creates.
      Parameters:
      settings - The current Settings for the system, containing various settings to be used by business objects created by this factory.
    • getDaoFactory

      DAOFactory getDaoFactory()
      Retrieves the DAOFactory previously set for this factory.
      Returns:
      A DAOFactory object that can be used to create data access objects.
    • setDaoFactory

      void setDaoFactory(DAOFactory daoFactory)
      Sets this factory's DAOFactory. This factory will pass the DAOFactory to every business object it creates.
      Parameters:
      daoFactory - The current DAOFactory for the system, which will allow business objects created by this factory to create data access objects.
    • getInjector

      com.google.inject.Injector getInjector()
      Retrieves the Injector previously set for this factory.
      Returns:
      A Injector object that can be used to create other objects and inject them with dependencies.
    • setInjector

      void setInjector(com.google.inject.Injector injector)
      Sets this factory's Injector. This factory will pass the Injector to every business object it creates.
      Parameters:
      injector - The current Injector for the system, which can be used to create other objects and inject them with dependencies.
    • getEventBus

      com.google.common.eventbus.EventBus getEventBus()
      Retrieves the EventBus previously set for this factory.
      Returns:
      A EventBus object that can be used to post events and trigger subscribers to run their code.
    • setEventBus

      void setEventBus(com.google.common.eventbus.EventBus eventBus)
      Sets this factory's EventBus. This factory will pass the EventBus to every business object it creates.
      Parameters:
      eventBus - The current EventBus for the system, which can be used to post events to subscribers
    • createObject

      <T extends BusinessObject> T createObject(String type) throws Exception
      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.

      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:
      Exception
    • createObjectFromClassName

      <T extends BusinessObject> T createObjectFromClassName(String className) throws Exception
      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.

      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:
      Exception
    • createObjectFromClassDefinition

      <T extends BusinessObject> T createObjectFromClassDefinition(Class classDefinition) throws Exception
      Throws:
      Exception
    • createObject

      <T extends BusinessObject> T createObject(Class<T> type)
    • invokeMultipleProcessors

      Map invokeMultipleProcessors(String type, String method, Map argument) throws Exception
      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.
      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:
      Exception
    • invokeMultipleCollectionProcessors

      Collection invokeMultipleCollectionProcessors(String type, String method, Map argument) throws Exception
      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.
      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:
      Exception
    • createUtilsObject

      Object createUtilsObject(String type)
      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):

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

      <T> T createUtilsObject(Class<T> type)
    • getTransferMap

      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.