O
- type of ownerP
- type of part.public abstract class PartManager<O extends PartOwner,P extends PartManager.Part<O>> extends PartOwnerFactory<P>
PartOwner
Each part references its parent, has an order field that determines the order of parts within the parent and has a name field that is unique within the parent.
The factory classes are expected to always be referenced via their parent and their identifying tags are derived from the parent tags so that if multiple tables of forms are created they automatically generate independent tables of parts this makes it easier to remove entire classes of form.
Modifier and Type | Class and Description |
---|---|
class |
PartManager.ChildCreateAction |
static class |
PartManager.Part<O extends PartOwner> |
class |
PartManager.PartCreator |
class |
PartManager.PartUpdater |
class |
PartManager.UnusedNameInput |
DataObjectFactory.AbstractDataObjectInput, DataObjectFactory.AbstractFinder<X>, DataObjectFactory.DataObjectAcceptFilter, DataObjectFactory.DataObjectInput, DataObjectFactory.DataObjectIntegerInput, DataObjectFactory.DestAcceptFilter<T extends DataObject>, DataObjectFactory.FilterAdapter, DataObjectFactory.FilterCounter, DataObjectFactory.FilterExists, DataObjectFactory.FilterIterator, DataObjectFactory.FilterSelector, DataObjectFactory.FilterSet, DataObjectFactory.Finder, DataObjectFactory.MakeRemoteFilterVisitor<R extends DataObject>, DataObjectFactory.MatchFilter, DataObjectFactory.ReferencedAdapter<I extends Indexed>, DataObjectFactory.ReferenceIterator<I extends Indexed>, DataObjectFactory.SortingDataObjectInput, DataObjectFactory.TimeAcceptFilter<T extends DataObject>, DataObjectFactory.TimeFilter
Modifier and Type | Field and Description |
---|---|
protected DynamicFormManager<?> |
form_manager |
static java.lang.String |
NAME_FIELD |
static java.lang.String |
ORDER_FIELD |
static java.lang.String |
OWNER_FIELD |
AUTO_CREATE_TABLES_FEATURE, COMPOSITES_SUFFIX, REJECT_MULTIPLE_RESULT_FEATURE, res
Constructor and Description |
---|
PartManager(DynamicFormManager<?> form_manager,
PartOwnerFactory<O> owner_fac,
java.lang.String part_tag) |
Modifier and Type | Method and Description |
---|---|
void |
deleteAll(O owner)
recursively delete any parts with a specified owner
|
void |
deleteContent(P part)
prepare a
PartManager.Part for deletion by removing any content. |
void |
deletePart(P part)
delete a
PartManager.Part |
P |
duplicate(O new_owner,
P original)
create a (uncommitted) duplicate copy of a part with a new owner
|
P |
findByParentAndName(O owner,
java.lang.String name) |
PartManager.PartCreator |
getChildCreator(O owner) |
PartManager |
getChildManager()
Get the
PartManager for the next level of
the hierarchy. |
Table |
getChildTable(P target) |
abstract java.lang.String |
getChildTypeName()
get the type-name for the child type.
|
PartConfigFactory<O,P> |
getConfigFactory() |
protected TableSpecification |
getDefaultTableSpecification(AppContext c,
java.lang.String table)
Get the default table specification if the table is to be created.
|
P |
getFirst(O owner) |
FormUpdate<P> |
getFormUpdate(AppContext c)
produce a FormUpdate for the target type appropriate for
the requesting user
|
protected java.util.List<OrderClause> |
getOrder() |
PartOwnerFactory<O> |
getOwnerFactory() |
FilterResult<P> |
getParts(O owner)
Get all the parts belonging to an owner.
|
Table |
getPartTable(O owner) |
java.lang.String |
getPartTag() |
P |
getSibling(P current,
boolean up)
get the next sibling (offspring of same parent)
|
protected java.util.Set<java.lang.String> |
getSupress()
generate the class specific set of suppressed fields to be used in form creation/update
The individual forms can override these so you usually use this method to define fields that should
be suppressed in all forms.
|
java.lang.Class<P> |
getTarget()
Get a bound on the type of object produced by this factory for run-time checking.
|
protected abstract PartManager |
makeChildManager() |
protected PartConfigFactory<O,P> |
makeConfigFactory() |
all, allowPreSelect, canCreate, canUpdate, checkComposite, convertToDestinationFilter, customiseForm, equals, exists, find, find, find, find, find, getAllIterator, getComposite, getComposites, getComposites, getConfigTag, getContext, getCount, getDefaultRelationshipFilter, getDefaults, getDestFilter, getExcludeFilter, getFieldConstraints, getFieldHelp, getFilter, getFilter, getFilter, getFinalSelectFilter, getFinalTableSpecification, getFindFilter, getFormCreator, getID, getIndex, getInput, getInput, getInput, getLogger, getMaxIdentifierLength, getNullable, getOptional, getProperty, getReferenced, getReferenceFieldType, getReferenceFieldType, getRemoteFilter, getRemoteSQLFilter, getResult, getResult, getSelectFilter, getSelector, getSelector, getSelectors, getTableSpecification, getTableStructureContributers, getTag, getTranslations, getUniqueIdName, hasComposite, hashCode, isMine, isMine, isMyReference, isValid, makeBDO, makeBDO, makeObject, makeRecord, makeReference, makeReference, matches, narrowSelector, narrowSelector, observeComposite, OrderBy, postCreateTableSetup, postSetContext, release, restrictDefaultInput, setComposites, setContext, setContext, setContextWithMake, setProperty, toString, updateTable
public static final java.lang.String OWNER_FIELD
public static final java.lang.String ORDER_FIELD
public static final java.lang.String NAME_FIELD
protected final DynamicFormManager<?> form_manager
public PartManager(DynamicFormManager<?> form_manager, PartOwnerFactory<O> owner_fac, java.lang.String part_tag)
protected java.util.Set<java.lang.String> getSupress()
DataObjectFactory
getSupress
in class DataObjectFactory<P extends PartManager.Part<O>>
DataObjectFormFactory
public FormUpdate<P> getFormUpdate(AppContext c)
FormUpdateProducer
getFormUpdate
in interface FormUpdateProducer<P extends PartManager.Part<O>>
getFormUpdate
in class DataObjectFactory<P extends PartManager.Part<O>>
c
- AppContextpublic PartManager.PartCreator getChildCreator(O owner)
public final java.lang.String getPartTag()
public java.lang.Class<P> getTarget()
DataObjectFactory
IndexedProducer.getTarget()
. Normally this method should be overridden
each time we make a sub-class that narrows the produced type. However
checks should still pass if the super-type method is retained.getTarget
in interface IndexedProducer<P extends PartManager.Part<O>>
getTarget
in interface Targetted<P extends PartManager.Part<O>>
getTarget
in class DataObjectFactory<P extends PartManager.Part<O>>
protected TableSpecification getDefaultTableSpecification(AppContext c, java.lang.String table)
DataObjectFactory
getDefaultTableSpecification
in class DataObjectFactory<P extends PartManager.Part<O>>
c
- AppContexttable
- String table name.public PartOwnerFactory<O> getOwnerFactory()
public FilterResult<P> getParts(O owner) throws DataFault
owner
- DataFault
public P findByParentAndName(O owner, java.lang.String name) throws DataException
DataException
public P getSibling(P current, boolean up) throws DataFault
current
- start position.up
- direction to moveDataFault
protected java.util.List<OrderClause> getOrder()
getOrder
in class DataObjectFactory<P extends PartManager.Part<O>>
public final void deleteAll(O owner) throws DataFault
owner
- DataFault
public final void deletePart(P part) throws DataFault
PartManager.Part
part
- DataFault
public void deleteContent(P part) throws DataFault
PartManager.Part
for deletion by removing any content.
This defaults to recursing to child elements but may need to be extended
for levels that store additional data in other tables.part
- DataFault
public abstract java.lang.String getChildTypeName()
PartOwnerFactory
getChildTypeName
in class PartOwnerFactory<P extends PartManager.Part<O>>
protected abstract PartManager makeChildManager()
public final PartManager getChildManager()
PartOwnerFactory
PartManager
for the next level of
the hierarchy. This always returns null for
the bottom layer.getChildManager
in class PartOwnerFactory<P extends PartManager.Part<O>>
PartManager
or nullprotected PartConfigFactory<O,P> makeConfigFactory()
public PartConfigFactory<O,P> getConfigFactory()