package org.onap.clamp.clds.util.drawing;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import org.onap.clamp.clds.sdc.controller.installer.MicroService;
+import java.util.HashSet;
+import java.util.Set;
+import org.onap.clamp.loop.template.LoopElementModel;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.onap.clamp.policy.operational.OperationalPolicy;
public class ClampGraphBuilder {
- private String policy;
+ private Set<OperationalPolicy> policies = new HashSet<>();
private String collector;
- private List<MicroService> microServices = new ArrayList<>();
+ private Set<MicroServicePolicy> microServices = new HashSet<>();
+ private Set<LoopElementModel> loopElementModels = new HashSet<>();
private final Painter painter;
public ClampGraphBuilder(Painter painter) {
this.painter = painter;
}
- public ClampGraphBuilder collector(String c) {
- collector = c;
+ public ClampGraphBuilder collector(String collector) {
+ this.collector = collector;
+ return this;
+ }
+
+ public ClampGraphBuilder addPolicy(OperationalPolicy policy) {
+ this.policies.add(policy);
return this;
}
- public ClampGraphBuilder policy(String p) {
- policy = p;
+ public ClampGraphBuilder addAllPolicies(Set<OperationalPolicy> policies) {
+ this.policies.addAll(policies);
return this;
}
- public ClampGraphBuilder addMicroService(MicroService ms) {
+ public ClampGraphBuilder addMicroService(MicroServicePolicy ms) {
microServices.add(ms);
return this;
}
- public ClampGraphBuilder addAllMicroServices(List<MicroService> msList) {
+ public ClampGraphBuilder addAllMicroServices(Set<MicroServicePolicy> msList) {
microServices.addAll(msList);
return this;
}
- public ClampGraph build() {
- if (microServices.isEmpty()) {
- throw new InvalidStateException("At least one microservice is required");
+ /**
+ * This method adds all loop element specified in input to the current structure.
+ *
+ * @param loopElementModels A set of LoopElementModels
+ * @return Return the current ClampGraphBuilder
+ */
+ public ClampGraphBuilder addAllLoopElementModels(Set<LoopElementModel> loopElementModels) {
+ for (LoopElementModel elem : loopElementModels) {
+ this.addLoopElementModel(elem);
}
- if (Objects.isNull(policy) || policy.trim().isEmpty()) {
- throw new InvalidStateException("Policy element must be present");
+ return this;
+ }
+
+ /**
+ * This method adds one loop element specified in input to the current structure.
+ *
+ * @param loopElementModel A LoopElementModels
+ * @return Return the current ClampGraphBuilder
+ */
+ public ClampGraphBuilder addLoopElementModel(LoopElementModel loopElementModel) {
+ if (LoopElementModel.MICRO_SERVICE_TYPE.equals(loopElementModel.getLoopElementType())) {
+ microServices.add(new MicroServicePolicy(loopElementModel.getName(),
+ loopElementModel.getPolicyModels().first(), false,null,loopElementModel,null,null));
+ } else if (LoopElementModel.OPERATIONAL_POLICY_TYPE.equals(loopElementModel.getLoopElementType())) {
+ policies.add(new OperationalPolicy(loopElementModel.getName(), null, null,
+ loopElementModel.getPolicyModels().first(), loopElementModel, null, null));
}
- return new ClampGraph(painter.doPaint(collector, microServices, policy));
+ return this;
+ }
+
+ /**
+ * Build the SVG.
+ *
+ * @return Clamp graph (SVG)
+ */
+ public ClampGraph build() {
+ return new ClampGraph(painter.doPaint(collector, microServices, policies));
}
}