Class DatabaseTable
- 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:
DatabaseField
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected String
creationSuffix
protected Map<String,ForeignKeyConstraint>
foreignKeyConstraints
JPA 2.1 Foreign key specification dataprotected List<IndexDefinition>
indexes
Store the set of indexes defined through meta-data for the table.protected String
name
protected String
qualifiedName
protected String
tableQualifier
protected Map<String,List<List<String>>>
uniqueConstraints
Contains the user specified unique constraints.protected boolean
useDelimiters
-
Constructor Summary
Constructors Constructor Description DatabaseTable()
Initialize the newly allocated instance of this class.DatabaseTable(String possiblyQualifiedName)
DatabaseTable(String tableName, String qualifier)
DatabaseTable(String tableName, String qualifier, boolean useDelimiters, String startDelimiter, String endDelimiter)
DatabaseTable(String possiblyQualifiedName, String startDelimiter, String endDelimiter)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addForeignKeyConstraint(ForeignKeyConstraint foreignKeyConstraint)
void
addIndex(IndexDefinition index)
Add an index definition to this table.void
addUniqueConstraints(String name, List<String> columnNames)
Add the unique constraint for the columns names.DatabaseTable
clone()
Return a shallow copy of the receiver.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.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.String
getCreationSuffix()
returns the suffix applied to the CREATE table statement on this field for DDL generation.ForeignKeyConstraint
getForeignKeyConstraint(String name)
Map<String,ForeignKeyConstraint>
getForeignKeyConstraints()
List<IndexDefinition>
getIndexes()
Return a list of index definitions.String
getName()
Get method for table name.String
getNameDelimited(DatasourcePlatform platform)
Get method for table name.String
getQualifiedName()
String
getQualifiedNameDelimited(DatasourcePlatform platform)
String
getTableQualifier()
String
getTableQualifierDelimited(DatasourcePlatform platform)
Map<String,List<List<String>>>
getUniqueConstraints()
Return a list of the unique constraints for this table.boolean
hasForeignKeyConstraints()
int
hashCode()
Return the hashcode of the name, because it is fairly unique.boolean
hasIndexes()
boolean
hasName()
Determine whether the receiver has any identification information.boolean
hasUniqueConstraints()
boolean
isDecorated()
INTERNAL: Is this decorated / has an AS OF (some past time) clause.void
printSQL(ExpressionSQLPrinter printer)
Print the table's SQL from clause.protected void
resetQualifiedName()
void
setCreationSuffix(String creationSuffix)
void
setName(String name)
Set the table name.void
setName(String name, String startDelimiter, String endDelimiter)
Set the table name.void
setPossiblyQualifiedName(String possiblyQualifiedName)
Used to map the project xml.void
setPossiblyQualifiedName(String possiblyQualifiedName, String startDelimiter, String endDelimiter)
void
setTableQualifier(String qualifier)
void
setTableQualifier(String qualifier, String startDelimiter, String endDelimiter)
void
setUseDelimiters(boolean useDelimiters)
boolean
shouldUseDelimiters()
String
toString()
-
-
-
Field Detail
-
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 Detail
-
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)
-
-
Method Detail
-
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.
-
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.
-
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.
-
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.- Parameters:
name
-
-
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- Parameters:
name
-
-
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.- Parameters:
possiblyQualifiedName
-
-
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)
-
setUseDelimiters
public void setUseDelimiters(boolean useDelimiters)
-
shouldUseDelimiters
public boolean shouldUseDelimiters()
-
-