add subplugin field support and new Cloud Artifact class
[multicloud/framework.git] / artifactbroker / main / src / main / java / org / onap / policy / distribution / main / parameters / DistributionParameterGroup.java
index d034e5e..5a588f8 100644 (file)
@@ -28,6 +28,8 @@ import org.onap.policy.common.parameters.GroupValidationResult;
 import org.onap.policy.common.parameters.ParameterGroup;
 import org.onap.policy.common.parameters.ValidationStatus;
 import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
+import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
 
 /**
  * Class to hold all parameters needed for Distribution component.
@@ -38,6 +40,11 @@ public class DistributionParameterGroup implements ParameterGroup {
     // @formatter:off
     private String name;
     private RestServerParameters restServerParameters;
+    private Map<String, ReceptionHandlerParameters> receptionHandlerParameters;
+    private Map<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfigurationParameters
+        = new LinkedHashMap<>();
+    private Map<String, ArtifactForwarderConfigurationParameterGroup> artifactForwarderConfigurationParameters
+        = new LinkedHashMap<>();
     // @formatter:on
 
     /**
@@ -45,9 +52,15 @@ public class DistributionParameterGroup implements ParameterGroup {
      *
      * @param name the parameter group name
      */
-    public DistributionParameterGroup(final String name, final RestServerParameters restServerParameters) {
+    public DistributionParameterGroup(final String name, final RestServerParameters restServerParameters,
+        final Map<String, ReceptionHandlerParameters> receptionHandlerParameters,
+        final Map<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfigurationParameters,
+        final Map<String, ArtifactForwarderConfigurationParameterGroup> artifactForwarderConfigurationParameters) {
         this.name = name;
         this.restServerParameters = restServerParameters;
+        this.receptionHandlerParameters = receptionHandlerParameters;
+        this.receptionHandlerConfigurationParameters = receptionHandlerConfigurationParameters;
+        this.artifactForwarderConfigurationParameters = artifactForwarderConfigurationParameters;
     }
 
     /**
@@ -70,6 +83,15 @@ public class DistributionParameterGroup implements ParameterGroup {
         this.name = name;
     }
 
+    /**
+     * Return the receptionHandlerParameters of this parameter group instance.
+     *
+     * @return the receptionHandlerParameters
+     */
+    public Map<String, ReceptionHandlerParameters> getReceptionHandlerParameters() {
+        return receptionHandlerParameters;
+    }
+
     /**
      * Return the restServerParameters of this parameter group instance.
      *
@@ -79,6 +101,44 @@ public class DistributionParameterGroup implements ParameterGroup {
         return restServerParameters;
     }
 
+    /**
+     * Gets the reception handler configuration parameter map.
+     *
+     * @return the reception handler configuration parameter map
+     */
+    public Map<String, ReceptionHandlerConfigurationParameterGroup> getReceptionHandlerConfigurationParameters() {
+        return receptionHandlerConfigurationParameters;
+    }
+
+    /**
+     * Sets the reception handler configuration parameter map.
+     *
+     * @param receptionHandlerConfigurationParameters the reception handler configuration parameters
+     */
+    public void setReceptionHandlerConfigurationParameters(
+        final Map<String, ReceptionHandlerConfigurationParameterGroup> receptionHandlerConfigurationParameters) {
+        this.receptionHandlerConfigurationParameters = receptionHandlerConfigurationParameters;
+    }
+
+    /**
+     * Gets the policy forwarder configuration parameter map.
+     *
+     * @return the policy forwarder configuration parameter map
+     */
+    public Map<String, ArtifactForwarderConfigurationParameterGroup> getArtifactForwarderConfigurationParameters() {
+        return artifactForwarderConfigurationParameters;
+    }
+
+    /**
+     * Sets the policy forwarder configuration parameter map.
+     *
+     * @param artifactForwarderConfigurationParameters the policy forwarder configuration parameters
+     */
+    public void setArtifactForwarderConfigurationParameters(
+        final Map<String, ArtifactForwarderConfigurationParameterGroup> artifactForwarderConfigurationParameters) {
+        this.artifactForwarderConfigurationParameters = artifactForwarderConfigurationParameters;
+    }
+
     /**
      * Validate the parameter group.
      *
@@ -96,7 +156,32 @@ public class DistributionParameterGroup implements ParameterGroup {
         } else {
             validationResult.setResult("restServerParameters", restServerParameters.validate());
         }
+        validateReceptionHandlers(validationResult);
+        validateForwarderConfigurations(validationResult);
         return validationResult;
     }
 
+    private void validateReceptionHandlers(final GroupValidationResult validationResult) {
+        if (receptionHandlerParameters == null || receptionHandlerParameters.size() == 0) {
+            validationResult.setResult("receptionHandlerParameters", ValidationStatus.INVALID,
+                "must have at least one reception handler");
+        } else {
+            for (final Entry<String, ReceptionHandlerParameters> nestedGroupEntry : receptionHandlerParameters
+                .entrySet()) {
+                validationResult.setResult("receptionHandlerParameters", nestedGroupEntry.getKey(),
+                    nestedGroupEntry.getValue().validate());
+            }
+        }
+    }
+
+    private void validateForwarderConfigurations(final GroupValidationResult validationResult) {
+        // @formatter:off
+        for (final Entry<String, ArtifactForwarderConfigurationParameterGroup> configurationParameters :
+            artifactForwarderConfigurationParameters.entrySet()) {
+            validationResult.setResult("artifactForwarderConfigurationParameters", configurationParameters.getKey(),
+                configurationParameters.getValue().validate());
+        }
+        // @formatter:on
+    }
+
 }