Add get deployed endpoints for legacy policies
[policy/api.git] / main / src / main / java / org / onap / policy / api / main / rest / provider / PolicyProvider.java
index a4440da..66fd7f0 100644 (file)
 package org.onap.policy.api.main.rest.provider;\r
 \r
 import java.util.ArrayList;\r
-import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
 import javax.ws.rs.core.Response;\r
 import org.apache.commons.lang3.tuple.Pair;\r
+import org.onap.policy.models.base.PfConceptKey;\r
 import org.onap.policy.models.base.PfModelException;\r
 import org.onap.policy.models.pdp.concepts.PdpGroup;\r
 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;\r
-import org.onap.policy.models.pdp.concepts.PdpSubGroup;\r
-import org.onap.policy.models.pdp.enums.PdpState;\r
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;\r
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter;\r
 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;\r
@@ -122,25 +120,8 @@ public class PolicyProvider extends CommonModelProvider {
     public Map<Pair<String, String>, List<ToscaPolicy>> fetchDeployedPolicies(\r
             String policyTypeId, String policyTypeVersion, String policyId) throws PfModelException {\r
 \r
-        List<ToscaPolicyTypeIdentifier> policyTypes = new ArrayList<>();\r
-        policyTypes.add(new ToscaPolicyTypeIdentifier(policyTypeId, policyTypeVersion));\r
-        PdpGroupFilter pdpGroupFilter = PdpGroupFilter.builder().policyTypeList(policyTypes)\r
-                .groupState(PdpState.ACTIVE).pdpState(PdpState.ACTIVE).build();\r
-        List<PdpGroup> pdpGroups = modelsProvider.getFilteredPdpGroups(pdpGroupFilter);\r
-\r
-        if (pdpGroups.isEmpty()) {\r
-            throw new PfModelException(Response.Status.NOT_FOUND,\r
-                    constructDeploymentNotFoundMessage(policyTypeId, policyTypeVersion, policyId));\r
-        }\r
-\r
-        Map<Pair<String, String>, List<ToscaPolicy>> deployedPolicyMap =\r
-                constructDeployedPolicyMap(pdpGroups, policyId);\r
-        if (deployedPolicyMap.isEmpty()) {\r
-            throw new PfModelException(Response.Status.NOT_FOUND,\r
-                    constructDeploymentNotFoundMessage(policyTypeId, policyTypeVersion, policyId));\r
-        }\r
-\r
-        return deployedPolicyMap;\r
+        return collectDeployedPolicies(policyId, new PfConceptKey(policyTypeId, policyTypeVersion),\r
+                modelsProvider::getPolicyList, List::addAll, new ArrayList<>());\r
     }\r
 \r
     /**\r
@@ -264,55 +245,6 @@ public class PolicyProvider extends CommonModelProvider {
         }\r
     }\r
 \r
-    /**\r
-     * Constructs the map of deployed pdp groups and deployed policies.\r
-     *\r
-     * @param pdpGroups the list of pdp groups that contain the specified policy\r
-     * @param policyId the ID of policy\r
-     *\r
-     * @return the constructed map of pdp groups and deployed policies\r
-     *\r
-     * @throws PfModelException the PfModel parsing exception\r
-     */\r
-    private Map<Pair<String, String>, List<ToscaPolicy>> constructDeployedPolicyMap(\r
-            List<PdpGroup> pdpGroups, String policyId) throws PfModelException {\r
-\r
-        Map<Pair<String, String>, List<ToscaPolicy>> deployedPolicyMap = new HashMap<>();\r
-        for (PdpGroup pdpGroup : pdpGroups) {\r
-            List<ToscaPolicyIdentifier> policyIdentifiers = extractPolicyIdentifiers(policyId, pdpGroup);\r
-            List<ToscaPolicy> deployedPolicies = getDeployedPolicies(policyIdentifiers);\r
-            if (!deployedPolicies.isEmpty()) {\r
-                deployedPolicyMap.put(Pair.of(pdpGroup.getName(), pdpGroup.getVersion()), deployedPolicies);\r
-            }\r
-        }\r
-        return deployedPolicyMap;\r
-    }\r
-\r
-    private List<ToscaPolicyIdentifier> extractPolicyIdentifiers(String policyId, PdpGroup pdpGroup) {\r
-        List<ToscaPolicyIdentifier> policyIdentifiers = new ArrayList<>();\r
-        for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {\r
-            for (ToscaPolicyIdentifier policyIdentifier : pdpSubGroup.getPolicies()) {\r
-                if (policyId.equalsIgnoreCase(policyIdentifier.getName())) {\r
-                    policyIdentifiers.add(policyIdentifier);\r
-                }\r
-            }\r
-        }\r
-        return policyIdentifiers;\r
-    }\r
-\r
-    private List<ToscaPolicy> getDeployedPolicies(List<ToscaPolicyIdentifier> policyIdentifiers)\r
-                    throws PfModelException {\r
-\r
-        List<ToscaPolicy> deployedPolicies = new ArrayList<>();\r
-        if (!policyIdentifiers.isEmpty()) {\r
-            for (ToscaPolicyIdentifier policyIdentifier : policyIdentifiers) {\r
-                deployedPolicies.addAll(\r
-                        modelsProvider.getPolicyList(policyIdentifier.getName(), policyIdentifier.getVersion()));\r
-            }\r
-        }\r
-        return deployedPolicies;\r
-    }\r
-\r
     /**\r
      * Constructs returned message for not found resource.\r
      *\r
@@ -329,21 +261,4 @@ public class PolicyProvider extends CommonModelProvider {
         return "policy with ID " + policyId + ":" + policyVersion\r
                 + " and type " + policyTypeId + ":" + policyTypeVersion + " does not exist";\r
     }\r
-\r
-    /**\r
-     * Constructs returned message for not found policy deployment.\r
-     *\r
-     * @param policyTypeId the ID of policy type\r
-     * @param policyTypeVersion the version of policy type\r
-     * @param policyId the ID of policy\r
-     * @param policyVersion the version of policy\r
-     *\r
-     * @return constructed message\r
-     */\r
-    private String constructDeploymentNotFoundMessage(String policyTypeId, String policyTypeVersion,\r
-            String policyId) {\r
-\r
-        return "could not find policy with ID " + policyId + " and type "\r
-                + policyTypeId + ":" + policyTypeVersion + " deployed in any pdp group";\r
-    }\r
 }\r