Introduce Hazelcast for alternateId-cmHandle relation pt. 2 - error collection
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / impl / utils / CmHandleIdMapper.java
index a88adbd..40c620f 100644 (file)
@@ -55,15 +55,10 @@ public class CmHandleIdMapper {
 
 
     private boolean addMappingWithValidation(final String cmHandleId, final String alternateId) {
-        if (alternateIdPerCmHandleId.containsKey(cmHandleId)) {
-            final String originalAlternateId = alternateIdPerCmHandleId.get(cmHandleId);
-            if (!originalAlternateId.equals(alternateId)) {
-                log.warn("Alternate id update ignored, cannot update cm handle {}, already has an alternate id of {}",
-                        cmHandleId, originalAlternateId);
-            }
+        if (StringUtils.isBlank(alternateId)) {
             return false;
         }
-        if (StringUtils.isBlank(alternateId)) {
+        if (isDuplicateId(cmHandleId, alternateId)) {
             return false;
         }
         alternateIdPerCmHandleId.put(cmHandleId, alternateId);
@@ -82,10 +77,32 @@ public class CmHandleIdMapper {
         }
     }
 
+    /**
+     * Check if alternate id is already used.
+     *
+     * @param cmHandleId the cmHandle id.
+     * @param alternateId the alternate id.
+     * @return boolean true if the alternate id is already used.
+     */
+    public boolean isDuplicateId(final String cmHandleId, final String alternateId) {
+        if (StringUtils.isBlank(alternateId)) {
+            return false;
+        }
+        if (cmHandleIdPerAlternateId.get(alternateId) != null) {
+            log.warn("The given alternate id was added to the cache already: {}", alternateId);
+            return true;
+        }
+        if (alternateIdPerCmHandleId.get(cmHandleId) != null) {
+            log.warn("The given cmhandle id was added to the cache already: {}", cmHandleId);
+            return true;
+        }
+        return false;
+    }
+
     private void initializeCache() {
         if (!cacheIsInitialized) {
             networkCmProxyCmHandleQueryService.getAllCmHandles().forEach(cmHandle ->
-                addMappingWithValidation(cmHandle.getCmHandleId(), cmHandle.getAlternateId())
+                    addMappingWithValidation(cmHandle.getCmHandleId(), cmHandle.getAlternateId())
             );
             log.info("Alternate ID cache initialized from DB with {} cm handle/alternate id pairs ",
                     alternateIdPerCmHandleId.size());