[New] Added Builder API for Strolch elements
This commit is contained in:
parent
8537bead2d
commit
015557d3e6
|
@ -0,0 +1,36 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import li.strolch.model.PolicyContainer;
|
||||
import li.strolch.model.activity.Action;
|
||||
|
||||
public class ActionBuilder extends PolicyContainerBuilder<ActionBuilder> implements ActivityElementBuilder {
|
||||
|
||||
private final ActivityBuilder builder;
|
||||
|
||||
private String resourceId;
|
||||
private String resourceType;
|
||||
|
||||
public ActionBuilder(ActivityBuilder builder, String id, String name, String type) {
|
||||
super(id, name, type);
|
||||
this.builder = builder;
|
||||
}
|
||||
|
||||
public ActivityBuilder endAction() {
|
||||
return this.builder;
|
||||
}
|
||||
|
||||
public ActionBuilder resource(String type, String id) {
|
||||
this.resourceType = type;
|
||||
this.resourceId = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Action build() {
|
||||
Action action = new Action(getId(), getName(), getType());
|
||||
action.setResourceId(this.resourceId);
|
||||
action.setResourceType(this.resourceType);
|
||||
build((PolicyContainer) action);
|
||||
return action;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.activity.TimeOrdering;
|
||||
import li.strolch.utils.dbc.DBC;
|
||||
|
||||
public class ActivityBuilder extends RootElementBuilder<ActivityBuilder> implements ActivityElementBuilder {
|
||||
|
||||
private final TemplatesBuilder templatesBuilder;
|
||||
private final ActivityBuilder parentBuilder;
|
||||
private final TimeOrdering timeOrdering;
|
||||
|
||||
private final List<ActivityElementBuilder> builders;
|
||||
|
||||
public ActivityBuilder(TemplatesBuilder builder, String id, String name, String type, TimeOrdering timeOrdering) {
|
||||
super(id, name, type);
|
||||
this.templatesBuilder = builder;
|
||||
this.parentBuilder = null;
|
||||
this.timeOrdering = timeOrdering;
|
||||
this.builders = new ArrayList<>();
|
||||
}
|
||||
|
||||
public ActivityBuilder(TemplatesBuilder builder, ActivityBuilder parentBuilder, String id, String name, String type,
|
||||
TimeOrdering timeOrdering) {
|
||||
super(id, name, type);
|
||||
this.templatesBuilder = builder;
|
||||
this.parentBuilder = parentBuilder;
|
||||
this.timeOrdering = timeOrdering;
|
||||
this.builders = new ArrayList<>();
|
||||
}
|
||||
|
||||
public ActivityBuilder subActivity(String id, String name, String type, TimeOrdering timeOrdering) {
|
||||
ActivityBuilder builder = new ActivityBuilder(this.templatesBuilder, this, id, name, type, timeOrdering);
|
||||
this.builders.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ActionBuilder action(String id, String name, String type) {
|
||||
ActionBuilder builder = new ActionBuilder(this, id, name, type);
|
||||
this.builders.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ActivityBuilder endSubActivity() {
|
||||
DBC.PRE.assertNotNull("all sub activities already closed", this.parentBuilder);
|
||||
return this.parentBuilder;
|
||||
}
|
||||
|
||||
public TemplatesBuilder endActivity() {
|
||||
return this.templatesBuilder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Activity build() {
|
||||
Activity activity = new Activity(getId(), getName(), getType(), this.timeOrdering);
|
||||
super.build(activity);
|
||||
|
||||
this.builders.forEach(b -> activity.addElement(b.build()));
|
||||
|
||||
return activity;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import li.strolch.model.activity.IActivityElement;
|
||||
|
||||
public interface ActivityElementBuilder {
|
||||
IActivityElement build();
|
||||
}
|
|
@ -0,0 +1,107 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import li.strolch.model.ParameterBag;
|
||||
import li.strolch.model.ParameterBagContainer;
|
||||
import li.strolch.model.builder.params.*;
|
||||
|
||||
public class BagBuilder<T extends ParameterBagContainerBuilder<T>> {
|
||||
|
||||
private final T builder;
|
||||
private final String id;
|
||||
private final String name;
|
||||
private final String type;
|
||||
private final List<ParameterBuilder<?, ?>> parameters;
|
||||
|
||||
public BagBuilder(T builder, String id, String name, String type) {
|
||||
this.builder = builder;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.parameters = new ArrayList<>();
|
||||
}
|
||||
|
||||
public StringParamBuilder<T> string(String id, String name) {
|
||||
StringParamBuilder<T> builder = new StringParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public TextParamBuilder<T> text(String id, String name) {
|
||||
TextParamBuilder<T> builder = new TextParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public BooleanParamBuilder<T> booleanB(String id, String name) {
|
||||
BooleanParamBuilder<T> builder = new BooleanParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public IntegerParamBuilder<T> integer(String id, String name) {
|
||||
IntegerParamBuilder<T> builder = new IntegerParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public LongParamBuilder<T> longB(String id, String name) {
|
||||
LongParamBuilder<T> builder = new LongParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public FloatParamBuilder<T> floatB(String id, String name) {
|
||||
FloatParamBuilder<T> builder = new FloatParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public DateParamBuilder<T> date(String id, String name) {
|
||||
DateParamBuilder<T> builder = new DateParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public DurationParamBuilder<T> duration(String id, String name) {
|
||||
DurationParamBuilder<T> builder = new DurationParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public StringListParamBuilder<T> stringList(String id, String name) {
|
||||
StringListParamBuilder<T> builder = new StringListParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public IntegerListParamBuilder<T> integerList(String id, String name) {
|
||||
IntegerListParamBuilder<T> builder = new IntegerListParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public LongListParamBuilder<T> longList(String id, String name) {
|
||||
LongListParamBuilder<T> builder = new LongListParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public FloatListParamBuilder<T> floatList(String id, String name) {
|
||||
FloatListParamBuilder<T> builder = new FloatListParamBuilder<>(this, id, name);
|
||||
this.parameters.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public T endBag() {
|
||||
return this.builder;
|
||||
}
|
||||
|
||||
public void build(ParameterBagContainer element) {
|
||||
ParameterBag bag = new ParameterBag(this.id, this.name, this.type);
|
||||
this.parameters.forEach(b -> bag.addParameter(b.build()));
|
||||
element.addParameterBag(bag);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import li.strolch.model.Order;
|
||||
import li.strolch.model.State;
|
||||
import li.strolch.utils.iso8601.ISO8601;
|
||||
|
||||
public class OrderBuilder extends RootElementBuilder<OrderBuilder> {
|
||||
|
||||
private final TemplatesBuilder builder;
|
||||
|
||||
public OrderBuilder(TemplatesBuilder builder, String id, String name, String type) {
|
||||
super(id, name, type);
|
||||
this.builder = builder;
|
||||
}
|
||||
|
||||
public TemplatesBuilder endOrder() {
|
||||
return this.builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Order build() {
|
||||
Order order = new Order(getId(), getName(), getType());
|
||||
super.build(order);
|
||||
order.setDate(ISO8601.EMPTY_VALUE_ZONED_DATE);
|
||||
order.setState(State.CREATED);
|
||||
return order;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,192 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import static java.util.Collections.emptyList;
|
||||
import static li.strolch.model.StrolchModelConstants.*;
|
||||
import static li.strolch.model.StrolchModelConstants.PolicyConstants.BAG_OBJECTIVES;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import li.strolch.model.ParameterBag;
|
||||
import li.strolch.model.ParameterBagContainer;
|
||||
import li.strolch.model.Tags;
|
||||
import li.strolch.model.parameter.StringListParameter;
|
||||
import li.strolch.model.parameter.StringParameter;
|
||||
|
||||
public abstract class ParameterBagContainerBuilder<T extends ParameterBagContainerBuilder<T>> {
|
||||
|
||||
private final String id;
|
||||
private final String type;
|
||||
private final String name;
|
||||
|
||||
private final Map<String, BagBuilder<T>> parametersBags;
|
||||
private final Map<String, String[]> singleRelations;
|
||||
private final Map<String, String[]> multiRelations;
|
||||
|
||||
public ParameterBagContainerBuilder(String id, String name, String type) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
|
||||
this.parametersBags = new HashMap<>();
|
||||
this.singleRelations = new HashMap<>();
|
||||
this.multiRelations = new HashMap<>();
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public BagBuilder<T> defaultBag() {
|
||||
return bag(BAG_PARAMETERS, TYPE_PARAMETERS, TYPE_PARAMETERS);
|
||||
}
|
||||
|
||||
public BagBuilder<T> objectivesBag() {
|
||||
return bag(BAG_OBJECTIVES, TYPE_OBJECTIVES, TYPE_OBJECTIVES);
|
||||
}
|
||||
|
||||
public BagBuilder<T> relationsBag() {
|
||||
return bag(BAG_RELATIONS, TYPE_RELATIONS, TYPE_RELATIONS);
|
||||
}
|
||||
|
||||
public BagBuilder<T> bag(String id, String name, String type) {
|
||||
@SuppressWarnings("unchecked")
|
||||
BagBuilder<T> bagBuilder = new BagBuilder<>((T) this, id, name, type);
|
||||
if (this.parametersBags.put(id, bagBuilder) != null)
|
||||
throw new IllegalArgumentException("Bag builder for " + id + " already exists!");
|
||||
return bagBuilder;
|
||||
}
|
||||
|
||||
private String buildParamId(String type) {
|
||||
return Character.toLowerCase(type.charAt(0)) + type.substring(1);
|
||||
}
|
||||
|
||||
public T resourceRelation(String type) {
|
||||
return resourceRelation(buildParamId(type), type, type);
|
||||
}
|
||||
|
||||
public T resourceRelation(String paramId, String paramName, String type) {
|
||||
assertNotMapped(paramId);
|
||||
this.singleRelations.put(paramId, new String[] { paramName, type, Tags.RESOURCE });
|
||||
@SuppressWarnings("unchecked")
|
||||
T t = (T) this;
|
||||
return t;
|
||||
}
|
||||
|
||||
public T resourceRelations(String type) {
|
||||
return resourceRelations(buildParamId(type), type + "s", type);
|
||||
}
|
||||
|
||||
public T resourceRelations(String paramId, String paramName, String type) {
|
||||
assertNotMapped(paramId);
|
||||
this.multiRelations.put(paramId, new String[] { paramName, type, Tags.RESOURCE });
|
||||
@SuppressWarnings("unchecked")
|
||||
T t = (T) this;
|
||||
return t;
|
||||
}
|
||||
|
||||
public T orderRelation(String type) {
|
||||
return orderRelation(buildParamId(type), type, type);
|
||||
}
|
||||
|
||||
public T orderRelation(String paramId, String paramName, String type) {
|
||||
assertNotMapped(paramId);
|
||||
this.singleRelations.put(paramId, new String[] { paramName, type, Tags.ORDER });
|
||||
@SuppressWarnings("unchecked")
|
||||
T t = (T) this;
|
||||
return t;
|
||||
}
|
||||
|
||||
public T orderRelations(String type) {
|
||||
return orderRelations(buildParamId(type), type + "s", type);
|
||||
}
|
||||
|
||||
public T orderRelations(String paramId, String paramName, String type) {
|
||||
assertNotMapped(paramId);
|
||||
this.multiRelations.put(paramId, new String[] { paramName, type, Tags.ORDER });
|
||||
@SuppressWarnings("unchecked")
|
||||
T t = (T) this;
|
||||
return t;
|
||||
}
|
||||
|
||||
public T activityRelation(String type) {
|
||||
return activityRelation(buildParamId(type), type, type);
|
||||
}
|
||||
|
||||
public T activityRelation(String paramId, String paramName, String type) {
|
||||
assertNotMapped(paramId);
|
||||
this.singleRelations.put(paramId, new String[] { paramName, type, Tags.ACTIVITY });
|
||||
@SuppressWarnings("unchecked")
|
||||
T t = (T) this;
|
||||
return t;
|
||||
}
|
||||
|
||||
public T activityRelations(String type) {
|
||||
return activityRelations(buildParamId(type), type + "s", type);
|
||||
}
|
||||
|
||||
public T activityRelations(String paramId, String paramName, String type) {
|
||||
assertNotMapped(paramId);
|
||||
this.multiRelations.put(paramId, new String[] { paramName, type, Tags.ACTIVITY });
|
||||
@SuppressWarnings("unchecked")
|
||||
T t = (T) this;
|
||||
return t;
|
||||
}
|
||||
|
||||
private void assertNotMapped(String paramId) {
|
||||
if (this.multiRelations.containsKey(paramId) || this.singleRelations.containsKey(paramId))
|
||||
throw new IllegalStateException("Mapping already exists for " + paramId);
|
||||
}
|
||||
|
||||
protected void build(ParameterBagContainer element) {
|
||||
|
||||
this.parametersBags.values().forEach(bagBuilder -> bagBuilder.build(element));
|
||||
|
||||
this.singleRelations.forEach((paramId, keys) -> {
|
||||
ParameterBag relationsBag = getRelationsBag(element);
|
||||
StringParameter relationP = new StringParameter(paramId, keys[0], "");
|
||||
relationP.setInterpretation(getInterpretation(keys[2]));
|
||||
relationP.setUom(keys[1]);
|
||||
relationsBag.addParameter(relationP);
|
||||
});
|
||||
|
||||
this.multiRelations.forEach((paramId, keys) -> {
|
||||
ParameterBag relationsBag = getRelationsBag(element);
|
||||
StringListParameter relationP = new StringListParameter(paramId, keys[0], emptyList());
|
||||
relationP.setInterpretation(getInterpretation(keys[2]));
|
||||
relationP.setUom(keys[1]);
|
||||
relationsBag.addParameter(relationP);
|
||||
});
|
||||
}
|
||||
|
||||
protected String getInterpretation(String objectType) {
|
||||
switch (objectType) {
|
||||
case Tags.RESOURCE:
|
||||
return INTERPRETATION_RESOURCE_REF;
|
||||
case Tags.ORDER:
|
||||
return INTERPRETATION_ORDER_REF;
|
||||
case Tags.ACTIVITY:
|
||||
return INTERPRETATION_ACTIVITY_REF;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unexpected object type " + objectType);
|
||||
}
|
||||
}
|
||||
|
||||
private ParameterBag getRelationsBag(ParameterBagContainer element) {
|
||||
ParameterBag relationsBag = element.getParameterBag(BAG_RELATIONS);
|
||||
if (relationsBag == null) {
|
||||
relationsBag = new ParameterBag(BAG_RELATIONS, TYPE_RELATIONS, TYPE_RELATIONS);
|
||||
element.addParameterBag(relationsBag);
|
||||
}
|
||||
|
||||
return relationsBag;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import li.strolch.model.PolicyContainer;
|
||||
import li.strolch.model.policy.PolicyDef;
|
||||
import li.strolch.model.policy.PolicyDefs;
|
||||
|
||||
public class PoliciesBuilder<T extends ParameterBagContainerBuilder<T>> {
|
||||
|
||||
private final T builder;
|
||||
private final PolicyDefs policyDefs;
|
||||
|
||||
public PoliciesBuilder(T builder) {
|
||||
this.builder = builder;
|
||||
this.policyDefs = new PolicyDefs();
|
||||
}
|
||||
|
||||
public PoliciesBuilder<T> planning(String value) {
|
||||
return policy("PlanningPolicy", value);
|
||||
}
|
||||
|
||||
public PoliciesBuilder<T> execution(String value) {
|
||||
return policy("ExecutionPolicy", value);
|
||||
}
|
||||
|
||||
public PoliciesBuilder<T> confirmation(String value) {
|
||||
return policy("ConfirmationPolicy", value);
|
||||
}
|
||||
|
||||
public PoliciesBuilder<T> policy(String type, String value) {
|
||||
this.policyDefs.addOrUpdate(PolicyDef.valueOf(type, value));
|
||||
return this;
|
||||
}
|
||||
|
||||
public T endPolicies() {
|
||||
return builder;
|
||||
}
|
||||
|
||||
public void build(PolicyContainer element) {
|
||||
element.setPolicyDefs(this.policyDefs.getClone());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import li.strolch.model.ParameterBagContainer;
|
||||
import li.strolch.model.PolicyContainer;
|
||||
|
||||
public class PolicyContainerBuilder<T extends ParameterBagContainerBuilder<T>> extends ParameterBagContainerBuilder<T> {
|
||||
|
||||
private PoliciesBuilder<T> policies;
|
||||
|
||||
public PolicyContainerBuilder(String id, String name, String type) {
|
||||
super(id, name, type);
|
||||
}
|
||||
|
||||
public PoliciesBuilder<T> policies() {
|
||||
if (this.policies == null) {
|
||||
@SuppressWarnings("unchecked")
|
||||
T t = (T) this;
|
||||
this.policies = new PoliciesBuilder<T>(t);
|
||||
}
|
||||
return policies;
|
||||
}
|
||||
|
||||
protected void build(PolicyContainer element) {
|
||||
build((ParameterBagContainer) element);
|
||||
|
||||
if (this.policies != null)
|
||||
this.policies.build(element);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import li.strolch.model.Resource;
|
||||
import li.strolch.model.builder.states.*;
|
||||
|
||||
public class ResourceBuilder extends RootElementBuilder<ResourceBuilder> {
|
||||
|
||||
private final TemplatesBuilder builder;
|
||||
private final List<TimedStateBuilder<?>> timedStates;
|
||||
|
||||
public ResourceBuilder(TemplatesBuilder builder, String id, String name, String type) {
|
||||
super(id, name, type);
|
||||
this.builder = builder;
|
||||
this.timedStates = new ArrayList<>();
|
||||
}
|
||||
|
||||
public BooleanStateBuilder booleanState(String id, String name) {
|
||||
BooleanStateBuilder builder = new BooleanStateBuilder(this, id, name);
|
||||
this.timedStates.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public FloatStateBuilder floatState(String id, String name) {
|
||||
FloatStateBuilder builder = new FloatStateBuilder(this, id, name);
|
||||
this.timedStates.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public IntegerStateBuilder integerState(String id, String name) {
|
||||
IntegerStateBuilder builder = new IntegerStateBuilder(this, id, name);
|
||||
this.timedStates.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public LongStateBuilder longState(String id, String name) {
|
||||
LongStateBuilder builder = new LongStateBuilder(this, id, name);
|
||||
this.timedStates.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public FloatListStateBuilder floatListState(String id, String name) {
|
||||
FloatListStateBuilder builder = new FloatListStateBuilder(this, id, name);
|
||||
this.timedStates.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public StringSetStateBuilder stringSetState(String id, String name) {
|
||||
StringSetStateBuilder builder = new StringSetStateBuilder(this, id, name);
|
||||
this.timedStates.add(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public TemplatesBuilder endResource() {
|
||||
return this.builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource build() {
|
||||
Resource resource = new Resource(getId(), getName(), getType());
|
||||
super.build(resource);
|
||||
this.timedStates.forEach(b -> resource.addTimedState(b.build()));
|
||||
return resource;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import li.strolch.model.PolicyContainer;
|
||||
import li.strolch.model.StrolchRootElement;
|
||||
|
||||
public abstract class RootElementBuilder<T extends ParameterBagContainerBuilder<T>> extends PolicyContainerBuilder<T> {
|
||||
|
||||
public RootElementBuilder(String id, String name, String type) {
|
||||
super(id, name, type);
|
||||
}
|
||||
|
||||
protected void build(StrolchRootElement element) {
|
||||
build((PolicyContainer) element);
|
||||
}
|
||||
|
||||
public abstract StrolchRootElement build();
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package li.strolch.model.builder;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static li.strolch.model.StrolchModelConstants.TEMPLATE;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import li.strolch.model.StrolchRootElement;
|
||||
import li.strolch.model.Tags;
|
||||
import li.strolch.model.activity.TimeOrdering;
|
||||
import li.strolch.utils.collections.MapOfMaps;
|
||||
|
||||
public class TemplatesBuilder {
|
||||
|
||||
private final MapOfMaps<String, String, RootElementBuilder<?>> builders;
|
||||
|
||||
public TemplatesBuilder() {
|
||||
this.builders = new MapOfMaps<>();
|
||||
}
|
||||
|
||||
public ResourceBuilder resource(String name, String type) {
|
||||
ResourceBuilder builder = new ResourceBuilder(this, type, name, TEMPLATE);
|
||||
this.builders.addElement(Tags.Json.RESOURCE, type, builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public OrderBuilder order(String name, String type) {
|
||||
OrderBuilder builder = new OrderBuilder(this, type, name, TEMPLATE);
|
||||
this.builders.addElement(Tags.Json.ORDER, type, builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public ActivityBuilder activity(String name, String type, TimeOrdering timeOrdering) {
|
||||
ActivityBuilder builder = new ActivityBuilder(this, type, name, TEMPLATE, timeOrdering);
|
||||
this.builders.addElement(Tags.Json.ACTIVITY, type, builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
public List<StrolchRootElement> buildTemplates() {
|
||||
return this.builders.streamValues().map(RootElementBuilder::build).collect(toList());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.BooleanParameter;
|
||||
|
||||
public class BooleanParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<BooleanParameter, T> {
|
||||
|
||||
public BooleanParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BooleanParameter build() {
|
||||
return build(new BooleanParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.DateParameter;
|
||||
|
||||
public class DateParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<DateParameter, T> {
|
||||
|
||||
public DateParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DateParameter build() {
|
||||
return build(new DateParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.DurationParameter;
|
||||
|
||||
public class DurationParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<DurationParameter, T> {
|
||||
|
||||
public DurationParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DurationParameter build() {
|
||||
return build(new DurationParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.FloatListParameter;
|
||||
|
||||
public class FloatListParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<FloatListParameter, T> {
|
||||
|
||||
public FloatListParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FloatListParameter build() {
|
||||
return build(new FloatListParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.FloatParameter;
|
||||
|
||||
public class FloatParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<FloatParameter, T> {
|
||||
|
||||
public FloatParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FloatParameter build() {
|
||||
return build(new FloatParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.IntegerListParameter;
|
||||
|
||||
public class IntegerListParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<IntegerListParameter, T> {
|
||||
|
||||
public IntegerListParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntegerListParameter build() {
|
||||
return build(new IntegerListParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.IntegerParameter;
|
||||
|
||||
public class IntegerParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<IntegerParameter, T> {
|
||||
|
||||
public IntegerParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntegerParameter build() {
|
||||
return build(new IntegerParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.LongListParameter;
|
||||
|
||||
public class LongListParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<LongListParameter, T> {
|
||||
|
||||
public LongListParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongListParameter build() {
|
||||
return build(new LongListParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.LongParameter;
|
||||
|
||||
public class LongParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<LongParameter, T> {
|
||||
|
||||
public LongParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongParameter build() {
|
||||
return build(new LongParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import static li.strolch.model.StrolchModelConstants.INTERPRETATION_NONE;
|
||||
import static li.strolch.model.StrolchModelConstants.UOM_NONE;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.Parameter;
|
||||
|
||||
public abstract class ParameterBuilder<S extends Parameter<?>, T extends ParameterBagContainerBuilder<T>> {
|
||||
|
||||
private final BagBuilder<T> builder;
|
||||
|
||||
protected final String id;
|
||||
protected final String name;
|
||||
|
||||
protected boolean hidden = false;
|
||||
protected int index;
|
||||
protected String interpretation = INTERPRETATION_NONE;
|
||||
protected String uom = UOM_NONE;
|
||||
|
||||
public ParameterBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
this.builder = builder;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public ParameterBuilder<S, T> hidden(boolean hidden) {
|
||||
this.hidden = hidden;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ParameterBuilder<S, T> index(int index) {
|
||||
this.index = index;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ParameterBuilder<S, T> interpretation(String interpretation) {
|
||||
this.interpretation = interpretation;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ParameterBuilder<S, T> uom(String uom) {
|
||||
this.uom = uom;
|
||||
return this;
|
||||
}
|
||||
|
||||
public BagBuilder<T> end() {
|
||||
return this.builder;
|
||||
}
|
||||
|
||||
protected S build(S parameter) {
|
||||
parameter.setId(this.id);
|
||||
parameter.setName(this.name);
|
||||
parameter.setHidden(this.hidden);
|
||||
parameter.setIndex(this.index);
|
||||
parameter.setInterpretation(this.interpretation);
|
||||
parameter.setUom(this.uom);
|
||||
return parameter;
|
||||
}
|
||||
|
||||
public abstract S build();
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.StringListParameter;
|
||||
|
||||
public class StringListParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<StringListParameter, T> {
|
||||
|
||||
public StringListParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StringListParameter build() {
|
||||
return build(new StringListParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.StringParameter;
|
||||
|
||||
public class StringParamBuilder<T extends ParameterBagContainerBuilder<T>> extends ParameterBuilder<StringParameter,T> {
|
||||
|
||||
public StringParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StringParameter build() {
|
||||
return build(new StringParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package li.strolch.model.builder.params;
|
||||
|
||||
import li.strolch.model.builder.BagBuilder;
|
||||
import li.strolch.model.builder.ParameterBagContainerBuilder;
|
||||
import li.strolch.model.parameter.TextParameter;
|
||||
|
||||
public class TextParamBuilder<T extends ParameterBagContainerBuilder<T>>
|
||||
extends ParameterBuilder<TextParameter, T> {
|
||||
|
||||
public TextParamBuilder(BagBuilder<T> builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextParameter build() {
|
||||
return build(new TextParameter());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package li.strolch.model.builder.states;
|
||||
|
||||
import li.strolch.model.builder.ResourceBuilder;
|
||||
import li.strolch.model.timedstate.BooleanTimedState;
|
||||
|
||||
public class BooleanStateBuilder extends TimedStateBuilder<BooleanTimedState> {
|
||||
|
||||
public BooleanStateBuilder(ResourceBuilder builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BooleanTimedState build() {
|
||||
return build(new BooleanTimedState());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package li.strolch.model.builder.states;
|
||||
|
||||
import li.strolch.model.builder.ResourceBuilder;
|
||||
import li.strolch.model.timedstate.FloatListTimedState;
|
||||
|
||||
public class FloatListStateBuilder extends TimedStateBuilder<FloatListTimedState> {
|
||||
|
||||
public FloatListStateBuilder(ResourceBuilder builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FloatListTimedState build() {
|
||||
return build(new FloatListTimedState());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package li.strolch.model.builder.states;
|
||||
|
||||
import li.strolch.model.builder.ResourceBuilder;
|
||||
import li.strolch.model.timedstate.FloatTimedState;
|
||||
|
||||
public class FloatStateBuilder extends TimedStateBuilder<FloatTimedState> {
|
||||
|
||||
public FloatStateBuilder(ResourceBuilder builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FloatTimedState build() {
|
||||
return build(new FloatTimedState());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package li.strolch.model.builder.states;
|
||||
|
||||
import li.strolch.model.builder.ResourceBuilder;
|
||||
import li.strolch.model.timedstate.IntegerTimedState;
|
||||
|
||||
public class IntegerStateBuilder extends TimedStateBuilder<IntegerTimedState> {
|
||||
|
||||
public IntegerStateBuilder(ResourceBuilder builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntegerTimedState build() {
|
||||
return build(new IntegerTimedState());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package li.strolch.model.builder.states;
|
||||
|
||||
import li.strolch.model.builder.ResourceBuilder;
|
||||
import li.strolch.model.timedstate.LongTimedState;
|
||||
|
||||
public class LongStateBuilder extends TimedStateBuilder<LongTimedState> {
|
||||
|
||||
public LongStateBuilder(ResourceBuilder builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongTimedState build() {
|
||||
return build(new LongTimedState());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package li.strolch.model.builder.states;
|
||||
|
||||
import li.strolch.model.builder.ResourceBuilder;
|
||||
import li.strolch.model.timedstate.StringSetTimedState;
|
||||
|
||||
public class StringSetStateBuilder extends TimedStateBuilder<StringSetTimedState> {
|
||||
|
||||
public StringSetStateBuilder(ResourceBuilder builder, String id, String name) {
|
||||
super(builder, id, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StringSetTimedState build() {
|
||||
return build(new StringSetTimedState());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package li.strolch.model.builder.states;
|
||||
|
||||
import static li.strolch.model.StrolchModelConstants.INTERPRETATION_NONE;
|
||||
import static li.strolch.model.StrolchModelConstants.UOM_NONE;
|
||||
|
||||
import li.strolch.model.builder.ResourceBuilder;
|
||||
import li.strolch.model.timedstate.StrolchTimedState;
|
||||
|
||||
public abstract class TimedStateBuilder<T extends StrolchTimedState<?>> {
|
||||
|
||||
private final ResourceBuilder builder;
|
||||
protected final String id;
|
||||
protected final String name;
|
||||
|
||||
protected boolean hidden = false;
|
||||
protected int index;
|
||||
protected String interpretation = INTERPRETATION_NONE;
|
||||
protected String uom = UOM_NONE;
|
||||
|
||||
public TimedStateBuilder(ResourceBuilder builder, String id, String name) {
|
||||
this.builder = builder;
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public ResourceBuilder end() {
|
||||
return this.builder;
|
||||
}
|
||||
|
||||
public abstract T build();
|
||||
|
||||
protected T build(T state) {
|
||||
state.setId(this.id);
|
||||
state.setName(this.name);
|
||||
state.setHidden(this.hidden);
|
||||
state.setIndex(this.index);
|
||||
state.setInterpretation(this.interpretation);
|
||||
state.setUom(this.uom);
|
||||
return state;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue