Class AutoincrementCounter

java.lang.Object
org.apache.derby.impl.sql.execute.AutoincrementCounter

public class AutoincrementCounter extends Object
AutoincrementCounter is a not so general counter for the specific purposes of autoincrement columns. It can be thought of as an in-memory autoincrement column. The counting or incrementing is done in fashion identical to the AUTOINCREMENTVALUE in SYSCOLUMNS.

To create a counter, the user must call the constructor with a start value, increment and optionally a final value. In addition the caller must specify the schema name, table name and column name uniquely identifying the counter.

When a counter is created it is in an invalid state-- to initialize it, the user must call either update or reset(false). The value of a counter can be changed by either calling reset or update.

  • Field Details

    • start

      private Long start
    • increment

      private long increment
    • identity

      private String identity
    • finalValue

      private long finalValue
    • schemaName

      private String schemaName
    • tableName

      private String tableName
    • columnName

      private String columnName
    • counter

      private long counter
    • columnPosition

      private int columnPosition
    • initialized

      private boolean initialized
  • Constructor Details

    • AutoincrementCounter

      public AutoincrementCounter(Long start, long increment, long finalValue, String s, String t, String c, int position)
      constructor
      Parameters:
      start - The start value of the counter; is a java object as it can also be null.
      increment - how much to increment the counter by.
      finalValue - the finalvalue of the counter. used by reset
      s -
      t -
      c -
  • Method Details

    • makeIdentity

      public static String makeIdentity(String s, String t, String c)
      make a unique key for the counter.
    • makeIdentity

      public static String makeIdentity(TableDescriptor td, ColumnDescriptor cd)
      make a unique key for the counter.
    • reset

      public void reset(boolean begin)
      reset to the counter to the beginning or the end.
      Parameters:
      begin - if TRUE reset to beginning and mark it uninitialized.
    • update

      public long update(long t)
      update the counter.
      Parameters:
      t - update the counter to this value.
    • update

      public long update() throws StandardException
      update the counter to its next value.
      Throws:
      StandardException - if the counter has not yet been initialized and the Start value is NULL.
    • getCurrentValue

      public Long getCurrentValue()
      get the current value of the counter. An uninitialized counter means the current value is NULL.
    • getIdentity

      public String getIdentity()
      return the identity of the counter.
    • flushToDisk

      public void flushToDisk(TransactionController tc, DataDictionary dd, UUID tableUUID) throws StandardException
      flush a counter to disk; i.e write the current value of the counter into the row in SYSCOLUMNS.
      Parameters:
      tc - TransactionController to use
      dd - DataDictionary to use.
      tableUUID - I might have the table name but I need more information
      Throws:
      StandardException - standard Derby exception.
    • getColumnPosition

      public int getColumnPosition()
      get the column position in the table for which this counter has been created.
      Returns:
      the position of the corresponding column in the table (1-based)
    • getStartValue

      public Long getStartValue()
      get the start value
      Returns:
      the initial value of the counter
    • toString

      public String toString()
      Overrides:
      toString in class Object