UR - public abstract class UsageManager<UR extends UsageRecord> extends java.lang.Object implements UsageProducer<UR>, uk.ac.ed.epcc.webapp.model.data.forms.Selector<uk.ac.ed.epcc.webapp.forms.inputs.ListInput<java.lang.String,UsageProducer>>, DerivedPropertyFactory, uk.ac.ed.epcc.webapp.forms.factory.FormUpdateProducer<UR>
UsageProducer that combines results from several
underlying UsageProducers.| Modifier and Type | Class and Description |
|---|---|
class |
UsageManager.MultiIterator |
class |
UsageManager.ProducerInput
FormInput for selecting UsageProducers.
|
| Constructor and Description |
|---|
UsageManager(uk.ac.ed.epcc.webapp.AppContext c,
java.lang.String tag)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
addProducer(java.lang.String description,
UsageProducer<UR> producer)
method to be called by the populate method to register an additional Producer
|
<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.
|
uk.ac.ed.epcc.webapp.AppContext |
getContext()
get the AppContext
|
PropExpressionMap |
getDerivedProperties() |
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> targets,
RecordSelector selector)
General reduction operation.
|
uk.ac.ed.epcc.webapp.forms.inputs.ListInput<java.lang.String,UsageProducer> |
getInput() |
java.util.Iterator<UR> |
getIterator(RecordSelector sel)
Get an Iterator over selected records.
|
java.util.Iterator<UR> |
getIterator(RecordSelector sel,
int skip,
int count)
Get an Iterator over selected records.
|
uk.ac.ed.epcc.webapp.forms.inputs.ListInput<java.lang.String,UsageProducer> |
getProducerInput(boolean allow_all) |
<C extends UsageProducer> |
getProducers(java.lang.Class<C> target) |
java.lang.String |
getProducerSelector(java.lang.String name,
java.lang.String key) |
java.lang.String |
getProducerSelector(java.lang.String name,
java.lang.String key,
boolean allow_all) |
java.lang.String |
getProducerTag(java.lang.String key) |
long |
getRecordCount(RecordSelector sel)
get the number of records matching the selector
|
<R> R |
getReduction(ReductionTarget<R> type,
RecordSelector selector)
Perform a reduction over a set of records
|
<R> java.util.Map<R,java.lang.Number> |
getReductionMap(PropExpression<R> tag,
ReductionTarget<java.lang.Number> res,
RecordSelector selector)
sum the specified numerical quantity over all records that match the selector
grouped by the other specified property
|
java.lang.String |
getTag() |
<PT> java.util.Set<PT> |
getValues(PropertyTag<PT> propertyTag,
RecordSelector selector)
Gets the distinct property values for the set of records identified by the RecordSelector
|
boolean |
hasProducers() |
<X> boolean |
hasProperty(PropertyTag<X> p)
Does this class support the specified property.
|
UsageProducer |
parseProducer(java.lang.String key) |
protected abstract void |
populate(java.lang.String tag)
populate the factories and description table
|
java.lang.String |
toString() |
public UsageManager(uk.ac.ed.epcc.webapp.AppContext c,
java.lang.String tag)
c - tag - public java.lang.String getTag()
getTag in interface uk.ac.ed.epcc.webapp.Taggedpublic uk.ac.ed.epcc.webapp.AppContext getContext()
getContext in interface uk.ac.ed.epcc.webapp.Contexedpublic <PT> java.util.Set<PT> getValues(PropertyTag<PT> propertyTag, RecordSelector selector) throws java.lang.Exception
PropertyTargetGeneratorgetValues in interface PropertyTargetGenerator<UR extends UsageRecord>java.lang.ExceptionpropertyTag - the data_tagselector - the selectorpublic long getRecordCount(RecordSelector sel) throws uk.ac.ed.epcc.webapp.jdbc.exception.DataException
PropertyTargetGeneratorgetRecordCount in interface PropertyTargetGenerator<UR extends UsageRecord>uk.ac.ed.epcc.webapp.jdbc.exception.DataExceptionpublic java.util.Iterator<UR> getIterator(RecordSelector sel) throws java.lang.Exception
PropertyTargetGeneratorgetIterator in interface PropertyTargetGenerator<UR extends UsageRecord>java.lang.Exceptionsel - RecordSelector to select datapublic java.util.Iterator<UR> getIterator(RecordSelector sel, int skip, int count) throws uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFault
PropertyTargetGeneratorgetIterator in interface PropertyTargetGenerator<UR extends UsageRecord>uk.ac.ed.epcc.webapp.model.data.Exceptions.DataFaultsel - RecordSelector to select dataskip - Number of initial records in sequence to skipcount - MAximum number of records to returnpublic <R> java.util.Map<R,java.lang.Number> getReductionMap(PropExpression<R> tag, ReductionTarget<java.lang.Number> res, RecordSelector selector) throws java.lang.Exception
ReductionProducergetReductionMap in interface ReductionProducer<UR extends UsageRecord>java.lang.Exceptionpublic java.util.Map<ExpressionTuple,ReductionMapResult> getIndexedReductionMap(java.util.Set<ReductionTarget> targets, 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<UR extends UsageRecord>java.lang.Exceptionpublic java.lang.String getProducerSelector(java.lang.String name,
java.lang.String key)
public java.lang.String getProducerSelector(java.lang.String name,
java.lang.String key,
boolean allow_all)
public uk.ac.ed.epcc.webapp.forms.inputs.ListInput<java.lang.String,UsageProducer> getProducerInput(boolean allow_all)
public <C extends UsageProducer> java.util.Vector<C> getProducers(java.lang.Class<C> target)
public java.lang.String getProducerTag(java.lang.String key)
public <R> R getReduction(ReductionTarget<R> type, RecordSelector selector) throws java.lang.Exception
ReductionProducergetReduction in interface ReductionProducer<UR extends UsageRecord>java.lang.Exceptiontype - ReductionTarget specifying reduction to performselector - RecordSelector to select target recordspublic <X> boolean hasProperty(PropertyTag<X> p)
UsageProducerhasProperty in interface PropertyTargetFactoryhasProperty in interface UsageProducer<UR extends UsageRecord>public boolean hasProducers()
public UsageProducer parseProducer(java.lang.String key)
protected abstract void populate(java.lang.String tag)
protected void addProducer(java.lang.String description,
UsageProducer<UR> producer)
description - producer - public PropertyFinder getFinder()
PropertyTargetFactorygetFinder in interface PropertyTargetFactorypublic java.lang.String getImplemenationInfo(PropertyTag<?> tag)
UsageProducergetImplemenationInfo in interface UsageProducer<UR extends UsageRecord>tag - PropertyTagpublic uk.ac.ed.epcc.webapp.forms.inputs.ListInput<java.lang.String,UsageProducer> getInput()
getInput in interface uk.ac.ed.epcc.webapp.model.data.forms.Selector<uk.ac.ed.epcc.webapp.forms.inputs.ListInput<java.lang.String,UsageProducer>>public java.lang.String toString()
toString in class java.lang.Objectpublic final PropExpressionMap getDerivedProperties()
getDerivedProperties in interface DerivedPropertyFactorypublic final boolean compatible(RecordSelector sel)
PropertyTargetGeneratorcompatible in interface PropertyTargetGenerator<UR extends UsageRecord>public final <I> boolean compatible(PropExpression<I> expr)
ExpressionTargetGeneratorcompatible in interface ExpressionTargetGenerator<UR extends UsageRecord>