@Override @Transactional public Map<String, List<GanttChartItem>> resolve( final GanttChartScale scale, final JSONObject context, final Locale locale) { List<Entity> orders = dataDefinitionService .get("orders", "order") .find() .add(SearchRestrictions.ne("state", "04completed")) .add(SearchRestrictions.lt("dateFrom", scale.getDateTo())) .add(SearchRestrictions.gt("dateTo", scale.getDateFrom())) .list() .getEntities(); List<GanttChartItem> items = new ArrayList<GanttChartItem>(); for (Entity order : orders) { items.add(getItemForOrder(order, scale, locale)); } return Collections.singletonMap("", items); }
private GanttChartItem getItemForOrder( final Entity order, final GanttChartScale scale, final Locale locale) { Date from = (Date) order.getField("dateFrom"); Date to = (Date) order.getField("dateTo"); if (order.getField("effectiveDateFrom") != null) { long diff = to.getTime() - from.getTime(); from = (Date) order.getField("effectiveDateFrom"); to = new Date(from.getTime() + diff); } return scale.createGanttChartItem( "", getOrderDescription(order, locale), order.getId(), from, to); }