/** * @param id id of data item * @return data item by id */ default DataItem getItem(Object id) { return getItems().stream() .filter(dataItem -> (dataItem instanceof DataItem.HasId) && Objects.equals(id, ((DataItem.HasId) dataItem).getId())) .findFirst().orElse(null); }
@Override public String serialize(AbstractChart chart) { JsonElement jsonTree = chartGson.toJsonTree(chart); DataProvider dataProvider = chart.getDataProvider(); if (dataProvider != null) { ChartJsonSerializationContext context = createChartJsonSerializationContext(chart); JsonArray dataProviderElement = itemsSerializer.serialize(dataProvider.getItems(), context); // Prevent errors on client for empty data provider if (dataProviderElement.size() == 0) { dataProviderElement.add(new JsonObject()); } jsonTree.getAsJsonObject().add("dataProvider", dataProviderElement); } return chartGson.toJson(jsonTree); }
@Override @Nullable public String serializeData(PivotTableModel pivotTable) { DataProvider dataProvider = pivotTable.getDataProvider(); if (dataProvider != null) { PivotJsonSerializationContext context = createPivotJsonSerializationContext(pivotTable); JsonElement dataProviderElement = itemsSerializer.serialize(dataProvider.getItems(), context); return gson.toJson(dataProviderElement); } return null; }
@Override public String serialize(StockChartGroup chart) { JsonElement jsonTree = chartGson.toJsonTree(chart); if (CollectionUtils.isNotEmpty(chart.getDataSets())) { ChartJsonSerializationContext context = createChartJsonSerializationContext(chart); JsonArray jsonDataSets = (JsonArray) jsonTree.getAsJsonObject().get("dataSets"); for (JsonElement dataSetElement : jsonDataSets) { JsonObject dataSetObject = (JsonObject) dataSetElement; String dataSetId = dataSetObject.get("id").getAsString(); DataSet dataSet = chart.getDataSet(dataSetId); if (dataSet != null && dataSet.getDataProvider() != null) { JsonArray dataProviderElement = itemsSerializer.serialize(dataSet.getDataProvider().getItems(), context); // Prevent errors on client for empty data provider if (dataProviderElement.size() == 0) { dataProviderElement.add(new JsonObject()); } dataSetObject.add("dataProvider", dataProviderElement); } } } return chartGson.toJson(jsonTree); }