Merge "Change docker image name"
[nonrtric.git] / policy-agent / src / main / java / org / oransc / policyagent / repository / Ric.java
index ffe493d..82d84f1 100644 (file)
 
 package org.oransc.policyagent.repository;
 
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Vector;
+
 import org.oransc.policyagent.configuration.RicConfig;
 
 /**
@@ -29,6 +33,7 @@ import org.oransc.policyagent.configuration.RicConfig;
 public class Ric {
     private final RicConfig ricConfig;
     private RicState state = RicState.NOT_INITIATED;
+    private Map<String, PolicyType> supportedPolicyTypes = new HashMap<>();
 
     /**
      * Creates the Ric. Initial state is {@link RicState.NOT_INITIATED}.
@@ -51,43 +56,93 @@ public class Ric {
         state = newState;
     }
 
+    public RicConfig getConfig() {
+        return this.ricConfig;
+    }
+
     /**
      * Gets the nodes managed by this Ric.
      *
      * @return a vector containing the nodes managed by this Ric.
      */
-    public Vector<String> getManagedNodes() {
+    public Vector<String> getManagedElementIds() {
         return ricConfig.managedElementIds();
     }
 
     /**
      * Determines if the given node is managed by this Ric.
      *
-     * @param nodeName the node name to check.
+     * @param managedElementId the node name to check.
      * @return true if the given node is managed by this Ric.
      */
-    public boolean isManaging(String nodeName) {
-        return ricConfig.managedElementIds().contains(nodeName);
+    public boolean isManaging(String managedElementId) {
+        return ricConfig.managedElementIds().contains(managedElementId);
     }
 
     /**
      * Adds the given node as managed by this Ric.
      *
-     * @param nodeName the node to add.
+     * @param managedElementId the node to add.
      */
-    public void addManagedNode(String nodeName) {
-        if (!ricConfig.managedElementIds().contains(nodeName)) {
-            ricConfig.managedElementIds().add(nodeName);
+    public void addManagedElement(String managedElementId) {
+        if (!ricConfig.managedElementIds().contains(managedElementId)) {
+            ricConfig.managedElementIds().add(managedElementId);
         }
     }
 
     /**
      * Removes the given node as managed by this Ric.
      *
-     * @param nodeName the node to remove.
+     * @param managedElementId the node to remove.
+     */
+    public void removeManagedElement(String managedElementId) {
+        ricConfig.managedElementIds().remove(managedElementId);
+    }
+
+    /**
+     * Gets the policy types supported by this Ric.
+     *
+     * @return the policy types supported by this Ric in an unmodifiable list.
+     */
+    public Collection<PolicyType> getSupportedPolicyTypes() {
+        return supportedPolicyTypes.values();
+    }
+
+    public Collection<String> getSupportedPolicyTypeNames() {
+        return supportedPolicyTypes.keySet();
+    }
+
+    /**
+     * Adds a policy type as supported by this Ric.
+     *
+     * @param type the policy type to support.
      */
-    public void removeManagedNode(String nodeName) {
-        ricConfig.managedElementIds().remove(nodeName);
+    public void addSupportedPolicyType(PolicyType type) {
+        supportedPolicyTypes.put(type.name(), type);
+    }
+
+    /**
+     * Removes all policy type as supported by this Ric.
+     */
+    public void clearSupportedPolicyTypes() {
+        supportedPolicyTypes.clear();
+    }
+
+    /**
+     * Checks if a type is supported by this Ric.
+     *
+     * @param typeName the name of the type to check if it is supported.
+     *
+     * @return true if the given type is supported by this Ric, false otherwise.
+     */
+    public boolean isSupportingType(String typeName) {
+        return supportedPolicyTypes.containsKey(typeName);
+    }
+
+    @Override
+    public String toString() {
+        return Ric.class.getSimpleName() + ": " + "name: " + name() + ", state: " + state + ", baseUrl: "
+            + ricConfig.baseUrl() + ", managedNodes: " + ricConfig.managedElementIds();
     }
 
     /**
@@ -103,12 +158,8 @@ public class Ric {
          */
         ACTIVE,
         /**
-         * Something is wrong with the Ric.
-         */
-        FAULTY,
-        /**
-         * The node is unreachable at the moment.
+         * The Ric cannot be contacted.
          */
-        UNREACHABLE
+        NOT_REACHABLE, RECOVERING
     }
 }