P - public class PersonFactory<P extends Person> extends uk.ac.ed.epcc.webapp.session.ExtAuthAppUserFactory<P> implements uk.ac.ed.epcc.webapp.model.NameFinder<P>, ExpressionTargetFactory<P>, uk.ac.ed.epcc.webapp.jdbc.table.TableStructureTransitionTarget, ClassificationParseTarget<P>, PlugInOwner, FilterSelector<uk.ac.ed.epcc.webapp.model.data.forms.inputs.DataObjectItemInput<P>>
| Modifier and Type | Class and Description |
|---|---|
class |
PersonFactory.PersonTableRegistry |
uk.ac.ed.epcc.webapp.session.ExtAuthAppUserFactory.ExtAuthUpdater, uk.ac.ed.epcc.webapp.session.ExtAuthAppUserFactory.SignupFormCreator<T extends uk.ac.ed.epcc.webapp.session.ExtAuthAppUser>uk.ac.ed.epcc.webapp.session.AppUserFactory.AppUserCreator<AU extends uk.ac.ed.epcc.webapp.session.AppUser>, uk.ac.ed.epcc.webapp.session.AppUserFactory.CreateValidator<AU extends uk.ac.ed.epcc.webapp.session.AppUser>, uk.ac.ed.epcc.webapp.session.AppUserFactory.RoleFilter, uk.ac.ed.epcc.webapp.session.AppUserFactory.UpdatePersonRequiredPageuk.ac.ed.epcc.webapp.model.data.DataObjectFactory.CounterMapper, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.DataObjectAcceptFilter, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.DataObjectInput, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.DataObjectIntegerInput, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.DestFilter<T extends uk.ac.ed.epcc.webapp.model.data.DataObject>, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.ExistsMapper, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.FilterAdapter, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.FilterCounter, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.FilterExists, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.FilterIterator, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.FilterSet, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.Finder, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.MatchFilter, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.ReferenceAcceptFilter<R extends uk.ac.ed.epcc.webapp.Indexed,T extends uk.ac.ed.epcc.webapp.model.data.DataObject>, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.ReferencedAdapter<I extends uk.ac.ed.epcc.webapp.Indexed>, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.ReferenceIterator<I extends uk.ac.ed.epcc.webapp.Indexed>, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.RemoteFilter<T extends uk.ac.ed.epcc.webapp.model.data.DataObject>, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.SortingDataObjectInput, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.TimeAcceptFilter<T extends uk.ac.ed.epcc.webapp.model.data.DataObject>, uk.ac.ed.epcc.webapp.model.data.DataObjectFactory.TimeFilter| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
DISABLE_CREATEUSERS_FEATURE |
static PropertyTag<java.lang.String> |
EMAIL_PROP |
static PropertyTag<java.lang.Boolean> |
IS_ME_PROP |
static java.lang.String |
SELF_REGISTER_FEATURE |
static PropertyTag<java.util.Date> |
SIGNUP_PROP |
static PropertyTag<java.lang.String> |
WEBNAME_PROP |
| Constructor and Description |
|---|
PersonFactory() |
PersonFactory(uk.ac.ed.epcc.webapp.AppContext ctx) |
PersonFactory(uk.ac.ed.epcc.webapp.AppContext ctx,
java.lang.String table) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
allowSelfRegister() |
<I> boolean |
compatible(PropExpression<I> expr)
Check if the expression is compatible with this class.
|
boolean |
compatible(RecordSelector sel)
Is the RecordSelector compatible with this class.
|
java.lang.StringBuilder |
endParse()
Complete a batch parse.
|
P |
find(PropertyMap template) |
P |
findByName(java.lang.String name) |
P |
findByWebName(java.lang.String name) |
protected AccessorMap<P> |
getAccessorMap() |
uk.ac.ed.epcc.webapp.model.data.DataCache<java.lang.String,P> |
getDataCache() |
uk.ac.ed.epcc.webapp.jdbc.table.TableSpecification |
getDefaultTableSpecification(uk.ac.ed.epcc.webapp.AppContext c,
java.lang.String table) |
PropExpressionMap |
getDerivedProperties()
Get a set of derived properties (defined as a
PropExpressionMap)
that should be implemented by the record. |
<R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> |
getFilter(PropExpression<R> expr,
uk.ac.ed.epcc.webapp.jdbc.filter.MatchCondition match,
R value)
get a filter based on comparing a PropExpression to a value.
|
protected uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> |
getFilter(RecordSelector selector)
Get a filter from a
RecordSelector |
PropertyFinder |
getFinder()
Produce a PropertyFinder that can find any of the PropertyTags
that can be specified for the objects generated by this type.
|
PropertyMap |
getGlobals(java.util.Map<java.lang.String,java.lang.Object> params)
extract global properties from post parameters.
|
uk.ac.ed.epcc.webapp.model.data.forms.inputs.DataObjectItemInput<P> |
getInput(RecordSelector sel) |
java.util.Iterator<P> |
getIterator(RecordSelector sel)
Get an Iterator over selected records.
|
java.util.Iterator<P> |
getIterator(RecordSelector sel,
int skip,
int count)
Get an Iterator over selected records.
|
<R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> |
getNullFilter(PropExpression<R> expr,
boolean is_null)
get a filter that checks null status of an expression.
|
protected java.util.List<uk.ac.ed.epcc.webapp.jdbc.filter.OrderClause> |
getOrder() |
<I> uk.ac.ed.epcc.webapp.jdbc.filter.OrderFilter<P> |
getOrderFilter(boolean descending,
PropExpression<I> expr) |
PropertyContainerParser |
getParser()
get the
PropertyContainerParser used for the initial parse stage |
uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> |
getPeriodFilter(uk.ac.ed.epcc.webapp.time.Period period,
PropExpression<java.util.Date> start,
PropExpression<java.util.Date> end,
OverlapType type,
long cutoff)
Generate an overlap filter
|
java.util.Set<PropertyContainerPolicy> |
getPolicies()
Get a set of
PropertyContainerPolicy to be applied to the
property stream. |
long |
getRecordCount(RecordSelector selector)
get the number of records matching the selector
|
<R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> |
getRelationFilter(PropExpression<R> left,
uk.ac.ed.epcc.webapp.jdbc.filter.MatchCondition match,
PropExpression<R> right)
get a filter that compares two expressions.
|
<R> uk.ac.ed.epcc.webapp.jdbc.expr.SQLExpression<R> |
getSQLExpression(PropExpression<R> exp) |
java.lang.String |
getTableTransitionID() |
uk.ac.ed.epcc.webapp.jdbc.table.TableTransitionRegistry |
getTableTransitionRegistry() |
java.lang.Class<? super P> |
getTarget() |
<PT> java.util.Set<PT> |
getValues(PropertyTag<PT> tag,
RecordSelector selector)
Gets the distinct property values for the set of records identified by the RecordSelector
|
<X> boolean |
hasProperty(PropertyTag<X> tag)
Check if the specified property is defined.
|
P |
make(PropertyContainer value)
Returns an uncommitted object updated to match the input container.
|
protected uk.ac.ed.epcc.webapp.model.data.DataObject |
makeBDO(uk.ac.ed.epcc.webapp.model.data.Repository.Record res) |
P |
makeByName(java.lang.String name) |
P |
makeFromWebName(java.lang.String name) |
P |
makeFromWebName(java.lang.String name,
boolean forceCreate) |
protected boolean |
makeOnUpload()
Control if new records should be made when seen in an parse
|
protected PersonFactory.PersonTableRegistry |
makeTableRegistry() |
java.util.Map<java.lang.String,java.lang.Boolean> |
makeToggleMap() |
java.lang.String |
normaliseName(java.lang.String name) |
boolean |
parse(DerivedPropertyMap map,
java.lang.String currentLine)
Parse a text line into a DerivedPropertyMap.
|
void |
release() |
void |
resetStructure() |
protected void |
setStaticAccessors(MultiFinder finder,
AccessorMap<P> map2)
Extension point to allow programmatic modifications to
the AccessorMap in sub-classes
|
java.util.Iterator<java.lang.String> |
splitRecords(java.lang.String update)
split update text into a series of lines.
|
void |
startParse(PropertyMap defaults)
Start a batch parse.
|
allowWebLogin, getFormUpdate, getSignupFormCreatoraddUpdateNotes, buildUpdateForm, findByEmail, findByEmail, getCreateValidator, getDefaults, getFormCreator, getRequiredPages, getRoleFilter, getRoleInput, getSelectors, getSupress, isRegisteredUsername, postAutoTableCreateSetup, postCreateTableSetupall, allowPreSelect, canCreate, canUpdate, customiseForm, equals, exists, find, find, find, find, find, getAllIterator, getComposite, getComposites, getConfigTag, getContext, getCount, getIndex, getInput, getInput, getIterator, getLogger, getMaxIdentifierLength, getNullable, getOptional, getProperty, getReferenced, getReferenceFieldType, getResult, getSelectFilter, getTag, getTranslations, getUniqueIdName, hashCode, isMine, isMine, isMyReference, isValid, makeBDO, makeObject, makeRecord, makeReference, makeReference, makeSet, OrderBy, restrictDefaultInput, setContext, setContext, setContextWithMake, setProperty, toStringclone, finalize, getClass, notify, notifyAll, wait, wait, waitgetTagpublic static final java.lang.String DISABLE_CREATEUSERS_FEATURE
public static final java.lang.String SELF_REGISTER_FEATURE
public static final PropertyTag<java.lang.String> WEBNAME_PROP
public static final PropertyTag<java.lang.String> EMAIL_PROP
public static final PropertyTag<java.util.Date> SIGNUP_PROP
public static final PropertyTag<java.lang.Boolean> IS_ME_PROP
public PersonFactory()
public PersonFactory(uk.ac.ed.epcc.webapp.AppContext ctx,
java.lang.String table)
public PersonFactory(uk.ac.ed.epcc.webapp.AppContext ctx)
public java.lang.String normaliseName(java.lang.String name)
public P findByWebName(java.lang.String name) throws uk.ac.ed.epcc.webapp.jdbc.exception.DataException
public P findByName(java.lang.String name)
public uk.ac.ed.epcc.webapp.model.data.DataCache<java.lang.String,P> getDataCache()
public P makeByName(java.lang.String name) throws uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFault
public P makeFromWebName(java.lang.String name)
public P makeFromWebName(java.lang.String name, boolean forceCreate)
public boolean allowSelfRegister()
protected uk.ac.ed.epcc.webapp.model.data.DataObject makeBDO(uk.ac.ed.epcc.webapp.model.data.Repository.Record res)
throws uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFault
public java.util.Map<java.lang.String,java.lang.Boolean> makeToggleMap()
protected java.util.List<uk.ac.ed.epcc.webapp.jdbc.filter.OrderClause> getOrder()
protected void setStaticAccessors(MultiFinder finder, AccessorMap<P> map2)
finder - map2 - public PropertyFinder getFinder()
PropertyTargetFactorygetFinder in interface PropertyContainerParseTarget<P extends Person>getFinder in interface PropertyTargetFactorypublic <X> boolean hasProperty(PropertyTag<X> tag)
PropertyTargetFactoryhasProperty in interface PropertyTargetFactoryprotected AccessorMap<P> getAccessorMap()
public final uk.ac.ed.epcc.webapp.jdbc.table.TableTransitionRegistry getTableTransitionRegistry()
getTableTransitionRegistry in interface uk.ac.ed.epcc.webapp.jdbc.table.TableTransitionTargetprotected PersonFactory.PersonTableRegistry makeTableRegistry()
public void resetStructure()
resetStructure in interface uk.ac.ed.epcc.webapp.jdbc.table.TableStructureTransitionTargetpublic java.lang.String getTableTransitionID()
getTableTransitionID in interface uk.ac.ed.epcc.webapp.jdbc.table.TableTransitionTargetpublic PropertyMap getGlobals(java.util.Map<java.lang.String,java.lang.Object> params)
ClassificationParseTargetgetGlobals in interface ClassificationParseTarget<P extends Person>protected boolean makeOnUpload()
public P make(PropertyContainer value) throws AccountingParseException
ClassificationParseTargetmake in interface ClassificationParseTarget<P extends Person>AccountingParseExceptionpublic java.lang.StringBuilder endParse()
PropertyContainerParseTargetendParse in interface PropertyContainerParseTarget<P extends Person>public boolean parse(DerivedPropertyMap map, java.lang.String currentLine) throws AccountingParseException
PropertyContainerParseTargetparse in interface PropertyContainerParseTarget<P extends Person>AccountingParseExceptionmap - DerivedPropertyMap to be populatedpublic java.util.Iterator<java.lang.String> splitRecords(java.lang.String update)
throws AccountingParseException
PropertyContainerParseTargetsplitRecords in interface PropertyContainerParseTarget<P extends Person>AccountingParseExceptionpublic void startParse(PropertyMap defaults) throws java.lang.Exception
PropertyContainerParseTargetstartParse in interface PropertyContainerParseTarget<P extends Person>java.lang.Exceptiondefaults - PropertyMap of default global propertiespublic PropertyContainerParser getParser()
PlugInOwnerPropertyContainerParser used for the initial parse stagegetParser in interface PlugInOwnerpublic java.util.Set<PropertyContainerPolicy> getPolicies()
PlugInOwnerPropertyContainerPolicy to be applied to the
property stream.getPolicies in interface PlugInOwnerpublic PropExpressionMap getDerivedProperties()
PlugInOwnerPropExpressionMap)
that should be implemented by the record.getDerivedProperties in interface PlugInOwnerpublic java.lang.Class<? super P> getTarget()
public P find(PropertyMap template) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException, uk.ac.ed.epcc.webapp.jdbc.exception.DataException
uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionuk.ac.ed.epcc.webapp.jdbc.exception.DataExceptionpublic <R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> getFilter(PropExpression<R> expr, uk.ac.ed.epcc.webapp.jdbc.filter.MatchCondition match, R value) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
ExpressionFilterTargetgetFilter in interface ExpressionFilterTarget<P extends Person>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionR - type of prop-expressionexpr - expression to matchmatch - kind of matchvalue - to math againstpublic <R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> getNullFilter(PropExpression<R> expr, boolean is_null) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
ExpressionFilterTargetgetNullFilter in interface ExpressionFilterTarget<P extends Person>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionR - type of prop-expressionexpr - expression to matchis_null - match if null when truepublic uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> getPeriodFilter(uk.ac.ed.epcc.webapp.time.Period period, PropExpression<java.util.Date> start, PropExpression<java.util.Date> end, OverlapType type, long cutoff) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
ExpressionFilterTargetgetPeriodFilter in interface ExpressionFilterTarget<P extends Person>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionperiod - Period to overlapstart - start propertyend - end propertytype - OverlapTypecutoff - maximum length of records zero if not knownpublic <I> uk.ac.ed.epcc.webapp.jdbc.filter.OrderFilter<P> getOrderFilter(boolean descending, PropExpression<I> expr) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
getOrderFilter in interface ExpressionFilterTarget<P extends Person>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionpublic final <R> uk.ac.ed.epcc.webapp.jdbc.expr.SQLExpression<R> getSQLExpression(PropExpression<R> exp) throws InvalidSQLPropertyException
getSQLExpression in interface ExpressionTargetFactory<P extends Person>InvalidSQLPropertyExceptionpublic uk.ac.ed.epcc.webapp.jdbc.table.TableSpecification getDefaultTableSpecification(uk.ac.ed.epcc.webapp.AppContext c,
java.lang.String table)
public <I> boolean compatible(PropExpression<I> expr)
ExpressionTargetGeneratorcompatible in interface ExpressionTargetGenerator<P extends Person>public <R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> getRelationFilter(PropExpression<R> left, uk.ac.ed.epcc.webapp.jdbc.filter.MatchCondition match, PropExpression<R> right) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
ExpressionFilterTargetgetRelationFilter in interface ExpressionFilterTarget<P extends Person>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionprotected uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<P> getFilter(RecordSelector selector) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
RecordSelectoruk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionselector - public final boolean compatible(RecordSelector sel)
PropertyTargetGeneratorcompatible in interface PropertyTargetGenerator<P extends Person>public final java.util.Iterator<P> getIterator(RecordSelector sel) throws uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFault, uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
PropertyTargetGeneratorgetIterator in interface PropertyTargetGenerator<P extends Person>uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFaultuk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionsel - RecordSelector to select datapublic final java.util.Iterator<P> getIterator(RecordSelector sel, int skip, int count) throws uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFault, uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
PropertyTargetGeneratorgetIterator in interface PropertyTargetGenerator<P extends Person>uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFaultuk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionsel - RecordSelector to select dataskip - Number of initial records in sequence to skipcount - MAximum number of records to returnpublic final long getRecordCount(RecordSelector selector) throws java.lang.Exception
PropertyTargetGeneratorgetRecordCount in interface PropertyTargetGenerator<P extends Person>java.lang.Exceptionpublic final <PT> java.util.Set<PT> getValues(PropertyTag<PT> tag, RecordSelector selector) throws uk.ac.ed.epcc.webapp.jdbc.exception.DataException, InvalidPropertyException, uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
PropertyTargetGeneratorgetValues in interface PropertyTargetGenerator<P extends Person>uk.ac.ed.epcc.webapp.jdbc.exception.DataExceptionInvalidPropertyExceptionuk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptiontag - the data_tagselector - the selectorpublic uk.ac.ed.epcc.webapp.model.data.forms.inputs.DataObjectItemInput<P> getInput(RecordSelector sel) throws java.lang.Exception
getInput in interface FilterSelector<uk.ac.ed.epcc.webapp.model.data.forms.inputs.DataObjectItemInput<P extends Person>>java.lang.Exception