Rework the policy refresh
[clamp.git] / src / main / java / org / onap / clamp / policy / microservice / MicroServicePolicyService.java
index c431767..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,46 +35,76 @@ 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
     public Set<MicroServicePolicy> updatePolicies(Loop loop, List<MicroServicePolicy> newMicroservicePolicies) {
         return newMicroservicePolicies.stream().map(policy -> getAndUpdateMicroServicePolicy(loop, policy))
-            .collect(Collectors.toSet());
+                .collect(Collectors.toSet());
     }
 
     @Override
     public boolean isExisting(String policyName) {
-        return repository.existsById(policyName);
+        return microServiceRepository.existsById(policyName);
     }
 
     /**
      * Get and update the MicroService policy properties.
      *
-     * @param loop
-     *        The loop
-     * @param policy
-     *        The new MicroService policy
+     * @param loop   The loop
+     * @param policy The new MicroService policy
      * @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))
-                .orElse(new MicroServicePolicy(policy.getName(), policy.getModelType(), policy.getPolicyTosca(),
-                    policy.getShared(), policy.getJsonRepresentation(), Sets.newHashSet(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(), 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;
     }
+
+    /**
+     * Update the MicroService policy deployment related parameters.
+     *
+     * @param microServicePolicy The micro service policy
+     * @param deploymentId       The deployment ID as returned by DCAE
+     * @param deploymentUrl      The Deployment URL as returned by DCAE
+     */
+    public void updateDcaeDeploymentFields(MicroServicePolicy microServicePolicy, String deploymentId,
+                                           String deploymentUrl) {
+        microServicePolicy.setDcaeDeploymentId(deploymentId);
+        microServicePolicy.setDcaeDeploymentStatusUrl(deploymentUrl);
+        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);
+
+    }
 }