package org.activityinfo.legacy.shared.impl.pivot.calc;
import com.bedatadriven.rebar.time.calendar.LocalDate;
import org.activityinfo.legacy.shared.model.SiteDTO;
import org.activityinfo.legacy.shared.reports.content.*;
import org.activityinfo.legacy.shared.reports.model.DateDimension;
import org.activityinfo.legacy.shared.reports.model.DateUnit;
import org.activityinfo.legacy.shared.reports.model.Dimension;
public class DateAccessor implements DimAccessor {
private DateUnit dateUnit;
private DateDimension dateDim;
public DateAccessor(DateDimension dateDim) {
this.dateDim = dateDim;
this.dateUnit = dateDim.getUnit();
}
@Override
public Dimension getDimension() {
return dateDim;
}
@Override
public DimensionCategory getCategory(SiteDTO siteDTO) {
LocalDate date = siteDTO.getDate2();
if(date == null) {
return null;
}
switch(dateUnit) {
case YEAR:
return new YearCategory(date.getYear());
case QUARTER:
return new QuarterCategory(date.getYear(), quarterFromMonth(date.getMonthOfYear()));
case MONTH:
return new MonthCategory(date.getYear(), date.getMonthOfYear());
case WEEK_MON:
// TODO(Alex)
return null;
case DAY:
return new DayCategory(date.atMidnightInMyTimezone());
}
return new MonthCategory(date.getYear(), date.getMonthOfYear());
}
private int quarterFromMonth(int monthOfYear) {
if(monthOfYear <= 3) {
return 1;
} else if(monthOfYear <= 6) {
return 2;
} else if(monthOfYear <= 9) {
return 3;
} else {
return 4;
}
}
}