Class AdvancedPageCustomPersistenceHandler

java.lang.Object
org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler
com.broadleafcommerce.advancedcms.admin.server.handler.AdvancedPageCustomPersistenceHandler
All Implemented Interfaces:
org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler, org.broadleafcommerce.openadmin.server.service.handler.DynamicEntityRetriever, org.springframework.core.Ordered

public class AdvancedPageCustomPersistenceHandler extends org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler
This customization of the PageTemplateCustomPersistenceHandler will drive the dynamic form fields for a Page based on the ThemeFile associated with the Page instead of the PageTemplate.
Author:
Andre Azzolini (apazzolini)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected org.broadleafcommerce.common.sandbox.SandBoxHelper
     
    protected com.broadleafcommerce.theme.service.PageTypeService
     
    protected com.broadleafcommerce.enterprise.workflow.admin.service.behavior.RevertWorkflowManager
     

    Fields inherited from class org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler

    dynamicFieldUtil, em, pageService, sandBoxService

    Fields inherited from interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler

    DEFAULT_ORDER

    Fields inherited from interface org.springframework.core.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected org.broadleafcommerce.openadmin.dto.Entity
    addOrUpdate(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     
    protected void
    addProperty(String name, String value, List<org.broadleafcommerce.openadmin.dto.Property> properties)
     
    protected List<String>
    buildTemplateFieldNames(org.broadleafcommerce.cms.page.domain.Page page)
     
    protected org.broadleafcommerce.openadmin.dto.Property[]
    collapseContentZoneAndContentItemFields(org.broadleafcommerce.openadmin.dto.Property[] entityProperties)
     
    protected org.broadleafcommerce.cms.field.domain.FieldGroup
    createFieldGroup(com.broadleafcommerce.theme.domain.page.PageType pageType)
    Creates a FieldGroup based on the given ThemeFile
    protected org.broadleafcommerce.openadmin.dto.PersistencePackage
    createPersistencePackage(org.broadleafcommerce.cms.page.domain.Page page, String name, String value, Long pageFieldId)
     
    protected String
    extractPageTypeFromCto(org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto)
     
    org.broadleafcommerce.openadmin.dto.DynamicResultSet
    fetch(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     
    org.broadleafcommerce.openadmin.dto.Entity
    fetchDynamicEntityWithPageType(Serializable root, List<String> dirtyFields, boolean includeId, String pageTypeId)
     
    org.broadleafcommerce.openadmin.dto.Entity
    fetchEntityWithPageType(String pageId, List<String> dirtyFields, String pageTypeId)
     
    protected List<org.broadleafcommerce.cms.field.domain.FieldGroup>
    getFieldGroups(org.broadleafcommerce.cms.page.domain.Page page, org.broadleafcommerce.cms.page.domain.PageTemplate template)
    When we're dealing with AdvancedCMS Pages, we care about the associated ThemeFile on the Page to drive the dynamic form instead of the pageTemplate field.
    protected List<org.broadleafcommerce.cms.field.domain.FieldGroup>
    getFieldGroups(org.broadleafcommerce.openadmin.dto.PersistencePackage pp, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao)
    When the customCriteria on the persistence package specifies the "constructForm-pageType" crieteria, we want to use the String at position 3 in the array to drive a PageType lookup instead of a PageTemplate lookup, which is how it behaves when AdvancedCMS is not loaded.
    protected List<org.broadleafcommerce.cms.field.domain.FieldGroup>
    getFieldGroupsWithPageType(org.broadleafcommerce.cms.page.domain.Page page, org.broadleafcommerce.cms.page.domain.PageTemplate template, String pageTypeId)
     
    protected void
    handleAbandonedDynamicFields(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.cms.page.domain.Page page, Map<String,org.broadleafcommerce.cms.page.domain.PageField> pageFieldMap)
     
    protected void
    handleCurrentDynamicFields(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.cms.page.domain.Page page, List<String> templateFieldNames, Map<String,String> dirtyFieldsOrigVals, List<String> dirtyFields, Map<String,org.broadleafcommerce.cms.page.domain.PageField> pageFieldMap, org.broadleafcommerce.openadmin.dto.Property[] entityProperties)
     
    protected Long[]
    parseFKLookupIds(org.broadleafcommerce.openadmin.dto.Property prop)
    The lookup could contain a "|"; we need to parse it
    protected void
    populateFKLookupValues(org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.dto.Entity entity)
     
    protected org.broadleafcommerce.openadmin.dto.Property[]
    removePropertyFromArray(org.broadleafcommerce.openadmin.dto.Property contentItemProperty, org.broadleafcommerce.openadmin.dto.Property[] entityProperties)
     
    protected void
    revertExistingUserEdits(org.broadleafcommerce.cms.page.domain.Page page)
     
    protected void
    validate(org.broadleafcommerce.cms.page.domain.Page page, org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     

    Methods inherited from class org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler

    add, canHandleAdd, canHandleFetch, canHandleInspect, canHandleRemove, canHandleUpdate, fetchDynamicEntity, fetchEntityBasedOnId, getFieldContainerClassName, getSandBox, inspect, processFieldGroups, processIncludeId, update

    Methods inherited from class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter

    getClassForName, getMetadata, getOrder, getPolymorphicClasses, getResultSet, isAdornedListOperation, isAssignableFrom, isBasicOperation, isMapOperation, meetsCustomCriteria, remove, willHandleSecurity

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • pageTypeService

      protected com.broadleafcommerce.theme.service.PageTypeService pageTypeService
    • helper

      protected org.broadleafcommerce.common.sandbox.SandBoxHelper helper
    • revertWorkflowManager

      protected com.broadleafcommerce.enterprise.workflow.admin.service.behavior.RevertWorkflowManager revertWorkflowManager
  • Constructor Details

    • AdvancedPageCustomPersistenceHandler

      public AdvancedPageCustomPersistenceHandler()
  • Method Details

    • getFieldGroups

      protected List<org.broadleafcommerce.cms.field.domain.FieldGroup> getFieldGroups(org.broadleafcommerce.openadmin.dto.PersistencePackage pp, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao)
      When the customCriteria on the persistence package specifies the "constructForm-pageType" crieteria, we want to use the String at position 3 in the array to drive a PageType lookup instead of a PageTemplate lookup, which is how it behaves when AdvancedCMS is not loaded.
      Overrides:
      getFieldGroups in class org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler
    • getFieldGroups

      protected List<org.broadleafcommerce.cms.field.domain.FieldGroup> getFieldGroups(org.broadleafcommerce.cms.page.domain.Page page, org.broadleafcommerce.cms.page.domain.PageTemplate template)
      When we're dealing with AdvancedCMS Pages, we care about the associated ThemeFile on the Page to drive the dynamic form instead of the pageTemplate field.
      Overrides:
      getFieldGroups in class org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler
    • createFieldGroup

      protected org.broadleafcommerce.cms.field.domain.FieldGroup createFieldGroup(com.broadleafcommerce.theme.domain.page.PageType pageType)
      Creates a FieldGroup based on the given ThemeFile
      Parameters:
      pageType -
      Returns:
      the Field Group
    • fetch

      public org.broadleafcommerce.openadmin.dto.DynamicResultSet fetch(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Specified by:
      fetch in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      fetch in class org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • extractPageTypeFromCto

      protected String extractPageTypeFromCto(org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto)
    • fetchEntityWithPageType

      public org.broadleafcommerce.openadmin.dto.Entity fetchEntityWithPageType(String pageId, List<String> dirtyFields, String pageTypeId) throws Exception
      Throws:
      Exception
    • fetchDynamicEntityWithPageType

      public org.broadleafcommerce.openadmin.dto.Entity fetchDynamicEntityWithPageType(Serializable root, List<String> dirtyFields, boolean includeId, String pageTypeId) throws Exception
      Throws:
      Exception
    • getFieldGroupsWithPageType

      protected List<org.broadleafcommerce.cms.field.domain.FieldGroup> getFieldGroupsWithPageType(org.broadleafcommerce.cms.page.domain.Page page, org.broadleafcommerce.cms.page.domain.PageTemplate template, String pageTypeId)
    • addOrUpdate

      protected org.broadleafcommerce.openadmin.dto.Entity addOrUpdate(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Overrides:
      addOrUpdate in class org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • handleAbandonedDynamicFields

      protected void handleAbandonedDynamicFields(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.cms.page.domain.Page page, Map<String,org.broadleafcommerce.cms.page.domain.PageField> pageFieldMap) throws org.broadleafcommerce.common.exception.ServiceException
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • handleCurrentDynamicFields

      protected void handleCurrentDynamicFields(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.cms.page.domain.Page page, List<String> templateFieldNames, Map<String,String> dirtyFieldsOrigVals, List<String> dirtyFields, Map<String,org.broadleafcommerce.cms.page.domain.PageField> pageFieldMap, org.broadleafcommerce.openadmin.dto.Property[] entityProperties) throws org.broadleafcommerce.common.exception.ServiceException
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • revertExistingUserEdits

      protected void revertExistingUserEdits(org.broadleafcommerce.cms.page.domain.Page page)
    • createPersistencePackage

      protected org.broadleafcommerce.openadmin.dto.PersistencePackage createPersistencePackage(org.broadleafcommerce.cms.page.domain.Page page, String name, String value, Long pageFieldId) throws org.broadleafcommerce.common.exception.ServiceException
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • buildTemplateFieldNames

      protected List<String> buildTemplateFieldNames(org.broadleafcommerce.cms.page.domain.Page page)
    • validate

      protected void validate(org.broadleafcommerce.cms.page.domain.Page page, org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • parseFKLookupIds

      protected Long[] parseFKLookupIds(org.broadleafcommerce.openadmin.dto.Property prop)
      The lookup could contain a "|"; we need to parse it
      Parameters:
      prop -
      Returns:
    • populateFKLookupValues

      protected void populateFKLookupValues(org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.dto.Entity entity) throws ClassNotFoundException
      Overrides:
      populateFKLookupValues in class org.broadleafcommerce.cms.admin.server.handler.PageTemplateCustomPersistenceHandler
      Throws:
      ClassNotFoundException
    • collapseContentZoneAndContentItemFields

      protected org.broadleafcommerce.openadmin.dto.Property[] collapseContentZoneAndContentItemFields(org.broadleafcommerce.openadmin.dto.Property[] entityProperties)
    • removePropertyFromArray

      protected org.broadleafcommerce.openadmin.dto.Property[] removePropertyFromArray(org.broadleafcommerce.openadmin.dto.Property contentItemProperty, org.broadleafcommerce.openadmin.dto.Property[] entityProperties)
    • addProperty

      protected void addProperty(String name, String value, List<org.broadleafcommerce.openadmin.dto.Property> properties)