+
+ if (isSubscriptionRegistryEmptyOrNonExist(dataNodes, clientId, subscriptionName)) {
+ saveSubscriptionEventYangModel(createSubscriptionEventJsonData(
+ jsonObjectMapper.asJsonString(yangModelSubscriptionEvent)));
+ } else {
+ findDeltaCmHandlesAddOrUpdateInDatabase(yangModelSubscriptionEvent, clientId, subscriptionName, dataNodes);
+ }
+ }
+
+ private void findDeltaCmHandlesAddOrUpdateInDatabase(final YangModelSubscriptionEvent yangModelSubscriptionEvent,
+ final String clientId, final String subscriptionName,
+ final Collection<DataNode> dataNodes) {
+ final Map<String, SubscriptionStatus> cmHandleIdsFromYangModel =
+ extractCmHandleFromYangModelAsMap(yangModelSubscriptionEvent);
+ final Map<String, SubscriptionStatus> cmHandleIdsFromDatabase =
+ extractCmHandleFromDbAsMap(dataNodes);
+
+ final Map<String, SubscriptionStatus> newCmHandles =
+ mapDifference(cmHandleIdsFromYangModel, cmHandleIdsFromDatabase);
+ traverseCmHandleList(newCmHandles, clientId, subscriptionName, true);
+
+ final Map<String, SubscriptionStatus> existingCmHandles =
+ mapDifference(cmHandleIdsFromYangModel, newCmHandles);
+ traverseCmHandleList(existingCmHandles, clientId, subscriptionName, false);
+ }
+
+ private boolean isSubscriptionRegistryEmptyOrNonExist(final Collection<DataNode> dataNodes,
+ final String clientId, final String subscriptionName) {