T - F - H - public class PropertyTargetHistoryFactory<T extends uk.ac.ed.epcc.webapp.model.data.DataObject,F extends uk.ac.ed.epcc.webapp.model.data.DataObjectFactory<T>,H extends PropertyTargetHistoryFactory.HistoryUse<T>> extends uk.ac.ed.epcc.webapp.model.history.HistoryFactory<T,H> implements ExpressionTargetFactory<H>, UsageProducer<H>, ExpressionFilterTarget<H>
HistoryFactory for peer classes that are ExpressionTargets.
This class also acts as a UsageProducer allowing the history data to be used in reports.| Modifier and Type | Class and Description |
|---|---|
static class |
PropertyTargetHistoryFactory.HistoryUse<T extends uk.ac.ed.epcc.webapp.model.data.DataObject>
HistoryRecord extended to be an ExpressionTarget
|
uk.ac.ed.epcc.webapp.model.history.HistoryFactory.HistoryFilter, uk.ac.ed.epcc.webapp.model.history.HistoryFactory.HistoryRecord<P extends uk.ac.ed.epcc.webapp.model.data.DataObject>, uk.ac.ed.epcc.webapp.model.history.HistoryFactory.Mapper, uk.ac.ed.epcc.webapp.model.history.HistoryFactory.PeerIteratoruk.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 PropertyRegistry |
history |
static PropertyTag<java.util.Date> |
HISTORY_END |
static PropertyTag<java.util.Date> |
HISTORY_START |
| Constructor and Description |
|---|
PropertyTargetHistoryFactory(F fac,
java.lang.String table) |
| Modifier and Type | Method and Description |
|---|---|
<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.
|
protected AccessorMap<H> |
getAccessorMap() |
<R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> |
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<H> |
getFilter(RecordSelector selector)
Get a filter from a PropertyMap selector
|
PropertyFinder |
getFinder()
Produce a PropertyFinder that can find any of the PropertyTags
that can be specified for the objects generated by this type.
|
java.lang.String |
getImplemenationInfo(PropertyTag<?> tag)
Return a text description of how the property is implemented.
|
java.util.Map<ExpressionTuple,ReductionMapResult> |
getIndexedReductionMap(java.util.Set<ReductionTarget> sum,
RecordSelector selector)
General reduction operation.
|
java.util.Iterator<H> |
getIterator(RecordSelector sel)
Get an Iterator over selected records.
|
java.util.Iterator<H> |
getIterator(RecordSelector sel,
int skip,
int count)
Get an Iterator over selected records.
|
<R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> |
getNullFilter(PropExpression<R> expr,
boolean is_null)
get a filter that checks null status of an expression.
|
<I> uk.ac.ed.epcc.webapp.jdbc.filter.OrderFilter<H> |
getOrderFilter(boolean descending,
PropExpression<I> expr) |
uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> |
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<PropertyTag> |
getProperties()
Get the set of Defined properties.
|
<I,P> java.util.Map<I,P> |
getPropMap(PropertyTag<I> index,
PropertyTag<P> property,
RecordSelector selector) |
long |
getRecordCount(RecordSelector selector)
get the number of records matching the selector
|
<R> R |
getReduction(ReductionTarget<R> type,
RecordSelector selector)
Perform a reduction over a set of records
|
<I> java.util.Map<I,java.lang.Number> |
getReductionMap(PropExpression<I> index,
ReductionTarget<java.lang.Number> property,
RecordSelector selector)
sum the specified numerical quantity over all records that match the selector
grouped by the other specified property
|
<R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> |
getRelationFilter(PropExpression<R> left,
uk.ac.ed.epcc.webapp.jdbc.filter.MatchCondition match,
PropExpression<R> right)
get a filter that compares two expressions.
|
protected java.util.Map<java.lang.String,java.lang.Object> |
getSelectors() |
<R> uk.ac.ed.epcc.webapp.jdbc.expr.SQLExpression<R> |
getSQLExpression(PropExpression<R> exp) |
java.lang.Class<? super H> |
getTarget() |
java.lang.String |
getUniqueID(H r) |
<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> p)
Is this a defined property
|
boolean |
isMyRecord(UsageRecord record) |
protected uk.ac.ed.epcc.webapp.model.data.DataObject |
makeBDO(uk.ac.ed.epcc.webapp.model.data.Repository.Record res) |
protected TableRegistry |
makeTableRegistry() |
void |
release() |
void |
resetStructure() |
addChart, addChart, expireTime, find, fixSeries, getDefaultTableSpecification, getIterator, getIterator, getIterator, getOrder, getPeerFactory, getPeerName, getPeerProducer, getPeerReference, isPeerType, makeHistory, postCreateTableSetup, purge, setPeerFactory, terminate, updategetTableTransitionID, getTableTransitionRegistryall, allowPreSelect, canCreate, canUpdate, customiseForm, equals, exists, find, find, find, find, find, getAllIterator, getComposite, getComposites, getConfigTag, getContext, getCount, getDefaults, getFormCreator, getFormUpdate, getIndex, getInput, getInput, getIterator, getLogger, getMaxIdentifierLength, getNullable, getOptional, getProperty, getReferenced, getReferenceFieldType, getResult, getSelectFilter, getSupress, getTag, getTranslations, getUniqueIdName, hashCode, isMine, isMine, isMyReference, isValid, makeBDO, makeObject, makeRecord, makeReference, makeReference, makeSet, OrderBy, restrictDefaultInput, setContext, setContext, setContextWithMake, setProperty, toStringpublic static final PropertyRegistry history
public static final PropertyTag<java.util.Date> HISTORY_START
public static final PropertyTag<java.util.Date> HISTORY_END
public PropertyTargetHistoryFactory(F fac, java.lang.String table)
public final PropertyFinder getFinder()
PropertyTargetFactorygetFinder in interface PropertyTargetFactoryprotected TableRegistry makeTableRegistry()
makeTableRegistry in class uk.ac.ed.epcc.webapp.model.data.table.TableStructureDataObjectFactory<H extends PropertyTargetHistoryFactory.HistoryUse<T>>protected final AccessorMap<H> getAccessorMap()
protected java.util.Map<java.lang.String,java.lang.Object> getSelectors()
getSelectors in class uk.ac.ed.epcc.webapp.model.data.DataObjectFactory<H extends PropertyTargetHistoryFactory.HistoryUse<T>>public final java.util.Set<PropertyTag> getProperties()
public final <X> boolean hasProperty(PropertyTag<X> p)
hasProperty in interface PropertyTargetFactoryhasProperty in interface UsageProducer<H extends PropertyTargetHistoryFactory.HistoryUse<T>>p - public final <R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> 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<H extends PropertyTargetHistoryFactory.HistoryUse<T>>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<H> 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<H extends PropertyTargetHistoryFactory.HistoryUse<T>>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionpublic <R> uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> getNullFilter(PropExpression<R> expr, boolean is_null) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
ExpressionFilterTargetgetNullFilter in interface ExpressionFilterTarget<H extends PropertyTargetHistoryFactory.HistoryUse<T>>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionR - type of prop-expressionexpr - expression to matchis_null - match if null when truepublic <I> uk.ac.ed.epcc.webapp.jdbc.filter.OrderFilter<H> getOrderFilter(boolean descending, PropExpression<I> expr) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
getOrderFilter in interface ExpressionFilterTarget<H extends PropertyTargetHistoryFactory.HistoryUse<T>>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<H extends PropertyTargetHistoryFactory.HistoryUse<T>>InvalidSQLPropertyExceptionprotected uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> getFilter(RecordSelector selector) throws uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException
uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionselector - public java.util.Iterator<H> getIterator(RecordSelector sel, int skip, int count) throws java.lang.Exception
PropertyTargetGeneratorgetIterator in interface PropertyTargetGenerator<H extends PropertyTargetHistoryFactory.HistoryUse<T>>java.lang.Exceptionsel - RecordSelector to select dataskip - Number of initial records in sequence to skipcount - MAximum number of records to returnpublic java.util.Iterator<H> getIterator(RecordSelector sel) throws java.lang.Exception
PropertyTargetGeneratorgetIterator in interface PropertyTargetGenerator<H extends PropertyTargetHistoryFactory.HistoryUse<T>>java.lang.Exceptionsel - RecordSelector to select datapublic java.lang.String getImplemenationInfo(PropertyTag<?> tag)
UsageProducergetImplemenationInfo in interface UsageProducer<H extends PropertyTargetHistoryFactory.HistoryUse<T>>tag - PropertyTagpublic long getRecordCount(RecordSelector selector) throws java.lang.Exception
PropertyTargetGeneratorgetRecordCount in interface PropertyTargetGenerator<H extends PropertyTargetHistoryFactory.HistoryUse<T>>java.lang.Exceptionpublic <I> java.util.Map<I,java.lang.Number> getReductionMap(PropExpression<I> index, ReductionTarget<java.lang.Number> property, RecordSelector selector) throws java.lang.Exception
ReductionProducergetReductionMap in interface ReductionProducer<H extends PropertyTargetHistoryFactory.HistoryUse<T>>java.lang.Exceptionpublic java.util.Map<ExpressionTuple,ReductionMapResult> getIndexedReductionMap(java.util.Set<ReductionTarget> sum, RecordSelector selector) throws java.lang.Exception
ReductionProducerReductionTarget objects. This method generates
Maps from the requested ReductionTarget to the result of the corresponding reduction.
If the list of ReductionTargets contains any IndexReduction objects then multiple results will
be returned so these results are themselves returned as a Map indexed by PropertyTuple objects
representing the Index values. If there are no IndexValues an empty PropertyTuple will be used.
A non-index target that does not resolve may be ignored or return the default value for
the ReductionTarget. This is so target set compatible with composite UsageProducers
can contain targets only relevant to some of its parts without suppressing all output from the
tables that don't support the property. This does run the risk that spurious index-tuples
might be generated from tables that support none of the non-index targets.
In that case the producer has to be tuned.getIndexedReductionMap in interface ReductionProducer<H extends PropertyTargetHistoryFactory.HistoryUse<T>>java.lang.Exceptionpublic <R> R getReduction(ReductionTarget<R> type, RecordSelector selector) throws java.lang.Exception
ReductionProducergetReduction in interface ReductionProducer<H extends PropertyTargetHistoryFactory.HistoryUse<T>>java.lang.Exceptiontype - ReductionTarget specifying reduction to performselector - RecordSelector to select target recordspublic <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<H extends PropertyTargetHistoryFactory.HistoryUse<T>>uk.ac.ed.epcc.webapp.jdbc.exception.DataExceptionInvalidPropertyExceptionuk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptiontag - the data_tagselector - the selectorpublic <I,P> java.util.Map<I,P> getPropMap(PropertyTag<I> index, PropertyTag<P> property, RecordSelector selector) throws uk.ac.ed.epcc.webapp.jdbc.exception.DataException, uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterException, InvalidPropertyException
uk.ac.ed.epcc.webapp.jdbc.exception.DataExceptionuk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionInvalidPropertyExceptionpublic boolean compatible(RecordSelector sel)
PropertyTargetGeneratorcompatible in interface PropertyTargetGenerator<H extends PropertyTargetHistoryFactory.HistoryUse<T>>public java.lang.Class<? super H> getTarget()
getTarget in interface uk.ac.ed.epcc.webapp.model.data.reference.IndexedProducer<H extends PropertyTargetHistoryFactory.HistoryUse<T>>getTarget in interface uk.ac.ed.epcc.webapp.Targetted<H extends PropertyTargetHistoryFactory.HistoryUse<T>>getTarget in class uk.ac.ed.epcc.webapp.model.history.HistoryFactory<T extends uk.ac.ed.epcc.webapp.model.data.DataObject,H extends PropertyTargetHistoryFactory.HistoryUse<T>>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
makeBDO in class uk.ac.ed.epcc.webapp.model.history.HistoryFactory<T extends uk.ac.ed.epcc.webapp.model.data.DataObject,H extends PropertyTargetHistoryFactory.HistoryUse<T>>uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFaultpublic void resetStructure()
resetStructure in interface uk.ac.ed.epcc.webapp.jdbc.table.TableStructureTransitionTargetresetStructure in class uk.ac.ed.epcc.webapp.model.data.table.TableStructureDataObjectFactory<H extends PropertyTargetHistoryFactory.HistoryUse<T>>public <I> boolean compatible(PropExpression<I> expr)
ExpressionTargetGeneratorcompatible in interface ExpressionTargetGenerator<H extends PropertyTargetHistoryFactory.HistoryUse<T>>public uk.ac.ed.epcc.webapp.jdbc.filter.BaseFilter<H> 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<H extends PropertyTargetHistoryFactory.HistoryUse<T>>uk.ac.ed.epcc.webapp.jdbc.expr.CannotFilterExceptionperiod - Period to overlapstart - start propertyend - end propertytype - OverlapTypecutoff - maximum length of records zero if not knownpublic java.lang.String getUniqueID(H r) throws java.lang.Exception
java.lang.Exceptionpublic boolean isMyRecord(UsageRecord record)
public void release()
release in class uk.ac.ed.epcc.webapp.model.data.DataObjectFactory<H extends PropertyTargetHistoryFactory.HistoryUse<T>>