public abstract class DerivedPropertyBuilder<T extends AbstractBuildableObject> extends AbstractDBObjectBuilder<T>
PropertyBuilder
annotation to facilitate building.AbstractDBObjectBuilder.PropertyBuilder
BASE_COMPONENT_KEY
Constructor and Description |
---|
DerivedPropertyBuilder(AbstractDBObjectProvider pro,
java.lang.String type)
Creates a new derived property builder.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
canBuildComponents()
Returns false by default.
|
protected boolean |
canCacheBuildFailure(T object,
java.lang.String sourceProp)
Tests whether the value for the given property can be cached.
|
void |
cancelCurrentBuild(T object)
The default implementation sets an internal flagged that can be checked
using
#isCurrentBuildCancelled() . |
java.util.Collection<java.lang.String> |
clearDerivedProperties(T obj,
DBObjectChange change)
Processes a change for the given object that has had its derived
properties built using this builder, and makes any further changes that
are required as a result of those changes.
|
java.util.Collection<java.lang.String> |
clearDerivedProperties(T obj,
java.lang.String property,
DBObjectChange change)
Clears the properties that are derived from the given property and that
need resetting given the new value for the source property.
|
T |
createObject(java.lang.String name,
Schema schema,
DBObjectID id)
Requests the creation of a new SchemaObject of the type built by this
DBObjectBuilder instance. |
protected void |
derivePropertiesForTempCopy(T object,
T orig,
java.lang.String sourceProp)
If fillInComponent encounters a derived property on a temporary copy,
and the source property is unchanged from the original object, then
this method is called to derive the properties on the original object
and copy those values to the temp copy.
|
protected boolean |
fillInObjectComponentImpl(T object,
java.lang.String prop)
Actually fills in the given component on an object.
|
protected boolean |
isBuiltOnFailure(T object,
java.lang.String[] props,
DBException dbe)
Tests whether the given properties should be considered "built" by the
object even though the build threw an exception.
|
boolean |
isClearDerivedPropertiesRequired(T obj,
DBObjectChange change,
java.util.Collection<java.lang.String> currentlyBuiltProps)
Tests whether clearDerivedProperties should be called for the given
object/change.
|
protected void |
registerObject(T object)
Shared between buildObject and buildObjects to perform any post-build tasks
that are needed (e.g.
|
buildObject, buildObjectComponent, canBuildEditableObject, checkInterruptOrCancel, ensureComponent, fillInObject, fillInObjectComponent, findObjectInProviderCache, findObjectInProviderCache, getBuiltProperties, getDerivedProperties, getDerivedPropertySource, getLogger, getObjectType, getProvider, getSchema, isBuildableProperty, isCurrentBuildCancelled, markAsBuilt, markAsBuilt, needsBuilding, needsBuilding, newObject, newObject, replaceReferenceIDs, setBuilder, updateTimestamp, updateTimestamp
public DerivedPropertyBuilder(AbstractDBObjectProvider pro, java.lang.String type)
pro
- the containing providertype
- the type of object that is built by this builder
(e.g. Table.TYPE
)public boolean isClearDerivedPropertiesRequired(T obj, DBObjectChange change, java.util.Collection<java.lang.String> currentlyBuiltProps)
obj
- the object whose properties have changedchange
- the change that has happenedcurrentlyBuiltProps
- the properties that are currently built on the
objectclearDerivedProperties(T, oracle.javatools.db.event.DBObjectChange)
should be calledpublic java.util.Collection<java.lang.String> clearDerivedProperties(T obj, DBObjectChange change)
If any property is cleared (because its source property has changed and it needs building again) then it should be in the returned collection of properties. These will be marked as "unbuilt" on the object by the framework.
obj
- the object that was built by this builderchange
- a set of changes that are being made to the objectpublic java.util.Collection<java.lang.String> clearDerivedProperties(T obj, java.lang.String property, DBObjectChange change)
obj
- the object the property is being changed onproperty
- the property being changedchange
- the overall change that is occuringprotected final boolean canBuildComponents()
AbstractDBObjectBuilder
AbstractDBObjectBuilder.PropertyBuilder
annotation.canBuildComponents
in class AbstractDBObjectBuilder<T extends AbstractBuildableObject>
public final T createObject(java.lang.String name, Schema schema, DBObjectID id)
DBObjectBuilder
DBObjectBuilder
instance.createObject
in interface DBObjectBuilder<T extends AbstractBuildableObject>
createObject
in class AbstractDBObjectBuilder<T extends AbstractBuildableObject>
name
- The name of the new objectschema
- The schema containing the new objectid
- the DBObjectID for the new objectpublic void cancelCurrentBuild(T object)
AbstractDBObjectBuilder
#isCurrentBuildCancelled()
. If your builder
implementation is designed to throw CancelledException internally you
can periodically call #checkInterruptOrCancel()
to achieve
this check.cancelCurrentBuild
in interface DBObjectBuilder<T extends AbstractBuildableObject>
cancelCurrentBuild
in class AbstractDBObjectBuilder<T extends AbstractBuildableObject>
object
- the object whose build should be cancelled.protected void registerObject(T object) throws DBException
AbstractDBObjectBuilder
registerObject
in class AbstractDBObjectBuilder<T extends AbstractBuildableObject>
DBException
protected boolean canCacheBuildFailure(T object, java.lang.String sourceProp)
the
- object being builtsourceProp
- the source property to test.equals
and therefore cached against any DBException that is
encountered.protected boolean isBuiltOnFailure(T object, java.lang.String[] props, DBException dbe)
AbstractDBObjectBuilder
isBuiltOnFailure
in class AbstractDBObjectBuilder<T extends AbstractBuildableObject>
object
- the object being builtprops
- the properties being builtdbe
- the exception that the property building threwprotected boolean fillInObjectComponentImpl(T object, java.lang.String prop) throws DBException
AbstractDBObjectBuilder
fillInObjectComponentImpl
in class AbstractDBObjectBuilder<T extends AbstractBuildableObject>
object
- the object to buildCancelledException
- if the build is cancelled, or interrupted.DBException
- if the build failsprotected void derivePropertiesForTempCopy(T object, T orig, java.lang.String sourceProp) throws DBException
object
- the temp copyorig
- the original object that object is a temp copy ofsourceProp
- the source property whose derived properties we want
built on the temp copy (by deriving them on orig and copying them).DBException