Fix the CDS calls
[clamp.git] / src / main / java / org / onap / clamp / policy / operational / OperationalPolicyService.java
index 357a96d..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;
@@ -37,9 +40,15 @@ public class OperationalPolicyService implements PolicyService<OperationalPolicy
 
     private final OperationalPolicyRepository operationalPolicyRepository;
 
+    private final PolicyModelsRepository policyModelsRepository;
+
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyService.class);
+
     @Autowired
-    public OperationalPolicyService(OperationalPolicyRepository repository) {
+    public OperationalPolicyService(OperationalPolicyRepository repository,
+                                    PolicyModelsRepository policyModelsRepository) {
         this.operationalPolicyRepository = repository;
+        this.policyModelsRepository = policyModelsRepository;
     }
 
     @Override
@@ -49,10 +58,8 @@ public class OperationalPolicyService implements PolicyService<OperationalPolicy
                 .map(policy ->
                         operationalPolicyRepository
                                 .findById(policy.getName())
-                                .map(p -> setConfigurationJson(p, policy))
-                                .orElse(new OperationalPolicy(policy.getName(), loop,
-                                        policy.getConfigurationsJson(),
-                                        policy.getPolicyModel(), null, policy.getPdpGroup(), policy.getPdpSubgroup())))
+                                .map(p -> setConfiguration(p, policy))
+                                .orElse(initializeMissingFields(loop, policy)))
                 .collect(Collectors.toSet());
     }
 
@@ -61,10 +68,27 @@ public class OperationalPolicyService implements PolicyService<OperationalPolicy
         return operationalPolicyRepository.existsById(policyName);
     }
 
-    private OperationalPolicy setConfigurationJson(OperationalPolicy policy, OperationalPolicy newPolicy) {
+    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);
+    }
 }