use of org.hisp.dhis.calendar.Calendar in project dhis2-core by dhis2.
the class AnalyticsUtils method getDimensionMetadataItemMap.
/**
* Returns a mapping between identifiers and meta data items for the given query.
*
* @param params the data query parameters.
* @return a mapping between identifiers and meta data items.
*/
public static Map<String, MetadataItem> getDimensionMetadataItemMap(DataQueryParams params) {
List<DimensionalObject> dimensions = params.getDimensionsAndFilters();
Map<String, MetadataItem> map = new HashMap<>();
Calendar calendar = PeriodType.getCalendar();
for (DimensionalObject dimension : dimensions) {
for (DimensionalItemObject item : dimension.getItems()) {
if (DimensionType.PERIOD == dimension.getDimensionType() && !calendar.isIso8601()) {
Period period = (Period) item;
DateTimeUnit dateTimeUnit = calendar.fromIso(period.getStartDate());
map.put(period.getPeriodType().getIsoDate(dateTimeUnit), new MetadataItem(period.getDisplayName()));
} else {
String legendSet = item.hasLegendSet() ? item.getLegendSet().getUid() : null;
map.put(item.getDimensionItem(), new MetadataItem(item.getDisplayProperty(params.getDisplayProperty()), legendSet));
}
if (DimensionType.ORGANISATION_UNIT == dimension.getDimensionType() && params.isHierarchyMeta()) {
OrganisationUnit unit = (OrganisationUnit) item;
for (OrganisationUnit ancestor : unit.getAncestors()) {
map.put(ancestor.getUid(), new MetadataItem(ancestor.getDisplayProperty(params.getDisplayProperty())));
}
}
if (DimensionItemType.DATA_ELEMENT == item.getDimensionItemType()) {
DataElement dataElement = (DataElement) item;
for (DataElementCategoryOptionCombo coc : dataElement.getCategoryOptionCombos()) {
map.put(coc.getUid(), new MetadataItem(coc.getDisplayProperty(params.getDisplayProperty())));
}
}
}
map.put(dimension.getDimension(), new MetadataItem(dimension.getDisplayProperty(params.getDisplayProperty())));
}
return map;
}
use of org.hisp.dhis.calendar.Calendar in project dhis2-core by dhis2.
the class MonthlyPeriodType method generateRollingPeriods.
/**
* Generates the last 12 months where the last one is the month which the
* given date is inside.
*/
@Override
public List<Period> generateRollingPeriods(DateTimeUnit dateTimeUnit) {
Calendar cal = getCalendar();
dateTimeUnit.setDay(1);
dateTimeUnit = cal.minusMonths(dateTimeUnit, 11);
List<Period> periods = Lists.newArrayList();
for (int i = 0; i < 12; i++) {
periods.add(createPeriod(dateTimeUnit, cal));
dateTimeUnit = cal.plusMonths(dateTimeUnit, 1);
}
return periods;
}
use of org.hisp.dhis.calendar.Calendar in project dhis2-core by dhis2.
the class MonthlyPeriodType method generatePeriods.
/**
* Generates monthly Periods for the whole year in which the given Period's
* startDate exists.
*/
@Override
public List<Period> generatePeriods(DateTimeUnit dateTimeUnit) {
Calendar cal = getCalendar();
dateTimeUnit.setMonth(1);
dateTimeUnit.setDay(1);
List<Period> periods = Lists.newArrayList();
int year = dateTimeUnit.getYear();
while (dateTimeUnit.getYear() == year) {
periods.add(createPeriod(dateTimeUnit, cal));
dateTimeUnit = cal.plusMonths(dateTimeUnit, 1);
}
return periods;
}
use of org.hisp.dhis.calendar.Calendar in project dhis2-core by dhis2.
the class SixMonthlyAbstractPeriodType method generatePeriods.
/**
* Generates six-monthly Periods for the whole year in which the given
* Period's startDate exists.
*/
@Override
public List<Period> generatePeriods(DateTimeUnit dateTimeUnit) {
Calendar cal = getCalendar();
Period period = createPeriod(dateTimeUnit, cal);
dateTimeUnit = createLocalDateUnitInstance(period.getStartDate(), cal);
List<Period> periods = Lists.newArrayList();
if (dateTimeUnit.getMonth() == getBaseMonth()) {
periods.add(period);
periods.add(getNextPeriod(period));
} else {
periods.add(getPreviousPeriod(period));
periods.add(period);
}
return periods;
}
use of org.hisp.dhis.calendar.Calendar in project dhis2-core by dhis2.
the class SixMonthlyAbstractPeriodType method getRewindedDate.
@Override
public Date getRewindedDate(Date date, Integer rewindedPeriods) {
Calendar cal = getCalendar();
date = date != null ? date : new Date();
rewindedPeriods = rewindedPeriods != null ? rewindedPeriods : 1;
DateTimeUnit dateTimeUnit = createLocalDateUnitInstance(date);
cal.minusMonths(dateTimeUnit, rewindedPeriods * 6);
return cal.toIso(dateTimeUnit).toJdkDate();
}
Aggregations