/** * Returns the latest period based on the period end date. */ public Period getLatestPeriod() { return getAllPeriods().stream() .map( obj -> (Period) obj ) .min( DescendingPeriodComparator.INSTANCE ) .orElse( null ); }
/** * Finds the earliest startDate associated with this DataQueryParams. Checks startDate, period dimensions and * period filters. */ public Date getEarliestStartDate() { Date earliestStartDate = new Date( Long.MAX_VALUE ); if ( startDate != null && startDate.before( earliestStartDate ) ) { earliestStartDate = startDate; } for ( DimensionalItemObject object : getAllPeriods() ) { Period period = (Period) object; earliestStartDate = period.getStartDate().before( earliestStartDate ) ? period.getStartDate() : earliestStartDate; } return earliestStartDate; }
/** * Finds the latest endDate associated with this DataQueryParams. Checks endDate, period dimensions and * period filters. */ public Date getLatestEndDate() { Date latestEndDate = new Date( Long.MIN_VALUE ); if ( endDate != null && endDate.after( latestEndDate ) ) { latestEndDate = endDate; } for ( DimensionalItemObject object : getAllPeriods() ) { Period period = (Period) object; latestEndDate = period.getEndDate().after( latestEndDate ) ? period.getEndDate() : latestEndDate; } return latestEndDate; }
@Override public DataQueryParams withTableNameAndPartitions( DataQueryParams params, QueryPlannerParams plannerParams ) { Partitions partitions = params.hasStartEndDate() ? PartitionUtils.getPartitions( params.getStartDate(), params.getEndDate() ) : PartitionUtils.getPartitions( params.getAllPeriods() ); return DataQueryParams.newBuilder( params ) .withTableName( plannerParams.getTableName() ) .withPartitions( partitions ) .build(); }