Class AutoNumServiceImpl

java.lang.Object
fr.becpg.repo.entity.impl.AutoNumServiceImpl
All Implemented Interfaces:
AutoNumService

@Service("autoNumService") public class AutoNumServiceImpl extends Object implements AutoNumService
Enhanced implementation of AutoNumService with improved thread safety, error handling, and performance optimizations.
Version:
$Id: $Id
Author:
querephi
  • Field Details

    • NAME_TEMPLATE

      private static final String NAME_TEMPLATE
      See Also:
    • DEFAULT_AUTO_NUM

      private static final Long DEFAULT_AUTO_NUM
    • PREFIX_MSG_PREFIX

      private static final String PREFIX_MSG_PREFIX
      See Also:
    • DEFAULT_PREFIX

      private static final String DEFAULT_PREFIX
      See Also:
    • DEFAULT_PATTERN

      private static final Pattern DEFAULT_PATTERN
    • CACHE_KEY_SEPARATOR

      private static final String CACHE_KEY_SEPARATOR
      See Also:
    • logger

      private static final org.apache.commons.logging.Log logger
    • lockMap

      private final ConcurrentHashMap<String,ReentrantLock> lockMap
    • nodeService

      @Autowired private org.alfresco.service.cmr.repository.NodeService nodeService
    • repoService

      @Autowired private RepoService repoService
    • repositoryHelper

      @Autowired private org.alfresco.repo.model.Repository repositoryHelper
    • dictionaryService

      @Autowired private org.alfresco.service.cmr.dictionary.DictionaryService dictionaryService
    • beCPGCacheService

      @Autowired private BeCPGCacheService beCPGCacheService
    • policyBehaviourFilter

      @Autowired private org.alfresco.repo.policy.BehaviourFilter policyBehaviourFilter
  • Constructor Details

    • AutoNumServiceImpl

      public AutoNumServiceImpl()
  • Method Details

    • getAutoNumValue

      public String getAutoNumValue(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
      Gets the auto num value.
      Specified by:
      getAutoNumValue in interface AutoNumService
      Parameters:
      className - the class name
      propertyName - the property name
      Returns:
      the auto num value
    • setAutoNumValue

      public boolean setAutoNumValue(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName, Long counter)

      setAutoNumValue.

      Specified by:
      setAutoNumValue in interface AutoNumService
      Parameters:
      className - a QName object
      propertyName - a QName object
      counter - a Long object
      Returns:
      a boolean
    • deleteAutoNumValue

      public void deleteAutoNumValue(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
      Delete auto num value.
      Specified by:
      deleteAutoNumValue in interface AutoNumService
      Parameters:
      className - the class name
      propertyName - the property name
    • getAutoNumMatchPattern

      public String getAutoNumMatchPattern(org.alfresco.service.namespace.QName type, org.alfresco.service.namespace.QName propertyName)

      getAutoNumMatchPattern.

      Specified by:
      getAutoNumMatchPattern in interface AutoNumService
      Parameters:
      type - a QName object.
      propertyName - a QName object.
      Returns:
      the pattern string for the corresponding code
    • getPrefixedCode

      public String getPrefixedCode(org.alfresco.service.namespace.QName type, org.alfresco.service.namespace.QName propertyName, Long autoNumValue)

      getPrefixedCode.

      Specified by:
      getPrefixedCode in interface AutoNumService
      Parameters:
      type - a QName object.
      propertyName - a QName object.
      autoNumValue - a Long object.
      Returns:
      the prefixed String for the given type
    • getOrCreateCode

      public String getOrCreateCode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName codeQName)

      getOrCreateCode.

      Specified by:
      getOrCreateCode in interface AutoNumService
      Parameters:
      nodeRef - a NodeRef object.
      codeQName - a QName object.
      Returns:
      a String object.
    • getOrCreateBeCPGCode

      public String getOrCreateBeCPGCode(org.alfresco.service.cmr.repository.NodeRef nodeRef)

      getOrCreateBeCPGCode.

      Specified by:
      getOrCreateBeCPGCode in interface AutoNumService
      Parameters:
      nodeRef - a NodeRef object.
      Returns:
      a String object.
    • getAutoNumNodeRef

      public org.alfresco.service.cmr.repository.NodeRef getAutoNumNodeRef(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)

      getAutoNumNodeRef.

      Specified by:
      getAutoNumNodeRef in interface AutoNumService
      Parameters:
      className - a QName object
      propertyName - a QName object
      Returns:
      the NodeRef of the AutoNum value
    • validateInputs

      private void validateInputs(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • createLockKey

      private String createLockKey(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • createCacheKey

      private String createCacheKey(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • generateNextAutoNumValue

      private String generateNextAutoNumValue(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • incrementExistingAutoNum

      private String incrementExistingAutoNum(org.alfresco.service.cmr.repository.NodeRef autoNumNodeRef)
    • createNewAutoNum

      private String createNewAutoNum(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • findAutoNumNodeRef

      private Optional<org.alfresco.service.cmr.repository.NodeRef> findAutoNumNodeRef(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • buildPrefixPattern

      private String buildPrefixPattern(org.alfresco.service.namespace.QName type, org.alfresco.service.namespace.QName propertyName)
    • createMatchPattern

      private String createMatchPattern(String prefix)
    • getAutoNumPrefix

      private String getAutoNumPrefix(org.alfresco.service.namespace.QName type, org.alfresco.service.namespace.QName propertyName)
    • processNodeCode

      private String processNodeCode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName codeQName)
    • isCodeAlreadyUsed

      private boolean isCodeAlreadyUsed(org.alfresco.service.namespace.QName typeQName, org.alfresco.service.namespace.QName codeQName, String code, org.alfresco.service.cmr.repository.NodeRef excludeNodeRef)
    • generateAndSetNewCode

      private String generateAndSetNewCode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName typeQName, org.alfresco.service.namespace.QName codeQName)
    • createOrUpdateAutoNumValue

      private void createOrUpdateAutoNumValue(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName, String autoNumCode)
    • parseAutoNumCode

      private AutoNumServiceImpl.AutoNumInfo parseAutoNumCode(String autoNumCode, org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • updateExistingAutoNumIfNecessary

      private void updateExistingAutoNumIfNecessary(org.alfresco.service.cmr.repository.NodeRef autoNumNodeRef, Long newValue)
    • getDefaultPrefix

      private String getDefaultPrefix(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName)
    • createAutoNum

      private Long createAutoNum(org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName, Long autoNumValue, String autoNumPrefix)
    • createAutoNumProperties

      private Map<org.alfresco.service.namespace.QName,Serializable> createAutoNumProperties(String name, org.alfresco.service.namespace.QName className, org.alfresco.service.namespace.QName propertyName, Long autoNumValue, String autoNumPrefix)
    • getPrefix

      private String getPrefix(org.alfresco.service.cmr.repository.NodeRef autoNumNodeRef, String defaultPrefix)
    • formatCode

      private String formatCode(String prefix, Long autoNumValue)