@Override
public String serializeChanges(StockChartGroup chart, Map<DataSet, ChartIncrementalChanges> changedItems) {
JsonObject jsonChangedDataSetElement = new JsonObject();
ChartJsonSerializationContext context = createChartJsonSerializationContext(chart);
for (Map.Entry<DataSet, ChartIncrementalChanges> changesEntry : changedItems.entrySet()) {
JsonObject jsonChangedItemsElement = new JsonObject();
ChartIncrementalChanges changes = changesEntry.getValue();
if (changes.getAddedItems() != null) {
jsonChangedItemsElement.add("add", itemsSerializer.serialize(changes.getAddedItems(), context));
}
if (changes.getRemovedItems() != null) {
jsonChangedItemsElement.add("remove", itemsSerializer.serialize(changes.getRemovedItems(), context));
}
if (changes.getUpdatedItems() != null) {
jsonChangedItemsElement.add("update", itemsSerializer.serialize(changes.getUpdatedItems(), context));
}
String dataSetId = changesEntry.getKey().getId();
if (dataSetId != null) {
jsonChangedDataSetElement.add(dataSetId, jsonChangedItemsElement);
} else {
logger.warn("DataSet of StockChart does not have id. Incremental updated will not be performed.");
}
}
return chartGson.toJson(jsonChangedDataSetElement);
}