public final class Metadata
extends java.lang.Object
Modifier and Type | Method and Description |
---|---|
java.util.Collection<java.lang.Class<? extends DBObject>> |
getAllDBObjectClasses()
Gets all DBObject classes that are registered with the metadata (that
is, those that have an associated type String).
|
java.util.Collection<java.lang.String> |
getAllTypes(java.lang.Class<? extends DBObject> clz)
Gets all the valid DBObject types for the given class, including all
subclasses and implementations.
|
java.util.Map<java.lang.String,java.lang.Class<? extends DBObject>> |
getDBObjectClasses()
The returned map contains a mapping of DBObject types to their declaring
DBObject subclasses.
|
static Metadata |
getInstance()
Gets the metadata for the database API.
|
java.lang.Class<? extends DBObject> |
getObjectClass(java.lang.String type)
Gets the DBObject class that corresponds to the given object type.
|
java.util.Collection<java.lang.Class<? extends DBObject>> |
getOwnerClasses(java.lang.Class<? extends DBObject> childClz)
Gets the classes of all objects that can own a child of the given
class.
|
java.util.Collection<java.lang.String> |
getOwnerTypes(java.lang.String childType)
Gets the object types of all objects that can own a child of the given
type.
|
java.util.Collection<java.lang.String> |
getSupportedProperties(java.lang.Class<? extends Copyable> objClz,
java.lang.Class<? extends DBObjectProvider> proClz)
Gets the supported properties, both defined on the bean class and also any
extra properties registered via annotations or extensions, for the given
object class in the context of the given provider class.
|
java.util.Collection<java.lang.String> |
getSupportedProperties(java.lang.Class<? extends Copyable> objClz,
java.lang.Class<? extends DBObjectProvider> proClz,
boolean incBean,
boolean incExtra)
Gets the supported properties, both defined on the bean class and also any
extra properties registered via annotations or extensions, for the given
object class in the context of the given provider class.
|
static java.lang.String |
getType(java.lang.Class<? extends DBObject> objClass)
Returns the type defined for the given object class.
|
boolean |
isBeanProperty(java.lang.Class<? extends DBObject> clz,
java.lang.String propName)
Tests whether a given property is a bean property (i.e.
|
static boolean |
isRealBean(java.lang.Class<? extends Copyable> clz)
Tests whether the given bean class is a concrete bean - i.e.
|
boolean |
isSchemaObject(java.lang.String type)
Returns true if the given DBObject type represents a SchemaObject.
|
boolean |
isStaticReferenceProperty(java.lang.String propName)
Tests whether the given property name is a static reference property, i.e.
|
boolean |
isTypeOf(java.lang.Class<? extends DBObject> clz,
java.lang.String type)
Tests whether the given object type corresponds to a subclass of the given
object class.
|
DBObject |
newDBObject(java.lang.String type,
java.lang.String name)
Creates a new DBObject of given type, and sets it up with a name.
|
DBObject |
newInstance(java.lang.String type)
Creates a new instance of a DBObject of the given type.
|
void |
registerBooleanProperty(java.lang.String name,
Nullable.NullBehaviour nullBehaviour,
java.lang.Class<? extends DBObjectProvider> providerType,
java.lang.Class<? extends DBObject>... objectTypes)
Registers a new Boolean property in the APIs metadata for a given
object class and provider.
|
void |
registerIDProperty(java.lang.String name,
boolean staticReference,
java.lang.Class<? extends DBObject> referencedClass,
java.lang.String[] referencedTypes,
java.lang.Class<? extends DBObjectProvider> providerType,
java.lang.Class<? extends DBObject>... objectTypes)
Registers a new property in the APIs metadata that has a return type of
DBObjectID.
|
void |
registerIDProperty(java.lang.String name,
boolean staticReference,
java.lang.Class<? extends DBObjectProvider> providerType,
java.lang.Class<? extends DBObject>... objectTypes)
Registers a new property in the APIs metadata that has a return type of
DBObjectID.
|
void |
registerObjectClass(java.lang.String type,
java.lang.Class<? extends DBObject> clz)
Registers a new object type with its corresponding DBObject
implementation.
|
void |
registerObjectClass(java.lang.String type,
Thunk<java.lang.Class<? extends DBObject>> clzThunk)
Registers a new object type with its corresponding DBObject
implementation.
|
void |
registerProperties(java.lang.Iterable<? extends PropertyInfo> infos)
Registers extra properties into the API metadata.
|
void |
registerProperty(PropertyInfo info)
Registers an extra property into the API metadata.
|
void |
registerProperty(java.lang.String name,
java.lang.Class returnType,
java.lang.Class<? extends DBObjectProvider> providerType,
java.lang.Class<? extends DBObject>... objectTypes)
Registers a new property in the APIs metadata for a given object class and
provider.
|
void |
registerStringProperty(java.lang.String name,
boolean isMultiLine,
java.lang.Class<? extends DBObjectProvider> providerType,
java.lang.Class<? extends DBObject>... objectTypes)
Registers a new property in the APIs metadata that has a return type of
String.
|
public static Metadata getInstance()
public java.util.Collection<java.lang.Class<? extends DBObject>> getAllDBObjectClasses()
public java.util.Map<java.lang.String,java.lang.Class<? extends DBObject>> getDBObjectClasses()
public boolean isSchemaObject(java.lang.String type)
isTypeOf( SchemaObject.class, type )
public boolean isTypeOf(java.lang.Class<? extends DBObject> clz, java.lang.String type)
boolean isRelation = Metadata.getInstance().isTypeOf( Relation.class, type );
clz
- the class to query (e.g. SystemObject.class
)type
- the database object type (e.g. Table.TYPE
)public DBObject newDBObject(java.lang.String type, java.lang.String name)
type
- the type of object to createname
- the name to give the object (optional)public java.lang.Class<? extends DBObject> getObjectClass(java.lang.String type)
type
- the object type to lookuppublic void registerObjectClass(java.lang.String type, Thunk<java.lang.Class<? extends DBObject>> clzThunk)
public void registerObjectClass(java.lang.String type, java.lang.Class<? extends DBObject> clz)
public java.util.Collection<java.lang.String> getAllTypes(java.lang.Class<? extends DBObject> clz)
public DBObject newInstance(java.lang.String type)
null
if a new instance cannot be instantiated - for example
some types are defined at the interface level and therefore cannot be
instantiated.type
- the object type required ( e.g. "TABLE" )public java.util.Collection<java.lang.String> getSupportedProperties(java.lang.Class<? extends Copyable> objClz, java.lang.Class<? extends DBObjectProvider> proClz)
objClz
- the object to query the properties for - cannot be null.proClz
- the provider class for the object - can be null if all
registered properties are required.public java.util.Collection<java.lang.String> getSupportedProperties(java.lang.Class<? extends Copyable> objClz, java.lang.Class<? extends DBObjectProvider> proClz, boolean incBean, boolean incExtra)
objClz
- the object to query the properties for - cannot be null.proClz
- the provider class for the object - can be null if all
registered properties are required.incBean
- include bean properties in the listincExtra
- include extra properties (registerd with the Metadata)
in the list.public void registerProperty(java.lang.String name, java.lang.Class returnType, java.lang.Class<? extends DBObjectProvider> providerType, java.lang.Class<? extends DBObject>... objectTypes)
name
- the property namereturnType
- the expected return type for the propertyproviderType
- the class of DBObjectProvider that this property is to
be registered against (null or DBObjectProvider.class registers for all
providers).objectTypes
- the object types this property is valid against (null
or DBObject.class registers for all DBObjects).public void registerBooleanProperty(java.lang.String name, Nullable.NullBehaviour nullBehaviour, java.lang.Class<? extends DBObjectProvider> providerType, java.lang.Class<? extends DBObject>... objectTypes)
name
- the property namenullBehaviour
- the behaviour of the property regarding null as
an allowed valueproviderType
- the class of DBObjectProvider that this property is to
be registered against (null or DBObjectProvider.class registers for all
providers).objectTypes
- the object types this property is valid against (null
or DBObject.class registers for all DBObjects).public void registerStringProperty(java.lang.String name, boolean isMultiLine, java.lang.Class<? extends DBObjectProvider> providerType, java.lang.Class<? extends DBObject>... objectTypes)
name
- the property nameisMultiLine
- wher the String can contain newlinesproviderType
- the class of DBObjectProvider that this property is to
be registered against (null or DBObjectProvider.class registers for all
providers).objectTypes
- the object types this property is valid against (null
or DBObject.class registers for all DBObjects).public void registerIDProperty(java.lang.String name, boolean staticReference, java.lang.Class<? extends DBObjectProvider> providerType, java.lang.Class<? extends DBObject>... objectTypes)
name
- the property namestaticReference
- true if the property value is treated as a normal
reference and replaced by the replaceReferenceIDs
method on DBObject.providerType
- the class of DBObjectProvider that this property is to
be registered against (null or DBObjectProvider.class registers for all
providers).objectTypes
- the object types this property is valid against (null
or DBObject.class registers for all DBObjects).public void registerIDProperty(java.lang.String name, boolean staticReference, java.lang.Class<? extends DBObject> referencedClass, java.lang.String[] referencedTypes, java.lang.Class<? extends DBObjectProvider> providerType, java.lang.Class<? extends DBObject>... objectTypes)
name
- the property namestaticReference
- true if the property value is treated as a normal
reference and replaced by the replaceReferenceIDs
method on DBObject.providerType
- the class of DBObjectProvider that this property is to
be registered against (null or DBObjectProvider.class registers for all
providers).objectTypes
- the object types this property is valid against (null
or DBObject.class registers for all DBObjects).public void registerProperty(PropertyInfo info)
java.lang.IllegalArgumentException
- if the PropertyInfo is not valid or a
property is already registered with that name.public void registerProperties(java.lang.Iterable<? extends PropertyInfo> infos)
public boolean isStaticReferenceProperty(java.lang.String propName)
propName
- the name of the property to querypublic boolean isBeanProperty(java.lang.Class<? extends DBObject> clz, java.lang.String propName)
clz
- the object type to testpropName
- the property name to findpublic java.util.Collection<java.lang.String> getOwnerTypes(java.lang.String childType)
childType
- the child type to lookupgetOwnerClasses(java.lang.Class<? extends oracle.javatools.db.DBObject>)
public java.util.Collection<java.lang.Class<? extends DBObject>> getOwnerClasses(java.lang.Class<? extends DBObject> childClz)
childClz
- the child class to lookupgetOwnerTypes(java.lang.String)
public static boolean isRealBean(java.lang.Class<? extends Copyable> clz)
clz
- the class to test