X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fclamp%2Fclds%2Futil%2Fdrawing%2FClampGraphBuilder.java;h=846b3ab2d42fb3a17d3d86e4d0aae26164a7b0eb;hb=635445a5f262464c88287e5b5ceace4abf9cc4bc;hp=243cb4aad5c39e10ddde24707938ac364fd0a5ab;hpb=f451ca668c1de480211b380b58e1010c47f28008;p=clamp.git diff --git a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java index 243cb4aa..846b3ab2 100755 --- a/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java +++ b/src/main/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilder.java @@ -17,48 +17,91 @@ * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END============================================ + * Modifications copyright (c) 2019 AT&T * =================================================================== * */ package org.onap.clamp.clds.util.drawing; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +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 policies = new HashSet<>(); private String collector; - private List microServices = new ArrayList<>(); + private Set microServices = new HashSet<>(); + private Set 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 policy(String p) { - policy = p; + public ClampGraphBuilder addPolicy(OperationalPolicy policy) { + this.policies.add(policy); return this; } - public ClampGraphBuilder microService(String ms) { + public ClampGraphBuilder addAllPolicies(Set policies) { + this.policies.addAll(policies); + return this; + } + + public ClampGraphBuilder addMicroService(MicroServicePolicy ms) { microServices.add(ms); return this; } - public ClampGraph build() { - if(microServices.isEmpty()) { - throw new InvalidStateException("At least one microservice is required"); + public ClampGraphBuilder addAllMicroServices(Set msList) { + microServices.addAll(msList); + return this; + } + + /** + * 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 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, loopElementModel)); + } 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)); } }