package com.github.lwhite1.tablesaw.columns; import com.github.lwhite1.tablesaw.api.DateColumn; import com.github.lwhite1.tablesaw.columns.packeddata.DateInterval; import com.github.lwhite1.tablesaw.columns.packeddata.PackedLocalDate; import com.github.lwhite1.tablesaw.util.Selection; import com.google.common.annotations.Beta; import java.util.List; /** * EXPERIMENTAL */ @Beta public abstract class DateIntervalColumn { /*-------------------------------------------------------*/ // Column-wise boolean operations against individual values /*-------------------------------------------------------*/ // boolean comparisons to other intervals abstract Selection equals(DateInterval interval); abstract Selection before(DateInterval interval); abstract Selection after(DateInterval interval); abstract Selection overlaps(DateInterval interval); /** * Returns a selection containing all cells whose interval is during (containedBy) the given interval */ abstract Selection containedIn(DateInterval interval); abstract Selection contains(DateInterval interval); /** * Returns true if interval a end + 1 = interval b start; or vice versa */ abstract Selection meets(DateInterval interval); // boolean comparisons to individual dates abstract Selection before(PackedLocalDate date); abstract Selection after(PackedLocalDate date); abstract Selection contains(PackedLocalDate date); abstract Selection meets(PackedLocalDate date); /*-------------------------------------------------------*/ // Column-wise boolean operations against other columns /*-------------------------------------------------------*/ abstract Selection equals(DateIntervalColumn interval); abstract Selection before(DateIntervalColumn interval); abstract Selection after(DateIntervalColumn interval); abstract Selection overlaps(DateIntervalColumn interval); /** * Returns a selection containing all cells whose interval is during (containedBy) the given interval */ abstract Selection containedIn(DateIntervalColumn interval); abstract Selection contains(DateIntervalColumn interval); /** * Returns true if interval a end + 1 = interval b start; or vice versa */ abstract Selection meets(DateIntervalColumn interval); // boolean comparisons to individual dates abstract Selection before(DateColumn column); abstract Selection after(DateColumn column); abstract Selection contains(DateColumn column); abstract Selection meets(DateColumn column); /** * /*------------------------------------------------------- */ // reduction methods /*-------------------------------------------------------*/ abstract int sumDuration(); abstract int maxDuration(); abstract int minDuration(); abstract float meanDuration(); abstract float medianDuration(); abstract float durationVariance(); abstract float durationStdDev(); abstract PackedLocalDate earliestStart(); abstract PackedLocalDate lastestEnd(); abstract DateInterval span(); /*-------------------------------------------------------*/ // misc methods /*-------------------------------------------------------*/ abstract List<PackedLocalDate> toDays(); }