org.broadleafcommerce.openadmin.server.service.persistence.module
Class BasicPersistenceModule

java.lang.Object
  extended by org.broadleafcommerce.openadmin.server.service.persistence.module.BasicPersistenceModule
All Implemented Interfaces:
DataFormatProvider, PersistenceModule, RecordHelper, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware
Direct Known Subclasses:
AdornedTargetListPersistenceModule, MapStructurePersistenceModule

@Component(value="blBasicPersistenceModule")
@Scope(value="prototype")
public class BasicPersistenceModule
extends Object
implements PersistenceModule, RecordHelper, org.springframework.context.ApplicationContextAware

Author:
jfischer

Field Summary
static String ALTERNATE_ID_PROPERTY
           
protected  org.springframework.context.ApplicationContext applicationContext
           
protected  CriteriaTranslator criteriaTranslator
           
protected  DecimalFormat decimalFormat
           
protected  FieldPersistenceProvider defaultFieldPersistenceProvider
           
protected  EntityValidatorService entityValidatorService
           
protected  List<FieldPersistenceProvider> fieldPersistenceProviders
           
static String MAIN_ENTITY_NAME_PROPERTY
           
protected  PersistenceManager persistenceManager
           
protected  List<PopulateValueRequestValidator> populateValidators
           
protected  RestrictionFactory restrictionFactory
           
 
Constructor Summary
BasicPersistenceModule()
           
 
Method Summary
 Entity add(PersistencePackage persistencePackage)
           
 EntityResult add(PersistencePackage persistencePackage, boolean includeRealEntityObject)
           
 Serializable createPopulatedInstance(Serializable instance, Entity entity, Map<String,FieldMetadata> unfilteredProperties, Boolean setId)
          Populates a Hibernate entity instance based on the values from entity (the DTO representation of instance) and the metadata from mergedProperties.
 void extractProperties(Class<?>[] inheritanceLine, Map<MergedPropertyType,Map<String,FieldMetadata>> mergedProperties, List<Property> properties)
           
protected  void extractPropertiesFromMetadata(Class<?>[] inheritanceLine, Map<String,FieldMetadata> mergedProperties, List<Property> properties, Boolean isHiddenOverride, MergedPropertyType type)
           
protected  void extractPropertiesFromPersistentEntity(Map<String,FieldMetadata> mergedProperties, Serializable entity, List<Property> props)
           
 DynamicResultSet fetch(PersistencePackage persistencePackage, CriteriaTransferObject cto)
           
protected  Map<String,FieldMetadata> filterOutCollectionMetadata(Map<String,FieldMetadata> metadata)
           
 String formatValue(Object value)
          Formats a aw value from an entity into its string representation used by the system.
protected  Class<?> getBasicBroadleafType(SupportedFieldType fieldType)
           
 PersistenceModule getCompatibleModule(OperationType operationType)
           
 CriteriaTranslator getCriteriaTranslator()
           
 DecimalFormat getDecimalFormatter()
           
 FieldPersistenceProvider getDefaultFieldPersistenceProvider()
           
 EntityValidatorService getEntityValidatorService()
           
 FieldManager getFieldManager()
           
 List<FieldPersistenceProvider> getFieldPersistenceProviders()
           
 List<FilterMapping> getFilterMappings(PersistencePerspective persistencePerspective, CriteriaTransferObject cto, String ceilingEntityFullyQualifiedClassname, Map<String,FieldMetadata> mergedUnfilteredProperties)
           
 List<FilterMapping> getFilterMappings(PersistencePerspective persistencePerspective, CriteriaTransferObject cto, String ceilingEntityFullyQualifiedClassname, Map<String,FieldMetadata> mergedUnfilteredProperties, RestrictionFactory customRestrictionFactory)
           
protected  Class<?> getMapFieldType(Serializable instance, FieldManager fieldManager, Property property)
           
 PersistenceManager getPersistenceManager()
           
 List<Serializable> getPersistentRecords(String ceilingEntity, List<FilterMapping> filterMappings, Integer firstResult, Integer maxResults)
           
 Object getPrimaryKey(Entity entity, Map<String,FieldMetadata> mergedUnfilteredProperties)
           
 Entity getRecord(Class<?> ceilingEntityClass, PersistencePerspective persistencePerspective, Serializable record)
           
 Entity getRecord(Map<String,FieldMetadata> primaryMergedProperties, Serializable record, Map<String,FieldMetadata> alternateMergedProperties, String pathToTargetObject)
           
 Entity[] getRecords(Class<?> ceilingEntityClass, PersistencePerspective persistencePerspective, List<? extends Serializable> records)
           
 Entity[] getRecords(Map<String,FieldMetadata> primaryMergedProperties, List<? extends Serializable> records)
           
 Entity[] getRecords(Map<String,FieldMetadata> primaryUnfilteredMergedProperties, List<? extends Serializable> records, Map<String,FieldMetadata> alternateUnfilteredMergedProperties, String pathToTargetObject)
           
 RestrictionFactory getRestrictionFactory()
           
 SimpleDateFormat getSimpleDateFormatter()
           
 Map<String,FieldMetadata> getSimpleMergedProperties(String entityName, PersistencePerspective persistencePerspective)
           
 String getStringValueFromGetter(Serializable instance, String propertyName)
          Returns a string representation of the field on the given instance specified by the property name.
 Integer getTotalRecords(String ceilingEntity, List<FilterMapping> filterMappings)
           
 boolean isCompatible(OperationType operationType)
           
 void remove(PersistencePackage persistencePackage)
           
 void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
           
 void setCriteriaTranslator(CriteriaTranslator criteriaTranslator)
           
 void setDefaultFieldPersistenceProvider(FieldPersistenceProvider defaultFieldPersistenceProvider)
           
 void setEntityValidatorService(EntityValidatorService entityValidatorService)
           
 void setFieldPersistenceProviders(List<FieldPersistenceProvider> fieldPersistenceProviders)
           
 void setPersistenceManager(PersistenceManager persistenceManager)
           
 void setRestrictionFactory(RestrictionFactory restrictionFactory)
           
 Entity update(PersistencePackage persistencePackage)
           
 EntityResult update(PersistencePackage persistencePackage, boolean includeRealEntityObject)
           
protected  EntityResult update(PersistencePackage persistencePackage, Object primaryKey, boolean includeRealEntity)
           
 void updateMergedProperties(PersistencePackage persistencePackage, Map<MergedPropertyType,Map<String,FieldMetadata>> allMergedProperties)
           
 boolean validate(Entity entity, Serializable populatedInstance, Map<String,FieldMetadata> mergedProperties)
          Validates the Entity based on the validators associated with each property
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAIN_ENTITY_NAME_PROPERTY

public static final String MAIN_ENTITY_NAME_PROPERTY
See Also:
Constant Field Values

ALTERNATE_ID_PROPERTY

public static final String ALTERNATE_ID_PROPERTY
See Also:
Constant Field Values

decimalFormat

protected DecimalFormat decimalFormat

applicationContext

protected org.springframework.context.ApplicationContext applicationContext

persistenceManager

protected PersistenceManager persistenceManager

entityValidatorService

protected EntityValidatorService entityValidatorService

fieldPersistenceProviders

protected List<FieldPersistenceProvider> fieldPersistenceProviders

populateValidators

protected List<PopulateValueRequestValidator> populateValidators

defaultFieldPersistenceProvider

protected FieldPersistenceProvider defaultFieldPersistenceProvider

criteriaTranslator

protected CriteriaTranslator criteriaTranslator

restrictionFactory

protected RestrictionFactory restrictionFactory
Constructor Detail

BasicPersistenceModule

public BasicPersistenceModule()
Method Detail

setApplicationContext

public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
                           throws org.springframework.beans.BeansException
Specified by:
setApplicationContext in interface org.springframework.context.ApplicationContextAware
Throws:
org.springframework.beans.BeansException

isCompatible

public boolean isCompatible(OperationType operationType)
Specified by:
isCompatible in interface PersistenceModule

getFieldManager

public FieldManager getFieldManager()
Specified by:
getFieldManager in interface RecordHelper

getDecimalFormatter

public DecimalFormat getDecimalFormatter()
Specified by:
getDecimalFormatter in interface DataFormatProvider

getSimpleDateFormatter

public SimpleDateFormat getSimpleDateFormatter()
Specified by:
getSimpleDateFormatter in interface DataFormatProvider

filterOutCollectionMetadata

protected Map<String,FieldMetadata> filterOutCollectionMetadata(Map<String,FieldMetadata> metadata)

getBasicBroadleafType

protected Class<?> getBasicBroadleafType(SupportedFieldType fieldType)

createPopulatedInstance

public Serializable createPopulatedInstance(Serializable instance,
                                            Entity entity,
                                            Map<String,FieldMetadata> unfilteredProperties,
                                            Boolean setId)
                                     throws ValidationException
Description copied from interface: RecordHelper

Populates a Hibernate entity instance based on the values from entity (the DTO representation of instance) and the metadata from mergedProperties.

While populating instance, validation is also performed using the EntityValidatorService. If this validation fails, then the instance is left unchanged and a ValidationExcpetion is thrown. In the common case, this exception bubbles up to the DynamicRemoteService which catches the exception and communicates appropriately to the invoker

Specified by:
createPopulatedInstance in interface RecordHelper
Returns:
instance populated with the property values from entity according to the metadata specified in mergedProperties
Throws:
ValidationException - if after populating instance via the values in entity then EntityValidatorService#validate(Entity, Serializable, Map) returns false
See Also:
EntityValidatorService}

getMapFieldType

protected Class<?> getMapFieldType(Serializable instance,
                                   FieldManager fieldManager,
                                   Property property)

getRecord

public Entity getRecord(Map<String,FieldMetadata> primaryMergedProperties,
                        Serializable record,
                        Map<String,FieldMetadata> alternateMergedProperties,
                        String pathToTargetObject)
Specified by:
getRecord in interface RecordHelper

getRecord

public Entity getRecord(Class<?> ceilingEntityClass,
                        PersistencePerspective persistencePerspective,
                        Serializable record)
Specified by:
getRecord in interface RecordHelper

getRecords

public Entity[] getRecords(Class<?> ceilingEntityClass,
                           PersistencePerspective persistencePerspective,
                           List<? extends Serializable> records)
Specified by:
getRecords in interface RecordHelper

getSimpleMergedProperties

public Map<String,FieldMetadata> getSimpleMergedProperties(String entityName,
                                                           PersistencePerspective persistencePerspective)
Specified by:
getSimpleMergedProperties in interface RecordHelper

getRecords

public Entity[] getRecords(Map<String,FieldMetadata> primaryMergedProperties,
                           List<? extends Serializable> records)
Specified by:
getRecords in interface RecordHelper

getRecords

public Entity[] getRecords(Map<String,FieldMetadata> primaryUnfilteredMergedProperties,
                           List<? extends Serializable> records,
                           Map<String,FieldMetadata> alternateUnfilteredMergedProperties,
                           String pathToTargetObject)
Specified by:
getRecords in interface RecordHelper

extractPropertiesFromPersistentEntity

protected void extractPropertiesFromPersistentEntity(Map<String,FieldMetadata> mergedProperties,
                                                     Serializable entity,
                                                     List<Property> props)

getStringValueFromGetter

public String getStringValueFromGetter(Serializable instance,
                                       String propertyName)
                                throws IllegalAccessException,
                                       InvocationTargetException,
                                       NoSuchMethodException
Description copied from interface: RecordHelper
Returns a string representation of the field on the given instance specified by the property name. The propertyName should start from the root of the given instance

Specified by:
getStringValueFromGetter in interface RecordHelper
Returns:
Throws:
IllegalAccessException
InvocationTargetException
NoSuchMethodException

formatValue

public String formatValue(Object value)
Description copied from interface: DataFormatProvider
Formats a aw value from an entity into its string representation used by the system. For instance, this might use the DataFormatProvider.getDecimalFormatter() to ensure that BigDecimals only show 2 decimal places or dates are formatted a certain way.

Specified by:
formatValue in interface DataFormatProvider
Returns:

update

protected EntityResult update(PersistencePackage persistencePackage,
                              Object primaryKey,
                              boolean includeRealEntity)
                       throws ServiceException
Throws:
ServiceException

getPrimaryKey

public Object getPrimaryKey(Entity entity,
                            Map<String,FieldMetadata> mergedUnfilteredProperties)
Specified by:
getPrimaryKey in interface RecordHelper

getFilterMappings

public List<FilterMapping> getFilterMappings(PersistencePerspective persistencePerspective,
                                             CriteriaTransferObject cto,
                                             String ceilingEntityFullyQualifiedClassname,
                                             Map<String,FieldMetadata> mergedUnfilteredProperties,
                                             RestrictionFactory customRestrictionFactory)
Specified by:
getFilterMappings in interface RecordHelper

getFilterMappings

public List<FilterMapping> getFilterMappings(PersistencePerspective persistencePerspective,
                                             CriteriaTransferObject cto,
                                             String ceilingEntityFullyQualifiedClassname,
                                             Map<String,FieldMetadata> mergedUnfilteredProperties)
Specified by:
getFilterMappings in interface RecordHelper

extractProperties

public void extractProperties(Class<?>[] inheritanceLine,
                              Map<MergedPropertyType,Map<String,FieldMetadata>> mergedProperties,
                              List<Property> properties)
Specified by:
extractProperties in interface PersistenceModule

extractPropertiesFromMetadata

protected void extractPropertiesFromMetadata(Class<?>[] inheritanceLine,
                                             Map<String,FieldMetadata> mergedProperties,
                                             List<Property> properties,
                                             Boolean isHiddenOverride,
                                             MergedPropertyType type)

updateMergedProperties

public void updateMergedProperties(PersistencePackage persistencePackage,
                                   Map<MergedPropertyType,Map<String,FieldMetadata>> allMergedProperties)
                            throws ServiceException
Specified by:
updateMergedProperties in interface PersistenceModule
Throws:
ServiceException

update

public EntityResult update(PersistencePackage persistencePackage,
                           boolean includeRealEntityObject)
                    throws ServiceException
Specified by:
update in interface RecordHelper
Throws:
ServiceException

update

public Entity update(PersistencePackage persistencePackage)
              throws ServiceException
Specified by:
update in interface PersistenceModule
Throws:
ServiceException

add

public Entity add(PersistencePackage persistencePackage)
           throws ServiceException
Specified by:
add in interface PersistenceModule
Throws:
ServiceException

add

public EntityResult add(PersistencePackage persistencePackage,
                        boolean includeRealEntityObject)
                 throws ServiceException
Specified by:
add in interface RecordHelper
Throws:
ServiceException

remove

public void remove(PersistencePackage persistencePackage)
            throws ServiceException
Specified by:
remove in interface PersistenceModule
Throws:
ServiceException

fetch

public DynamicResultSet fetch(PersistencePackage persistencePackage,
                              CriteriaTransferObject cto)
                       throws ServiceException
Specified by:
fetch in interface PersistenceModule
Throws:
ServiceException

getTotalRecords

public Integer getTotalRecords(String ceilingEntity,
                               List<FilterMapping> filterMappings)
Specified by:
getTotalRecords in interface RecordHelper

getPersistentRecords

public List<Serializable> getPersistentRecords(String ceilingEntity,
                                               List<FilterMapping> filterMappings,
                                               Integer firstResult,
                                               Integer maxResults)
Specified by:
getPersistentRecords in interface RecordHelper

validate

public boolean validate(Entity entity,
                        Serializable populatedInstance,
                        Map<String,FieldMetadata> mergedProperties)
Description copied from interface: RecordHelper
Validates the Entity based on the validators associated with each property

Specified by:
validate in interface RecordHelper
Parameters:
entity - the instance that is attempted to be saved from. Implementers should set Entity.isValidationFailure() accordingly as a result of the validation
mergedProperties - TODO
Returns:
whether or not the entity passed validation. This yields the same result as calling !Entity.isValidationFailure() after invoking this method

setPersistenceManager

public void setPersistenceManager(PersistenceManager persistenceManager)
Specified by:
setPersistenceManager in interface PersistenceModule

getCompatibleModule

public PersistenceModule getCompatibleModule(OperationType operationType)
Specified by:
getCompatibleModule in interface RecordHelper

getDefaultFieldPersistenceProvider

public FieldPersistenceProvider getDefaultFieldPersistenceProvider()

setDefaultFieldPersistenceProvider

public void setDefaultFieldPersistenceProvider(FieldPersistenceProvider defaultFieldPersistenceProvider)

getFieldPersistenceProviders

public List<FieldPersistenceProvider> getFieldPersistenceProviders()

setFieldPersistenceProviders

public void setFieldPersistenceProviders(List<FieldPersistenceProvider> fieldPersistenceProviders)

getCriteriaTranslator

public CriteriaTranslator getCriteriaTranslator()

setCriteriaTranslator

public void setCriteriaTranslator(CriteriaTranslator criteriaTranslator)

getEntityValidatorService

public EntityValidatorService getEntityValidatorService()

setEntityValidatorService

public void setEntityValidatorService(EntityValidatorService entityValidatorService)

getRestrictionFactory

public RestrictionFactory getRestrictionFactory()

setRestrictionFactory

public void setRestrictionFactory(RestrictionFactory restrictionFactory)

getPersistenceManager

public PersistenceManager getPersistenceManager()


Copyright © 2013. All Rights Reserved.