Sonar Fixes policy/models, removing model-yaml
[policy/models.git] / models-interactions / model-yaml / src / main / java / org / onap / policy / controlloop / compiler / ControlLoopCompiler.java
index c1543d0..5204a1b 100644 (file)
 
 package org.onap.policy.controlloop.compiler;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-
 import java.io.InputStream;
 import java.io.Serializable;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import org.apache.commons.lang3.StringUtils;
-import org.jgrapht.DirectedGraph;
+import org.jgrapht.Graph;
 import org.jgrapht.graph.ClassBasedEdgeFactory;
 import org.jgrapht.graph.DefaultEdge;
 import org.jgrapht.graph.DirectedMultigraph;
@@ -120,7 +115,7 @@ public class ControlLoopCompiler implements Serializable {
             //
             // For this version we can use a directed multigraph, in the future we may not be able to
             //
-            DirectedGraph<NodeWrapper, LabeledEdge> graph =
+            Graph<NodeWrapper, LabeledEdge> graph =
                             new DirectedMultigraph<>(new ClassBasedEdgeFactory<NodeWrapper,
                                             LabeledEdge>(LabeledEdge.class));
             //
@@ -205,7 +200,7 @@ public class ControlLoopCompiler implements Serializable {
         //
         // They really shouldn't have any policies attached.
         //
-        if ((policy.getPolicies() != null || policy.getPolicies().isEmpty()) && callback != null ) {
+        if ((policy.getPolicies() != null || policy.getPolicies().isEmpty()) && callback != null) {
             callback.onWarning("Open Loop policy contains policies. The policies will never be invoked.");
         }
     }
@@ -231,7 +226,7 @@ public class ControlLoopCompiler implements Serializable {
     }
 
     private static Map<Policy, PolicyNodeWrapper> addPoliciesAsNodes(ControlLoopPolicy policy,
-            DirectedGraph<NodeWrapper, LabeledEdge> graph, TriggerNodeWrapper triggerNode,
+        Graph<NodeWrapper, LabeledEdge> graph, TriggerNodeWrapper triggerNode,
             ControlLoopCompilerCallback callback) {
         Map<Policy, PolicyNodeWrapper> mapNodes = new HashMap<>();
         for (Policy operPolicy : policy.getPolicies()) {
@@ -264,7 +259,7 @@ public class ControlLoopCompiler implements Serializable {
         return mapNodes;
     }
 
-    private static void addEdge(DirectedGraph<NodeWrapper, LabeledEdge> graph, Map<Policy, PolicyNodeWrapper> mapNodes,
+    private static void addEdge(Graph<NodeWrapper, LabeledEdge> graph, Map<Policy, PolicyNodeWrapper> mapNodes,
                     String policyId, String connectedPolicy,
                     FinalResultNodeWrapper finalResultNodeWrapper,
                     PolicyResult policyResult, NodeWrapper node) throws CompilerException {
@@ -283,7 +278,7 @@ public class ControlLoopCompiler implements Serializable {
         }
     }
 
-    private static void validateNodesAndEdges(DirectedGraph<NodeWrapper, LabeledEdge> graph,
+    private static void validateNodesAndEdges(Graph<NodeWrapper, LabeledEdge> graph,
                     ControlLoopCompilerCallback callback) throws CompilerException {
         for (NodeWrapper node : graph.vertexSet()) {
             if (node instanceof TriggerNodeWrapper) {
@@ -299,12 +294,12 @@ public class ControlLoopCompiler implements Serializable {
         }
     }
 
-    private static void validateTriggerNodeWrapper(DirectedGraph<NodeWrapper, LabeledEdge> graph,
+    private static void validateTriggerNodeWrapper(Graph<NodeWrapper, LabeledEdge> graph,
                     NodeWrapper node) throws CompilerException {
         if (LOGGER.isDebugEnabled()) {
             LOGGER.info("Trigger Node {}", node);
         }
-        if (graph.inDegreeOf(node) > 0 ) {
+        if (graph.inDegreeOf(node) > 0) {
             //
             // Really should NEVER get here unless someone messed up the code above.
             //
@@ -318,7 +313,7 @@ public class ControlLoopCompiler implements Serializable {
         }
     }
 
-    private static void validateFinalResultNodeWrapper(DirectedGraph<NodeWrapper, LabeledEdge> graph,
+    private static void validateFinalResultNodeWrapper(Graph<NodeWrapper, LabeledEdge> graph,
                     NodeWrapper node) throws CompilerException {
         if (LOGGER.isDebugEnabled()) {
             LOGGER.info("FinalResult Node {}", node);
@@ -331,7 +326,7 @@ public class ControlLoopCompiler implements Serializable {
         }
     }
 
-    private static void validatePolicyNodeWrapper(DirectedGraph<NodeWrapper, LabeledEdge> graph,
+    private static void validatePolicyNodeWrapper(Graph<NodeWrapper, LabeledEdge> graph,
                     NodeWrapper node, ControlLoopCompilerCallback callback) throws CompilerException {
         if (LOGGER.isDebugEnabled()) {
             LOGGER.info("Policy Node {}", node);
@@ -358,10 +353,10 @@ public class ControlLoopCompiler implements Serializable {
         if (! isRecipeOk(operPolicy, callback)) {
             isOk = false;
         }
-        if (! isTargetOk(operPolicy, callback) ) {
+        if (! isTargetOk(operPolicy, callback)) {
             isOk = false;
         }
-        if (! arePolicyResultsOk(operPolicy, callback) ) {
+        if (! arePolicyResultsOk(operPolicy, callback)) {
             isOk = false;
         }
         return isOk;
@@ -395,55 +390,23 @@ public class ControlLoopCompiler implements Serializable {
     }
 
     private static boolean isActorOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
-        if (operPolicy.getActor() == null) {
+        if (StringUtils.isBlank(operPolicy.getActor())) {
             if (callback != null) {
                 callback.onError("Policy actor is null");
             }
-            isOk = false;
-        }
-        //
-        // Construct a list for all valid actors
-        //
-        ImmutableList<String> actors = ImmutableList.of("APPC", "SDNC", "SDNR", "SO", "VFC");
-        //
-        if (operPolicy.getActor() != null && (!actors.contains(operPolicy.getActor())) ) {
-            if (callback != null) {
-                callback.onError("Policy actor is invalid");
-            }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static boolean isRecipeOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
-        if (operPolicy.getRecipe() == null) {
+        if (StringUtils.isBlank(operPolicy.getRecipe())) {
             if (callback != null) {
                 callback.onError("Policy recipe is null");
             }
-            isOk = false;
-        }
-        //
-        // NOTE: We need a way to find the acceptable recipe values (either Enum or a database that has these)
-        //
-        ImmutableMap<String, List<String>> recipes = new ImmutableMap.Builder<String, List<String>>()
-                .put("APPC", ImmutableList.of("Restart", "Rebuild", "Migrate", "ModifyConfig"))
-                .put("SDNC", ImmutableList.of("Reroute"))
-                .put("SDNR", ImmutableList.of("ModifyConfig"))
-                .put("SO", ImmutableList.of("VF Module Create", "VF Module Delete"))
-                .put("VFC", ImmutableList.of("Restart"))
-                .build();
-        //
-        if (operPolicy.getRecipe() != null
-                        && (!recipes.getOrDefault(operPolicy.getActor(),
-                                        Collections.emptyList()).contains(operPolicy.getRecipe()))) {
-            if (callback != null) {
-                callback.onError("Policy recipe is invalid");
-            }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static boolean isTargetOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
@@ -471,94 +434,88 @@ public class ControlLoopCompiler implements Serializable {
         // Check that policy results are connected to either default final * or another policy
         //
         boolean isOk = isSuccessPolicyResultOk(operPolicy, callback);
-        if (! isFailurePolicyResultOk(operPolicy, callback) ) {
+        if (! isFailurePolicyResultOk(operPolicy, callback)) {
             isOk = false;
         }
-        if (! isFailureRetriesPolicyResultOk(operPolicy, callback) ) {
+        if (! isFailureRetriesPolicyResultOk(operPolicy, callback)) {
             isOk = false;
         }
-        if (! isFailureTimeoutPolicyResultOk(operPolicy, callback) ) {
+        if (! isFailureTimeoutPolicyResultOk(operPolicy, callback)) {
             isOk = false;
         }
-        if (! isFailureExceptionPolicyResultOk(operPolicy, callback) ) {
+        if (! isFailureExceptionPolicyResultOk(operPolicy, callback)) {
             isOk = false;
         }
-        if (! isFailureGuardPolicyResultOk(operPolicy, callback) ) {
+        if (! isFailureGuardPolicyResultOk(operPolicy, callback)) {
             isOk = false;
         }
         return isOk;
     }
 
     private static boolean isSuccessPolicyResultOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
         if (FinalResult.toResult(operPolicy.getSuccess()) != null
                         && !operPolicy.getSuccess().equals(FinalResult.FINAL_SUCCESS.toString())) {
             if (callback != null) {
                 callback.onError("Policy success is neither another policy nor FINAL_SUCCESS");
             }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static boolean isFailurePolicyResultOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
         if (FinalResult.toResult(operPolicy.getFailure()) != null
                         && !operPolicy.getFailure().equals(FinalResult.FINAL_FAILURE.toString())) {
             if (callback != null) {
                 callback.onError("Policy failure is neither another policy nor FINAL_FAILURE");
             }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static boolean isFailureRetriesPolicyResultOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
         if (FinalResult.toResult(operPolicy.getFailure_retries()) != null
                         && !operPolicy.getFailure_retries().equals(FinalResult.FINAL_FAILURE_RETRIES.toString())) {
             if (callback != null) {
                 callback.onError("Policy failure retries is neither another policy nor FINAL_FAILURE_RETRIES");
             }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static boolean isFailureTimeoutPolicyResultOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
         if (FinalResult.toResult(operPolicy.getFailure_timeout()) != null
                         && !operPolicy.getFailure_timeout().equals(FinalResult.FINAL_FAILURE_TIMEOUT.toString())) {
             if (callback != null) {
                 callback.onError("Policy failure timeout is neither another policy nor FINAL_FAILURE_TIMEOUT");
             }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static boolean isFailureExceptionPolicyResultOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
         if (FinalResult.toResult(operPolicy.getFailure_exception()) != null
                         && !operPolicy.getFailure_exception().equals(FinalResult.FINAL_FAILURE_EXCEPTION.toString())) {
             if (callback != null) {
                 callback.onError("Policy failure exception is neither another policy nor FINAL_FAILURE_EXCEPTION");
             }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static boolean isFailureGuardPolicyResultOk(Policy operPolicy, ControlLoopCompilerCallback callback) {
-        boolean isOk = true;
         if (FinalResult.toResult(operPolicy.getFailure_guard()) != null
                         && !operPolicy.getFailure_guard().equals(FinalResult.FINAL_FAILURE_GUARD.toString())) {
             if (callback != null) {
                 callback.onError("Policy failure guard is neither another policy nor FINAL_FAILURE_GUARD");
             }
-            isOk = false;
+            return false;
         }
-        return isOk;
+        return true;
     }
 
     private static PolicyNodeWrapper findPolicyNode(Map<Policy, PolicyNodeWrapper> mapNodes, String id) {