Class PersistentKeyGenerator

java.lang.Object
de.hybris.platform.servicelayer.keygenerator.impl.PersistentKeyGenerator
All Implemented Interfaces:
KeyGenerator
Direct Known Subclasses:
PrefixablePersistentKeyGenerator, PrefixablePersistentKeyGenerator, PrefixablePersistentKeyGenerator

public class PersistentKeyGenerator extends Object implements KeyGenerator
This implementation is an adapter to the NumberSeries functionality of the platform for getting unique numbers in a series persisted via database. It provides several setter methods for configuration of the used number series like the key of the series at database. It is lazily initialized on first call.
Since:
4.0
  • Field Details

    • key

      protected String key
      Key of series.
    • digits

      protected int digits
      Amount of digits used for one key.
    • start

      protected String start
      Start value for series (used in case the series is not created yet and at a reset).
    • template

      protected String template
      Template to be applied on generated value
    • numeric

      protected boolean numeric
      Is the series numeric or alpha-numeric?
  • Constructor Details

    • PersistentKeyGenerator

      public PersistentKeyGenerator()
  • Method Details

    • initializeKeyGenerator

      @PostConstruct public void initializeKeyGenerator()
    • generate

      public Object generate()
      Description copied from interface: KeyGenerator
      Generates a new unique key. If this method is called twice it will never return the same key twice (if key A is returned by first call and key B by second call, A does not equals B). A order of returned keys is not guaranteed (depends on implementation). After a call of the KeyGenerator.reset() method the generator is reseted so that a key can be returned which already was returned before calling KeyGenerator.reset().
      Specified by:
      generate in interface KeyGenerator
      Returns:
      unique key
    • generateFor

      public Object generateFor(Object object)
      Description copied from interface: KeyGenerator
      Generates a new unique key in relation to given object. The key will be unique overall as in KeyGenerator.generate() method and furthermore it is guaranteed that the key will only be produced for this object (think of a PK which contains the type information, a media PK will not be generated for a product, nevertheless it is unique overall).
      Specified by:
      generateFor in interface KeyGenerator
      Parameters:
      object - object for which a key will be generated
      Returns:
      unique key in relation to given object
    • reset

      public void reset()
      Description copied from interface: KeyGenerator
      Resets the key generation so that an already generated key can be generated once again.
      Specified by:
      reset in interface KeyGenerator
    • init

      @Deprecated(since="5.0", forRemoval=true) public void init()
      Deprecated, for removal: This API element is subject to removal in a future version.
      since 5.0 favour lazy initialization while fetching the sequence for the first time
      Checks if a number series with configured key is already existent and creates a new one if not using configured start value.
    • lookup

      Throws:
      JaloInvalidParameterException
    • createSeriesAfterLookupError

      protected NumberSeries createSeriesAfterLookupError(NumberSeriesManager nsm)
    • setTemplate

      public void setTemplate(String template)
      Sets the template of the number series to use.
      Parameters:
      template - number series template
    • setKey

      public void setKey(String key)
      Sets the key of the number series to use.
      Parameters:
      key - number series key
    • setDigits

      public void setDigits(int digits)
      Sets the amount of digits within one generated key.
      Parameters:
      digits - amount of digits
    • setStart

      public void setStart(String start)
      Sets the start value for the series in case the series has to be created new at call of init() or at a reset().
      Parameters:
      start - start value
    • setNumeric

      @Deprecated(since="ages", forRemoval=true) public void setNumeric(boolean numeric)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Sets if the series is numeric or alpha-numeric in case the series has to be created new at call of init() or at a reset().
      Parameters:
      numeric - is the series numeric?
    • setType

      public void setType(PersistentKeyGenerator.Type type)
      Sets type of the key generator. Available type are: alphanumeric, numeric and uuid. Alphanumeric and numeric series handling is delegated to NumberSeries
      Parameters:
      type - type of key generator