package org.onap.clamp.loop;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
+import java.util.HashMap;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
+import javax.persistence.Transient;
+import org.hibernate.annotations.SortNatural;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import org.onap.clamp.dao.model.jsontype.StringJsonUserType;
+import org.onap.clamp.loop.components.external.DcaeComponent;
+import org.onap.clamp.loop.components.external.ExternalComponent;
+import org.onap.clamp.loop.components.external.PolicyComponent;
import org.onap.clamp.loop.log.LoopLog;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.operational.OperationalPolicy;
@Enumerated(EnumType.STRING)
private LoopState lastComputedState;
+ @Expose
+ @Transient
+ private final Map<String, ExternalComponent> components = new HashMap<>();
+
@Expose
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "loop")
private Set<OperationalPolicy> operationalPolicies = new HashSet<>();
@Expose
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "loop")
- private Set<LoopLog> loopLogs = new HashSet<>();
+ @SortNatural
+ private SortedSet<LoopLog> loopLogs = new TreeSet<>();
+
+ private void initializeExternalComponents() {
+ this.addComponent(new PolicyComponent());
+ this.addComponent(new DcaeComponent());
+ }
public Loop() {
+ initializeExternalComponents();
}
/**
this.blueprint = blueprint;
this.lastComputedState = LoopState.DESIGN;
this.globalPropertiesJson = new JsonObject();
+ initializeExternalComponents();
}
public String getName() {
return loopLogs;
}
- void setLoopLogs(Set<LoopLog> loopLogs) {
+ void setLoopLogs(SortedSet<LoopLog> loopLogs) {
this.loopLogs = loopLogs;
}
microServicePolicy.getUsedByLoops().add(this);
}
- void addLog(LoopLog log) {
- loopLogs.add(log);
+ public void addLog(LoopLog log) {
log.setLoop(this);
+ this.loopLogs.add(log);
}
public String getDcaeBlueprintId() {
this.modelPropertiesJson = modelPropertiesJson;
}
+ public Map<String, ExternalComponent> getComponents() {
+ return components;
+ }
+
+ public ExternalComponent getComponent(String componentName) {
+ return this.components.get(componentName);
+ }
+
+ public void addComponent(ExternalComponent component) {
+ this.components.put(component.getComponentName(), component);
+ }
+
/**
* Generate the loop name.
*
return buffer.toString().replace('.', '_').replaceAll(" ", "");
}
- public String createPoliciesPayloadPdpGroup() {
- JsonObject jsonObject = new JsonObject();
- JsonArray jsonArray = new JsonArray();
- jsonObject.add("policies", jsonArray);
-
- for (OperationalPolicy opPolicy : this.getOperationalPolicies()) {
- JsonObject policyNode = new JsonObject();
- jsonArray.add(policyNode);
- policyNode.addProperty("policy-id", opPolicy.getName());
-
- for (String guardName : opPolicy.createGuardPolicyPayloads().keySet()) {
- JsonObject guardPolicyNode = new JsonObject();
- jsonArray.add(guardPolicyNode);
- guardPolicyNode.addProperty("policy-id", guardName);
- }
- }
- for (MicroServicePolicy microServicePolicy : this.getMicroServicePolicies()) {
- JsonObject policyNode = new JsonObject();
- jsonArray.add(policyNode);
- policyNode.addProperty("policy-id", microServicePolicy.getName());
- }
- return new GsonBuilder().setPrettyPrinting().create().toJson(jsonObject);
- }
-
@Override
public int hashCode() {
final int prime = 31;