blob: 16d215bf65170a733baa48df1565455e0807fda7 [file] [log] [blame]
/**
* Represents a class or interface. Extended for the specifics of those cases.
* @since 2.3
*/
public interface ComponentMetadata extends Metadata {
/**
* Accessor for the name of this component (set on construction).
*
* @return The name
*/
String getName();
/**
* Method to define the identity type to use.
*
* @param id identity type
*/
ComponentMetadata setIdentityType(IdentityType id);
/**
* Accessor for the identity type to use.
*
* @return identity type
*/
IdentityType getIdentityType();
/**
* Method to set the object-id (PK) class.
*
* @param idclass Object-id class
*/
ComponentMetadata setObjectIdClass(String idclass);
/**
* Accessor for the object-id class (if defined).
*
* @return The object-id class
*/
String getObjectIdClass();
/**
* Method to set whether the component requires an extent.
*
* @param extent Requires extent?
*/
ComponentMetadata setRequiresExtent(boolean extent);
/**
* Accessor for whether the component requires an extent.
*
* @return Requires extent?
*/
boolean getRequiresExtent();
/**
* Method to set whether this is detachable
*
* @param detachable Detachable?
*/
ComponentMetadata setDetachable(boolean detachable);
/**
* Accessor for whether this is detachable.
*
* @return Detachable?
*/
boolean getDetachable();
/**
* Method to set whether this is cacheable
*
* @param cacheable Cacheable?
*/
ComponentMetadata setCacheable(boolean cacheable);
/**
* Accessor for whether this is cacheable.
*
* @return Detachable?
*/
boolean getCacheable();
/**
* Method to set whether it is stored only as embedded in other objects.
*
* @param embedded Whether it is only stored embedded
*/
ComponentMetadata setEmbeddedOnly(boolean embedded);
/**
* Accessor for whether this is embedded only.
*
* @return Only stored as embedded
*/
Boolean getEmbeddedOnly();
/**
* Method to set the catalog (ORM) for this component
*
* @param catalog Catalog name
*/
ComponentMetadata setCatalog(String catalog);
/**
* Accessor for the catalog (ORM) for this component
*
* @return The catalog
*/
String getCatalog();
/**
* Method to set the schema (ORM) for this component
*
* @param schema Schema name
*/
ComponentMetadata setSchema(String schema);
/**
* Accessor for the schema (ORM) for this component
*
* @return The schema
*/
String getSchema();
/**
* Method to set the table name.
*
* @param table Table name
*/
ComponentMetadata setTable(String table);
/**
* Accessor for the name of the table.
*
* @return The name
*/
String getTable();
/**
* Method to define the inheritance metadata.
*
* @return The InheritanceMetadata
*/
InheritanceMetadata newInheritanceMetadata();
/**
* Accessor for the inheritance (if any).
*
* @return inheritance
*/
InheritanceMetadata getInheritanceMetadata();
/**
* Method to define the version metadata.
*
* @return The VersionMetadata
*/
VersionMetadata newVersionMetadata();
/**
* Accessor for the version (if any).
*
* @return version
*/
VersionMetadata getVersionMetadata();
/**
* Method to define the datastore identity metadata details.
*
* @return The DatastoreIdentityMetadata
*/
DatastoreIdentityMetadata newDatastoreIdentityMetadata();
/**
* Accessor for the datastore identity details.
*
* @return datastore identity details
*/
DatastoreIdentityMetadata getDatastoreIdentityMetadata();
/**
* Method to define the primary key details.
*
* @return The PrimaryKeyMetadata
*/
PrimaryKeyMetadata newPrimaryKeyMetadata();
/**
* Accessor for the primary key (if any).
*
* @return primary key details
*/
PrimaryKeyMetadata getPrimaryKeyMetadata();
/**
* Accessor for all joins(s) defined on the component.
*
* @return The join(s)
*/
JoinMetadata[] getJoins();
/**
* Add a join for this component.
*
* @return The JoinMetadata
*/
JoinMetadata newJoinMetadata();
/**
* Accessor for the number of join(s) defined for this component.
*
* @return The number of join(s)
*/
int getNumberOfJoins();
/**
* Accessor for all fk(s) defined on the component.
*
* @return The fk(s)
*/
ForeignKeyMetadata[] getForeignKeys();
/**
* Add a new FK for this component.
*
* @return The ForeignKeyMetadata
*/
ForeignKeyMetadata newForeignKeyMetadata();
/**
* Accessor for the number of FKs defined for this component.
*
* @return The number of FKs
*/
int getNumberOfForeignKeys();
/**
* Accessor for all index(s) defined on the component.
*
* @return The index(s)
*/
IndexMetadata[] getIndices();
/**
* Add a new index for this component.
*
* @return The IndexMetadata
*/
IndexMetadata newIndexMetadata();
/**
* Accessor for the number of indices defined for this component.
*
* @return The number of indices
*/
int getNumberOfIndices();
/**
* Accessor for all unique constraints defined on the component.
*
* @return The unique constraints
*/
UniqueMetadata[] getUniques();
/**
* Add a new unique constraint for this component.
*
* @return The UniqueMetadata
*/
UniqueMetadata newUniqueMetadata();
/**
* Accessor for the number of unique constraints defined for this component.
*
* @return The number of unique constraints
*/
int getNumberOfUniques();
/**
* Accessor for all fields/properties defined on the component.
*
* @return The members
*/
MemberMetadata[] getMembers();
/**
* Accessor for the number of fields/properties defined for this component.
*
* @return The number of members
*/
int getNumberOfMembers();
/**
* Add a new property for this component.
*
* @param name Name of the property
* @return The PropertyMetadata
*/
PropertyMetadata newPropertyMetadata(String name);
/**
* Add a new property for this component.
*
* @param method Java bean getter/setter method
* @return The PropertyMetadata
*/
PropertyMetadata newPropertyMetadata(Method method);
/**
* Accessor for all named queries defined on the component.
*
* @return The queries
*/
QueryMetadata[] getQueries();
/**
* Add a new query for this component.
*
* @param name
* Name of the query to add
* @return The QueryMetadata
*/
QueryMetadata newQueryMetadata(String name);
/**
* Accessor for the number of named queries defined for this component.
*
* @return The number of named queries
*/
int getNumberOfQueries();
/**
* Accessor for all FetchGroup defined on the component.
*
* @return The FetchGroups
*/
FetchGroupMetadata[] getFetchGroups();
/**
* Add a new FetchGroup for this component.
*
* @param name Name of the FetchGroup
* @return The FetchGroupMetadata
*/
FetchGroupMetadata newFetchGroupMetadata(String name);
/**
* Accessor for the number of fetchGroups defined for this component.
*
* @return The number of fetch groups
*/
int getNumberOfFetchGroups();
/**
* Accessor for all column(s) defined on the join.
*
* @return The column(s)
*/
ColumnMetadata[] getColumns();
/**
* Add a new column for this join.
*
* @return The ColumnMetadata
*/
ColumnMetadata newColumnMetadata();
/**
* Accessor for the number of columns defined for this join.
*
* @return The number of columns
*/
int getNumberOfColumns();
}