A
- AppUser
typeB
- target typeL
- Link typepublic abstract class AbstractRelationship<A extends AppUser,B extends DataObject,L extends AbstractRelationship.Link<A,B>> extends RelationshipLinkManager<A,B,L>
RelationshipProvider
and RoleSelector
for the domain object.
How roles are actually encoded into the link object is deferred to the sub-class.Modifier and Type | Class and Description |
---|---|
static class |
AbstractRelationship.Link<A extends AppUser,B extends DataObject> |
LinkManager.JoinLinkFilterIterator, LinkManager.JoinLinkMapper, LinkManager.LeftAcceptFilter, LinkManager.LinkInput, LinkManager.LinkResult, LinkManager.RightAcceptFilter
IndexedLinkManager.LinkFilter, IndexedLinkManager.LinkProvider<T extends IndexedLinkManager.Link<L,R>,L extends Indexed,R extends Indexed>, IndexedLinkManager.LinkUpdater, IndexedLinkManager.SQLLinkFilter
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
USE_JOIN
AUTO_CREATE_TABLES_FEATURE, COMPOSITES_SUFFIX, REJECT_MULTIPLE_RESULT_FEATURE, res
Modifier | Constructor and Description |
---|---|
protected |
AbstractRelationship(AppContext c,
java.lang.String tag,
java.lang.String person_field,
DataObjectFactory<B> b_fac,
java.lang.String field)
Extension constructor to allow sub-classes to set factory and field
|
Modifier and Type | Method and Description |
---|---|
boolean |
canCreate(SessionService c)
Can the producer provide a FormUpdate for the current user.
|
boolean |
hasRole(A user,
B target,
java.lang.String role) |
protected L |
selectLink(A leftEnd,
B rightEnd)
method to call when from selector code normally the same as getLink but
may need to be overridden to automatically create objects (beware of
unwanted side effects in this case).
|
void |
setRole(A user,
B target,
java.lang.String role,
boolean value) |
addRelationships, getFilterFromRole, getTargetFactory, getTargetFilter, getTargetRoleFilter, getUserFilter, getUserFilter, getUserRoleFilter, hasRelationFilter, personInRelationFilter, providesRelationship
find, find, getDefaultTableSpecification, getFilter, getFilterResult, getInput, getLeftFactory, getLeftFilter, getLeftFilter, getLeftInput, getLeftJoinFilter, getLeftRemoteFilter, getLinkCount, getLinkIterator, getRightFactory, getRightFilter, getRightFilter, getRightInput, getRightJoinFilter, getRightRemoteFilter, getSelectors, getTarget, isLeft, isRight
addLeftSet, addRightSet, getDefaultTableSpecification, getFinalTableSpecification, getFormUpdate, getHistoryHandler, getLeftField, getLeftFilter, getLeftProducer, getLeftSet, getLink, getRightField, getRightFilter, getRightProducer, getRightSet, getTableSpecification, makeHistoryHandler, makeLink, modifyHistoryTable, setContext, setHistoryHandler, updateHistory, useAutoHistory
all, allowPreSelect, 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, getLogger, getMaxIdentifierLength, getNullable, getOptional, getOrder, getProperty, getReferenced, getReferenceFieldType, getReferenceFieldType, getRemoteFilter, getRemoteSQLFilter, getResult, getResult, getSelectFilter, getSelector, getSelector, getSupress, 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
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
getRelationships
getContext
protected AbstractRelationship(AppContext c, java.lang.String tag, java.lang.String person_field, DataObjectFactory<B> b_fac, java.lang.String field)
protected final L selectLink(A leftEnd, B rightEnd) throws java.lang.Exception
IndexedLinkManager
#canCreate(uk.ac.ed.epcc.webapp.SessionService)
in that case.selectLink
in class IndexedLinkManager<L extends AbstractRelationship.Link<A,B>,A extends AppUser,B extends DataObject>
DataException
java.lang.Exception
public final boolean canCreate(SessionService c)
FormCreatorProducer
FormPolicy
canCreate
in interface FormCreatorProducer
canCreate
in class DataObjectFactory<L extends AbstractRelationship.Link<A,B>>