Fix the CDS calls
[clamp.git] / src / main / java / org / onap / clamp / policy / operational / OperationalPolicyService.java
index 95f4f7b..d5442e1 100644 (file)
 
 package org.onap.clamp.policy.operational;
 
-import com.google.gson.JsonObject;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport;
 import org.onap.clamp.loop.Loop;
+import org.onap.clamp.loop.template.PolicyModelsRepository;
 import org.onap.clamp.policy.PolicyService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -35,32 +38,57 @@ import org.springframework.stereotype.Service;
 @Service
 public class OperationalPolicyService implements PolicyService<OperationalPolicy> {
 
-    private final OperationalPolicyRepository repository;
+    private final OperationalPolicyRepository operationalPolicyRepository;
+
+    private final PolicyModelsRepository policyModelsRepository;
+
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyService.class);
 
     @Autowired
-    public OperationalPolicyService(OperationalPolicyRepository repository) {
-        this.repository = repository;
+    public OperationalPolicyService(OperationalPolicyRepository repository,
+                                    PolicyModelsRepository policyModelsRepository) {
+        this.operationalPolicyRepository = repository;
+        this.policyModelsRepository = policyModelsRepository;
     }
 
     @Override
     public Set<OperationalPolicy> updatePolicies(Loop loop, List<OperationalPolicy> operationalPolicies) {
         return operationalPolicies
-            .stream()
-            .map(policy ->
-                repository
-                    .findById(policy.getName())
-                    .map(p -> setConfigurationJson(p, policy.getConfigurationsJson()))
-                    .orElse(new OperationalPolicy(policy.getName(), loop, policy.getConfigurationsJson())))
-            .collect(Collectors.toSet());
+                .parallelStream()
+                .map(policy ->
+                        operationalPolicyRepository
+                                .findById(policy.getName())
+                                .map(p -> setConfiguration(p, policy))
+                                .orElse(initializeMissingFields(loop, policy)))
+                .collect(Collectors.toSet());
     }
 
     @Override
     public boolean isExisting(String policyName) {
-        return repository.existsById(policyName);
+        return operationalPolicyRepository.existsById(policyName);
     }
 
-    private OperationalPolicy setConfigurationJson(OperationalPolicy policy, JsonObject configurationsJson) {
-        policy.setConfigurationsJson(configurationsJson);
+    private OperationalPolicy initializeMissingFields(Loop loop, OperationalPolicy policy) {
+        policy.setLoop(loop);
         return policy;
     }
+
+    private OperationalPolicy setConfiguration(OperationalPolicy policy, OperationalPolicy newPolicy) {
+        policy.setConfigurationsJson(newPolicy.getConfigurationsJson());
+        policy.setPdpGroup(newPolicy.getPdpGroup());
+        policy.setPdpSubgroup(newPolicy.getPdpSubgroup());
+        return policy;
+    }
+
+    /**
+     * Api to refresh the Operational Policy UI window.
+     *
+     * @param operationalPolicy The operational policy object
+     * @param toscaConverter    the tosca converter required to convert the tosca model to json schema
+     */
+    public void refreshOperationalPolicyJsonRepresentation(OperationalPolicy operationalPolicy,
+                                                           ToscaConverterWithDictionarySupport toscaConverter) {
+        operationalPolicy.updateJsonRepresentation(toscaConverter, operationalPolicy.getLoop().getModelService());
+        this.operationalPolicyRepository.saveAndFlush(operationalPolicy);
+    }
 }