T - public class OverlapHandler<T extends UsageRecord>
extends java.lang.Object
This is needed whenever positive definite properties from a UsageRecord with known start and end dates is mapped
onto a TimePeriod for example a table column or a chart data point.
These routines only make sense when the record period is significant compared to the
target period.
| Modifier and Type | Field and Description |
|---|---|
static uk.ac.ed.epcc.webapp.Feature |
USE_CASE_OVERLAP |
static uk.ac.ed.epcc.webapp.Feature |
USE_QUERY_MAPPER_FEATURE |
| Constructor and Description |
|---|
OverlapHandler(uk.ac.ed.epcc.webapp.AppContext conn,
UsageProducer<T> prod) |
| Modifier and Type | Method and Description |
|---|---|
static java.lang.Number |
getOverlap(ExpressionTarget rec,
NumberReductionTarget target,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
java.util.Date p_start,
java.util.Date p_end)
property proportional to fraction of record that overlaps period
|
java.util.Map<ExpressionTuple,ReductionMapResult> |
getOverlapIndexedReductionMap(java.util.Set<ReductionTarget> property,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
java.util.Date start,
java.util.Date end,
RecordSelector input_selector) |
static double |
getOverlappWeight(ExpressionTarget rec,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
java.util.Date p_start,
java.util.Date p_end,
Reduction op)
Get the fraction of this record that overlaps with the specified period.
|
<R> java.util.Map<R,java.lang.Number> |
getOverlapReductionMap(NumberReductionTarget main_target,
PropExpression<R> tag,
PropertyTag<java.util.Date> start_prop,
PropertyTag<java.util.Date> end_prop,
java.util.Date start,
java.util.Date end,
RecordSelector sel)
sum the specified quantity matching date range and selector
grouped by the other specified property.
|
java.lang.Number |
getOverlapSum(NumberReductionTarget target,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
RecordSelector o_sel,
java.util.Date start,
java.util.Date end) |
double |
getOverlapSum(Reduction op,
PropExpression<? extends java.lang.Number> type,
PropExpression<java.util.Date> start_prop,
PropertyTag<java.util.Date> end_prop,
RecordSelector sel,
java.util.Date start,
java.util.Date end)
Combine the specified quantity matching the date range and selector.
|
NumberReductionTarget |
makeCaseOverlapReductionTarget(Reduction red,
PropExpression<? extends java.lang.Number> type,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
java.util.Date start,
java.util.Date end) |
static NumberReductionTarget |
makeInnerAverageReductionTarget(PropExpression<? extends java.lang.Number> type,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
java.util.Date start,
java.util.Date end)
Convert a numerical property into the ReductionTarget needed to calculate
the overlap contribution to the time-average of records totally within the overlap period.
|
static DurationPropExpression |
makeOverlapExpression(OverlapType overlap_type,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
java.util.Date start,
java.util.Date end)
Calculate expression for the overlap of a record and a period.
|
static NumberReductionTarget |
makeOverlapReductionTarget(OverlapType overlap_type,
Reduction red,
PropExpression<? extends java.lang.Number> type,
PropertyTag<java.util.Date> start_prop,
PropertyTag<java.util.Date> end_prop,
java.util.Date start,
java.util.Date end) |
static boolean |
overlaps(ExpressionTarget rec,
PropExpression<java.util.Date> start_prop,
PropExpression<java.util.Date> end_prop,
java.util.Date start,
java.util.Date end) |
public static final uk.ac.ed.epcc.webapp.Feature USE_QUERY_MAPPER_FEATURE
public static final uk.ac.ed.epcc.webapp.Feature USE_CASE_OVERLAP
public OverlapHandler(uk.ac.ed.epcc.webapp.AppContext conn,
UsageProducer<T> prod)
public double getOverlapSum(Reduction op, PropExpression<? extends java.lang.Number> type, PropExpression<java.util.Date> start_prop, PropertyTag<java.util.Date> end_prop, RecordSelector sel, java.util.Date start, java.util.Date end) throws java.lang.Exception
java.lang.Exceptionop - Reductiontype - PropertyTag of property to Sumstart_prop - PropertyTag defining the start of the recordend_prop - ProeprtyTag defining the end of the recordstart - Start Dateend - End Datesel - RecordSelector to select target recordspublic java.lang.Number getOverlapSum(NumberReductionTarget target, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, RecordSelector o_sel, java.util.Date start, java.util.Date end) throws java.lang.Exception
java.lang.Exceptionpublic static NumberReductionTarget makeInnerAverageReductionTarget(PropExpression<? extends java.lang.Number> type, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, java.util.Date start, java.util.Date end) throws IllegalReductionException, PropertyCastException
IllegalReductionExceptionPropertyCastExceptiontype - start_prop - end_prop - start - end - public static DurationPropExpression makeOverlapExpression(OverlapType overlap_type, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, java.util.Date start, java.util.Date end) throws IllegalReductionException, PropertyCastException
IllegalReductionExceptionPropertyCastExceptionoverlap_type - start_prop - end_prop - start - end - public static NumberReductionTarget makeOverlapReductionTarget(OverlapType overlap_type, Reduction red, PropExpression<? extends java.lang.Number> type, PropertyTag<java.util.Date> start_prop, PropertyTag<java.util.Date> end_prop, java.util.Date start, java.util.Date end) throws IllegalReductionException, PropertyCastException
public NumberReductionTarget makeCaseOverlapReductionTarget(Reduction red, PropExpression<? extends java.lang.Number> type, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, java.util.Date start, java.util.Date end) throws IllegalReductionException, PropertyCastException
public <R> java.util.Map<R,java.lang.Number> getOverlapReductionMap(NumberReductionTarget main_target, PropExpression<R> tag, PropertyTag<java.util.Date> start_prop, PropertyTag<java.util.Date> end_prop, java.util.Date start, java.util.Date end, RecordSelector sel) throws java.lang.Exception
java.lang.Exceptionuk.ac.ed.epcc.webapp.jdbc.exception.DataExceptionR - main_target - tag - start_prop - end_prop - start - end - sel - public java.util.Map<ExpressionTuple,ReductionMapResult> getOverlapIndexedReductionMap(java.util.Set<ReductionTarget> property, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, java.util.Date start, java.util.Date end, RecordSelector input_selector) throws java.lang.Exception
java.lang.Exceptionpublic static java.lang.Number getOverlap(ExpressionTarget rec, NumberReductionTarget target, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, java.util.Date p_start, java.util.Date p_end) throws InvalidPropertyException
InvalidPropertyExceptionrec - target - start_prop - end_prop - p_start - period start ip_end - period endpublic static boolean overlaps(ExpressionTarget rec, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, java.util.Date start, java.util.Date end)
public static double getOverlappWeight(ExpressionTarget rec, PropExpression<java.util.Date> start_prop, PropExpression<java.util.Date> end_prop, java.util.Date p_start, java.util.Date p_end, Reduction op)
rec - start_prop - PropertyTag for record startend_prop - PropertyTag for record endp_start - Period startp_end - Period endop - Reduction operation