Rework the policy refresh
[clamp.git] / src / main / java / org / onap / clamp / policy / microservice / MicroServicePolicyService.java
index b17bf1a..0631380 100644 (file)
 
 package org.onap.clamp.policy.microservice;
 
-import com.google.common.collect.Sets;
-
 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.policy.PolicyService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,11 +35,11 @@ import org.springframework.stereotype.Service;
 @Service
 public class MicroServicePolicyService implements PolicyService<MicroServicePolicy> {
 
-    private final MicroServicePolicyRepository repository;
+    private final MicroServicePolicyRepository microServiceRepository;
 
     @Autowired
-    public MicroServicePolicyService(MicroServicePolicyRepository repository) {
-        this.repository = repository;
+    public MicroServicePolicyService(MicroServicePolicyRepository microServiceRepository) {
+        this.microServiceRepository = microServiceRepository;
     }
 
     @Override
@@ -52,7 +50,7 @@ public class MicroServicePolicyService implements PolicyService<MicroServicePoli
 
     @Override
     public boolean isExisting(String policyName) {
-        return repository.existsById(policyName);
+        return microServiceRepository.existsById(policyName);
     }
 
     /**
@@ -63,18 +61,22 @@ public class MicroServicePolicyService implements PolicyService<MicroServicePoli
      * @return The updated MicroService policy
      */
     public MicroServicePolicy getAndUpdateMicroServicePolicy(Loop loop, MicroServicePolicy policy) {
-        return repository.save(
-                repository.findById(policy.getName()).map(p -> updateMicroservicePolicyProperties(p, policy, loop))
+        return microServiceRepository.save(
+                microServiceRepository
+                        .findById(policy.getName()).map(p -> updateMicroservicePolicyProperties(p, policy, loop))
                         .orElse(new MicroServicePolicy(policy.getName(), policy.getPolicyModel(),
-                                policy.getShared(), policy.getJsonRepresentation(), Sets.newHashSet(loop))));
+                                policy.getShared(), policy.getJsonRepresentation(), null, policy.getPdpGroup(),
+                                policy.getPdpSubgroup())));
     }
 
     private MicroServicePolicy updateMicroservicePolicyProperties(MicroServicePolicy oldPolicy,
-            MicroServicePolicy newPolicy, Loop loop) {
+                                                                  MicroServicePolicy newPolicy, Loop loop) {
         oldPolicy.setConfigurationsJson(newPolicy.getConfigurationsJson());
         if (!oldPolicy.getUsedByLoops().contains(loop)) {
             oldPolicy.getUsedByLoops().add(loop);
         }
+        oldPolicy.setPdpGroup(newPolicy.getPdpGroup());
+        oldPolicy.setPdpSubgroup(newPolicy.getPdpSubgroup());
         return oldPolicy;
     }
 
@@ -84,12 +86,25 @@ public class MicroServicePolicyService implements PolicyService<MicroServicePoli
      * @param microServicePolicy The micro service policy
      * @param deploymentId       The deployment ID as returned by DCAE
      * @param deploymentUrl      The Deployment URL as returned by DCAE
-     * @throws MicroServicePolicy doesn't exist in DB
      */
     public void updateDcaeDeploymentFields(MicroServicePolicy microServicePolicy, String deploymentId,
-            String deploymentUrl) {
+                                           String deploymentUrl) {
         microServicePolicy.setDcaeDeploymentId(deploymentId);
         microServicePolicy.setDcaeDeploymentStatusUrl(deploymentUrl);
-        repository.save(microServicePolicy);
+        microServiceRepository.save(microServicePolicy);
+    }
+
+
+    /**
+     * Api to refresh the MicroService Policy UI window.
+     *
+     * @param microServicePolicy The micro Service policy object
+     * @param toscaConverter     the tosca converter required to convert the tosca model to json schema
+     */
+    public void refreshMicroServicePolicyJsonRepresentation(MicroServicePolicy microServicePolicy,
+                                                            ToscaConverterWithDictionarySupport toscaConverter) {
+        microServicePolicy.updateJsonRepresentation(toscaConverter);
+        this.microServiceRepository.saveAndFlush(microServicePolicy);
+
     }
 }