Class AbstractDbObject

java.lang.Object
org.alfresco.util.schemacomp.model.AbstractDbObject
All Implemented Interfaces:
DbObject
Direct Known Subclasses:
Column, ForeignKey, Index, PrimaryKey, Schema, Sequence, Table

public abstract class AbstractDbObject extends Object implements DbObject
Useful base class for many, if not all the DbObject implementations.
Author:
Matt Ward
  • Field Details

  • Constructor Details

    • AbstractDbObject

      public AbstractDbObject(DbObject parent, String name)
      Instantiate, giving the object a parent and a name.
      Parameters:
      parent - DbObject
      name - String
  • Method Details

    • getName

      public String getName()
      Description copied from interface: DbObject
      All items can be asked for their name, but it may be null.
      Specified by:
      getName in interface DbObject
      Returns:
      the name
    • setName

      public void setName(String name)
      Parameters:
      name - the name to set
    • 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
      Parameters:
      other - DbObject
      Returns:
      boolean
    • hashCode

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

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

      public String toString()
      Overrides:
      toString in class Object
    • diff

      public void diff(DbObject right, DiffContext ctx)
      Provides an implementation of DbObject.diff(DbObject, DiffContext). The template method doDiff(DbObject, DiffContext) provides the subclass specific diffing logic, whilst this method handles the workflow required in most cases: set the path's prefix that will be used to explain where differences occur; compare the name fields of the two objects; delegate to the subclass specific diffing (if any); remove the last path addition ready for the next object to perform its diff correctly.
      Specified by:
      diff in interface DbObject
      Parameters:
      right - The object to compare against.
      ctx - The DiffContext
    • getParent

      public DbObject getParent()
      Description copied from interface: DbObject
      Get the parent object for which this object is a child. If this is the root object then null should be returned.
      Specified by:
      getParent in interface DbObject
      Returns:
      Parent reference or null
    • setParent

      public void setParent(DbObject parent)
      Description copied from interface: DbObject
      Sets the parent object.
      Specified by:
      setParent in interface DbObject
      Parameters:
      parent - DbObject
      See Also:
    • doDiff

      protected void doDiff(DbObject right, DiffContext ctx)
      Override this method to provide subclass specific diffing logic.
      Parameters:
      right - DbObject
      ctx - DiffContext
    • setComparisonUtils

      public void setComparisonUtils(ComparisonUtils comparisonUtils)
      If a ComparisonUtils other than the default is required, then this setter can be used. Useful for testing, where a mock can be injected.
      Parameters:
      comparisonUtils - the comparisonUtils to set
    • getValidators

      public List<DbValidator> getValidators()
      Description copied from interface: DbObject
      Retrieve the list of validators associated with this database object.
      Specified by:
      getValidators in interface DbObject
      Returns:
      DbValidator List
      See Also:
    • setValidators

      public void setValidators(List<DbValidator> validators)
      Description copied from interface: DbObject
      Set/override the validators associated with this database object.
      Specified by:
      setValidators in interface DbObject
      Parameters:
      validators - the validators to set
    • hasValidators

      public boolean hasValidators()
      Description copied from interface: DbObject
      Does the database object have any validators associated with it?
      Specified by:
      hasValidators in interface DbObject
      Returns:
      true if there are one or more validators.
    • hasObjectLevelValidator

      public boolean hasObjectLevelValidator()
      Description copied from interface: DbObject
      Is there at least one validator that assumes object-level validation that removes the requirement for reporting of differences for this object?
      Specified by:
      hasObjectLevelValidator in interface DbObject
      Returns:
      boolean
    • getTypeName

      public String getTypeName()
      Description copied from interface: DbObject
      Type name, e.g. "column", "foreign key"
      Specified by:
      getTypeName in interface DbObject
      Returns:
      String