java.lang.Object
org.eclipse.persistence.internal.helper.DatabaseTable
All Implemented Interfaces:
Serializable, Cloneable, CoreTable
Direct Known Subclasses:
DecoratedDatabaseTable, HistoricalDatabaseTable, NestedTable, SubSelectDatabaseTable

public class DatabaseTable extends Object implements CoreTable, Cloneable, Serializable
INTERNAL:

Purpose: Define a fully qualified table name.

Responsibilities:

  • Allow specification of a qualifier to the table, i.e. creator or database.
See Also:
  • Field Details

    • name

      protected String name
    • tableQualifier

      protected String tableQualifier
    • qualifiedName

      protected String qualifiedName
    • foreignKeyConstraints

      protected Map<String,ForeignKeyConstraint> foreignKeyConstraints
      JPA 2.1 Foreign key specification data
    • uniqueConstraints

      protected Map<String,List<List<String>>> uniqueConstraints
      Contains the user specified unique constraints. JPA 2.0 introduced the name element, therefore, if specified we will use that name to create the constraint. Constraints with no name will be added to the map under the null key and generated with a default name. Therefore, when a name is given the list size should only ever be 1. We will validate. The null key could have multiples however they will have their names defaulted (as we did before).
    • indexes

      protected List<IndexDefinition> indexes
      Store the set of indexes defined through meta-data for the table.
    • useDelimiters

      protected boolean useDelimiters
    • creationSuffix

      protected String creationSuffix
  • Constructor Details

    • DatabaseTable

      public DatabaseTable()
      Initialize the newly allocated instance of this class. By default their is no qualifier.
    • DatabaseTable

      public DatabaseTable(String possiblyQualifiedName)
    • DatabaseTable

      public DatabaseTable(String possiblyQualifiedName, String startDelimiter, String endDelimiter)
    • DatabaseTable

      public DatabaseTable(String tableName, String qualifier)
    • DatabaseTable

      public DatabaseTable(String tableName, String qualifier, boolean useDelimiters, String startDelimiter, String endDelimiter)
  • Method Details

    • addForeignKeyConstraint

      public void addForeignKeyConstraint(ForeignKeyConstraint foreignKeyConstraint)
    • addIndex

      public void addIndex(IndexDefinition index)
      Add an index definition to this table.
    • addUniqueConstraints

      public void addUniqueConstraints(String name, List<String> columnNames)
      Add the unique constraint for the columns names. Used for DDL generation. For now we just add all the unique constraints as we would have before when we didn't have a name.
    • clone

      public DatabaseTable clone()
      Return a shallow copy of the receiver.
      Overrides:
      clone in class Object
    • equals

      public boolean equals(Object object)
      Two tables are equal if their names and tables are equal, or their names are equal and one does not have a qualifier assigned. This allows an unqualified table to equal the same fully qualified one.
      Overrides:
      equals in class Object
    • equals

      public boolean equals(DatabaseTable table)
      Two tables are equal if their names and tables are equal, or their names are equal and one does not have a qualifier assigned. This allows an unqualified table to equal the same fully qualified one.
    • getCreationSuffix

      public String getCreationSuffix()
      returns the suffix applied to the CREATE table statement on this field for DDL generation.
    • getForeignKeyConstraint

      public ForeignKeyConstraint getForeignKeyConstraint(String name)
    • getForeignKeyConstraints

      public Map<String,ForeignKeyConstraint> getForeignKeyConstraints()
    • getIndexes

      public List<IndexDefinition> getIndexes()
      Return a list of index definitions. Used for DDL generation.
    • getName

      public String getName()
      Get method for table name.
    • getNameDelimited

      public String getNameDelimited(DatasourcePlatform platform)
      Get method for table name.
    • getQualifiedName

      public String getQualifiedName()
    • getQualifiedNameDelimited

      public String getQualifiedNameDelimited(DatasourcePlatform platform)
    • printSQL

      public void printSQL(ExpressionSQLPrinter printer) throws IOException
      Print the table's SQL from clause.
      Throws:
      IOException
    • getTableQualifierDelimited

      public String getTableQualifierDelimited(DatasourcePlatform platform)
    • getTableQualifier

      public String getTableQualifier()
    • hasUniqueConstraints

      public boolean hasUniqueConstraints()
    • hasForeignKeyConstraints

      public boolean hasForeignKeyConstraints()
    • hashCode

      public int hashCode()
      Return the hashcode of the name, because it is fairly unique.
      Overrides:
      hashCode in class Object
    • hasIndexes

      public boolean hasIndexes()
    • getUniqueConstraints

      public Map<String,List<List<String>>> getUniqueConstraints()
      Return a list of the unique constraints for this table. Used for DDL generation.
    • hasName

      public boolean hasName()
      Determine whether the receiver has any identification information. Return true if the name or qualifier of the receiver are nonempty.
    • isDecorated

      public boolean isDecorated()
      INTERNAL: Is this decorated / has an AS OF (some past time) clause. Example: SELECT ... FROM EMPLOYEE AS OF TIMESTAMP (exp) t0 ...
    • resetQualifiedName

      protected void resetQualifiedName()
    • setCreationSuffix

      public void setCreationSuffix(String creationSuffix)
    • setName

      public void setName(String name)
      Set the table name. Used when aliasing table names.
    • setName

      public void setName(String name, String startDelimiter, String endDelimiter)
      Set the table name. Used when aliasing table names. If the name contains database delimiters, they will be stripped and a flag will be set to have them added when the DatabaseTable is written to SQL
    • setPossiblyQualifiedName

      public void setPossiblyQualifiedName(String possiblyQualifiedName)
      Used to map the project xml. Any time a string name is read from the project xml, we must check if it is fully qualified and split the actual name from the qualifier.
    • setPossiblyQualifiedName

      public void setPossiblyQualifiedName(String possiblyQualifiedName, String startDelimiter, String endDelimiter)
    • setTableQualifier

      public void setTableQualifier(String qualifier)
    • setTableQualifier

      public void setTableQualifier(String qualifier, String startDelimiter, String endDelimiter)
    • toString

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

      public void setUseDelimiters(boolean useDelimiters)
    • shouldUseDelimiters

      public boolean shouldUseDelimiters()