public JsonArray serialize(List<DataItem> items, JsonSerializationContext context) { JsonArray serialized = new JsonArray(); if (context instanceof PivotJsonSerializationContext) { PivotJsonSerializationContext pivotContext = (PivotJsonSerializationContext) context; for (DataItem item : items) { JsonObject itemElement = new JsonObject(); for (String property : pivotContext.getProperties()) { Object value = item.getValue(property); addProperty(itemElement, property, value, pivotContext, item); } serialized.add(itemElement); } } return serialized; }
protected DataItem getDataItemByKey(@Nullable String dataItemKey) { DataItem dataItem = null; if (dataItemKey != null) { DataProvider dataProvider = chart.getDataProvider(); if (chart.getType() == ChartType.GANTT && dataItemKey.contains(":")) { String graphItemKey = dataItemKey.substring(0, dataItemKey.indexOf(":")); String segmentItemKey = dataItemKey.substring(dataItemKey.indexOf(":") + 1, dataItemKey.length()); Object dataItemId = dataItemKeys.get(graphItemKey); if (dataProvider != null) { DataItem graphDataItem = dataProvider.getItem(dataItemId); if (graphDataItem != null) { int segmentIndex = Integer.parseInt(segmentItemKey); String segmentsField = ((GanttChart) chart).getSegmentsField(); @SuppressWarnings("unchecked") List<DataItem> segmentItems = (List<DataItem>) graphDataItem.getValue(segmentsField); dataItem = segmentItems.get(segmentIndex); } } } else { Object dataItemId = dataItemKeys.get(dataItemKey); if (dataProvider != null) { dataItem = dataProvider.getItem(dataItemId); } } } return dataItem; }