Class Schema

All Implemented Interfaces:
Iterable<DbObject>, DbObject

public class Schema extends AbstractDbObject implements Iterable<DbObject>
Instances of this class represent a database schema.
Author:
Matt Ward
  • Field Details

    • objects

      protected final List<DbObject> objects
    • dbPrefix

      protected final String dbPrefix
    • version

      protected final int version
    • checkTableColumnOrder

      protected final boolean checkTableColumnOrder
  • Constructor Details

    • Schema

      public Schema(String name)
      Construct a schema with the given name and no database prefix.
      Parameters:
      name - String
    • Schema

      public Schema(String name, String dbPrefix, int schemaVersion, boolean checkTableColumnOrder)
      Construct a schema with the given name and database prefix. The database prefix specifies what filtering applies to the high-level (tables and sequences) objects in the schema. If for example dbPrefix is "alf_" then only tables and sequences whose names begin with "alf_" will be represented by this schema. Therefore any comparisons should be performed against another similarly filtered Schema object.
      Parameters:
      name - String
      dbPrefix - String
      schemaVersion - int
      checkTableColumnOrder - boolean
  • Method Details

    • add

      public void add(DbObject dbObject)
      Add an object to this schema - this method will set this schema as the object's parent.
      Parameters:
      dbObject - DbObject
    • iterator

      public Iterator<DbObject> iterator()
      Specified by:
      iterator in interface Iterable<DbObject>
    • contains

      public boolean contains(DbObject object)
      Parameters:
      object - DbObject
      Returns:
      boolean
    • getDbPrefix

      public String getDbPrefix()
      Returns:
      the dbPrefix
    • getVersion

      public int getVersion()
      Returns:
      the version
    • isCheckTableColumnOrder

      public boolean isCheckTableColumnOrder()
      Returns:
      the checkTableColumnOrder
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class AbstractDbObject
    • equals

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

      protected void doDiff(DbObject right, DiffContext ctx)
      Description copied from class: AbstractDbObject
      Override this method to provide subclass specific diffing logic.
      Overrides:
      doDiff in class AbstractDbObject
      Parameters:
      right - DbObject
      ctx - DiffContext
    • accept

      public void accept(DbObjectVisitor visitor)
      Description copied from interface: DbObject
      Allows a visitor to be invoked against this DbObject. Implementations should ensure that child objects are visited first (by calling accept on them) before invoking the visitor on itself.
      Specified by:
      accept in interface DbObject
      Parameters:
      visitor - DbObjectVisitor
    • sameAs

      public boolean sameAs(DbObject other)
      Description copied from interface: DbObject
      Are the two DbObjects logically the same? For example two Index objects may have different names, but are the same index as they both index the same columns for the same table.

      If two objects a and b have the same logical identity, it does not mean that a.equals(b) == true. The two objects may well have differences and will be flagged as such by the schema comparison tool. When a.sameAs(b) == true it makes it easier to show the differences as related, i.e. a and b are different rather than, a is only in the 'left' tree and b is only in the 'right' tree.

      Specified by:
      sameAs in interface DbObject
      Overrides:
      sameAs in class AbstractDbObject
      Parameters:
      other - DbObject
      Returns:
      boolean
    • containsByName

      public boolean containsByName(String name)