Class SchemaItem

All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
SchemaCompositeIndex, SchemaField, SchemaObjectType

public abstract class SchemaItem extends AbstractXMLStreaming
Support superclass for schema items that have names.
  • Field Details

    • NAME_PATTERN

      public static final String NAME_PATTERN
      The regular expression that all schema item names must match.

      This pattern is the same as is required for Java identifiers.

      See Also:
  • Constructor Details

    • SchemaItem

      public SchemaItem()
  • Method Details

    • getName

      public String getName()
      Get the name associated with this instance, if any.

      All names must match NAME_PATTERN.

      Returns:
      the name of this instance, or null if it has none
    • setName

      public void setName(String name)
      Set the name associated with this instance.
      Parameters:
      name - name of this instance
      Throws:
      UnsupportedOperationException - if this instance is locked down
    • getStorageId

      public int getStorageId()
      Get the storage ID associated with this instance.
      Returns:
      the storage ID for this instance, or zero to have one automatically assigned
    • setStorageId

      public void setStorageId(int storageId)
      Set the storage ID associated with this instance.

      The default value of zero means one should be automatically assigned when the schema is registered into a database.

      Parameters:
      storageId - storage ID for this instance, or zero for automatica assignment
      Throws:
      UnsupportedOperationException - if this instance is locked down
    • differencesFrom

      protected Diffs differencesFrom(SchemaItem that)
    • toString

      public abstract String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • clone

      protected SchemaItem clone()
      Deep-clone this instance.

      The returned instance will not be locked down even if this one is.

    • visitSchemaItems

      public void visitSchemaItems(Consumer<? super SchemaItem> visitor)
      Visit all SchemaItem descendents of this instance with the given visitor.

      If this instance is also a SchemaItem, then also visit this instance.

      The traversal is depth first, pre-order.

      Parameters:
      visitor - visitor for schema items
      Throws:
      IllegalArgumentException - if visitor is null
    • visitSchemaItems

      public final <T extends SchemaItem> void visitSchemaItems(Class<T> nodeType, Consumer<? super T> visitor)
      Visit this schema item and all of its descendents matching the given type with the given visitor.

      The traversal is depth first, post-order.

      Parameters:
      nodeType - node type to include
      visitor - visitor for schema items
      Throws:
      IllegalArgumentException - if either parameter is null
    • isLockedDown

      public final boolean isLockedDown(boolean includingStorageIds)
      Determine whether this instance is locked down.
      Parameters:
      includingStorageIds - false to test all but storage ID's, true to require storage ID's to be locked down as well
      Returns:
      true if instance is locked down, otherwise false
    • getSchemaId

      public final SchemaId getSchemaId()
      Generate a unique SchemaId corresponding to the type and encoding structure of this schema item.

      The SchemaId does not depend on the storage ID.

      This instance must be locked down except for storage ID's. Repeated invocations of this method will be very fast, just returning the cached previous result.

      Returns:
      schema ID
      Throws:
      IllegalStateException - if this instance is not locked down
      See Also:
    • getItemType

      public abstract ItemType getItemType()
      Get the ItemType corresponding to this instance.
      Returns:
      schema item type