[New] Extended builder pattern
This commit is contained in:
parent
a9067bf161
commit
7b9f2f867f
|
@ -84,6 +84,7 @@ public class StrolchModelConstants {
|
||||||
public static final String TYPE_OBJECTIVES = "Objectives";
|
public static final String TYPE_OBJECTIVES = "Objectives";
|
||||||
public static final String TYPE_METRIC = "Metric";
|
public static final String TYPE_METRIC = "Metric";
|
||||||
public static final String TYPE_NOTIFICATION = "Notification";
|
public static final String TYPE_NOTIFICATION = "Notification";
|
||||||
|
public static final String TYPE_VISIBILITY = "Visibility";
|
||||||
public static final String TYPE_TEXT = "Text";
|
public static final String TYPE_TEXT = "Text";
|
||||||
|
|
||||||
public static final String RES_CONFIGURATION = "configuration";
|
public static final String RES_CONFIGURATION = "configuration";
|
||||||
|
@ -106,6 +107,7 @@ public class StrolchModelConstants {
|
||||||
public static final String PARAM_VISIBLE_TO = "visibleTo";
|
public static final String PARAM_VISIBLE_TO = "visibleTo";
|
||||||
public static final String PARAM_FOR_ALL = "forAll";
|
public static final String PARAM_FOR_ALL = "forAll";
|
||||||
public static final String PARAM_ROLES = "roles";
|
public static final String PARAM_ROLES = "roles";
|
||||||
|
public static final String PARAM_LOCATIONS = "locations";
|
||||||
public static final String PARAM_GROUPS = "groups";
|
public static final String PARAM_GROUPS = "groups";
|
||||||
|
|
||||||
public static class PolicyConstants {
|
public static class PolicyConstants {
|
||||||
|
|
|
@ -4,6 +4,8 @@ import li.strolch.model.PolicyContainer;
|
||||||
import li.strolch.model.activity.Action;
|
import li.strolch.model.activity.Action;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.buildParamName;
|
||||||
|
|
||||||
public class ActionBuilder extends PolicyContainerBuilder<ActionBuilder> implements ActivityElementBuilder {
|
public class ActionBuilder extends PolicyContainerBuilder<ActionBuilder> implements ActivityElementBuilder {
|
||||||
|
|
||||||
private final ActivityBuilder builder;
|
private final ActivityBuilder builder;
|
||||||
|
@ -11,11 +13,19 @@ public class ActionBuilder extends PolicyContainerBuilder<ActionBuilder> impleme
|
||||||
private String resourceId;
|
private String resourceId;
|
||||||
private String resourceType;
|
private String resourceType;
|
||||||
|
|
||||||
|
public ActionBuilder(String id, String type) {
|
||||||
|
this(id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public ActionBuilder(String id, String name, String type) {
|
public ActionBuilder(String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
this.builder = null;
|
this.builder = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActionBuilder(ActivityBuilder builder, String id, String type) {
|
||||||
|
this(builder, id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public ActionBuilder(ActivityBuilder builder, String id, String name, String type) {
|
public ActionBuilder(ActivityBuilder builder, String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
|
|
|
@ -7,6 +7,8 @@ import li.strolch.model.activity.Activity;
|
||||||
import li.strolch.model.activity.TimeOrdering;
|
import li.strolch.model.activity.TimeOrdering;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.*;
|
||||||
|
|
||||||
public class ActivityBuilder extends RootElementBuilder<ActivityBuilder> implements ActivityElementBuilder {
|
public class ActivityBuilder extends RootElementBuilder<ActivityBuilder> implements ActivityElementBuilder {
|
||||||
|
|
||||||
private final StrolchElementBuilder builder;
|
private final StrolchElementBuilder builder;
|
||||||
|
@ -15,6 +17,10 @@ public class ActivityBuilder extends RootElementBuilder<ActivityBuilder> impleme
|
||||||
|
|
||||||
private final List<ActivityElementBuilder> builders;
|
private final List<ActivityElementBuilder> builders;
|
||||||
|
|
||||||
|
public ActivityBuilder(String id, String type, TimeOrdering timeOrdering) {
|
||||||
|
this(id, buildParamName(id), type, timeOrdering);
|
||||||
|
}
|
||||||
|
|
||||||
public ActivityBuilder(String id, String name, String type, TimeOrdering timeOrdering) {
|
public ActivityBuilder(String id, String name, String type, TimeOrdering timeOrdering) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
this.builder = null;
|
this.builder = null;
|
||||||
|
@ -23,6 +29,10 @@ public class ActivityBuilder extends RootElementBuilder<ActivityBuilder> impleme
|
||||||
this.builders = new ArrayList<>();
|
this.builders = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActivityBuilder(StrolchElementBuilder builder, String id, String type, TimeOrdering timeOrdering) {
|
||||||
|
this(builder, id, buildParamName(id), type, timeOrdering);
|
||||||
|
}
|
||||||
|
|
||||||
public ActivityBuilder(StrolchElementBuilder builder, String id, String name, String type,
|
public ActivityBuilder(StrolchElementBuilder builder, String id, String name, String type,
|
||||||
TimeOrdering timeOrdering) {
|
TimeOrdering timeOrdering) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
|
@ -32,6 +42,11 @@ public class ActivityBuilder extends RootElementBuilder<ActivityBuilder> impleme
|
||||||
this.builders = new ArrayList<>();
|
this.builders = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActivityBuilder(StrolchElementBuilder builder, ActivityBuilder parentBuilder, String id, String type,
|
||||||
|
TimeOrdering timeOrdering) {
|
||||||
|
this(builder, parentBuilder, id, buildParamName(id), type, timeOrdering);
|
||||||
|
}
|
||||||
|
|
||||||
public ActivityBuilder(StrolchElementBuilder builder, ActivityBuilder parentBuilder, String id, String name,
|
public ActivityBuilder(StrolchElementBuilder builder, ActivityBuilder parentBuilder, String id, String name,
|
||||||
String type, TimeOrdering timeOrdering) {
|
String type, TimeOrdering timeOrdering) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
|
@ -41,12 +56,20 @@ public class ActivityBuilder extends RootElementBuilder<ActivityBuilder> impleme
|
||||||
this.builders = new ArrayList<>();
|
this.builders = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActivityBuilder subActivity(String id, String type, TimeOrdering timeOrdering) {
|
||||||
|
return subActivity(id, buildParamName(id), type, timeOrdering);
|
||||||
|
}
|
||||||
|
|
||||||
public ActivityBuilder subActivity(String id, String name, String type, TimeOrdering timeOrdering) {
|
public ActivityBuilder subActivity(String id, String name, String type, TimeOrdering timeOrdering) {
|
||||||
ActivityBuilder builder = new ActivityBuilder(this.builder, this, id, name, type, timeOrdering);
|
ActivityBuilder builder = new ActivityBuilder(this.builder, this, id, name, type, timeOrdering);
|
||||||
this.builders.add(builder);
|
this.builders.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ActionBuilder action(String id, String type) {
|
||||||
|
return action(id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public ActionBuilder action(String id, String name, String type) {
|
public ActionBuilder action(String id, String name, String type) {
|
||||||
ActionBuilder builder = new ActionBuilder(this, id, name, type);
|
ActionBuilder builder = new ActionBuilder(this, id, name, type);
|
||||||
this.builders.add(builder);
|
this.builders.add(builder);
|
||||||
|
|
|
@ -7,6 +7,8 @@ import li.strolch.model.ParameterBag;
|
||||||
import li.strolch.model.ParameterBagContainer;
|
import li.strolch.model.ParameterBagContainer;
|
||||||
import li.strolch.model.builder.params.*;
|
import li.strolch.model.builder.params.*;
|
||||||
|
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.buildParamName;
|
||||||
|
|
||||||
public class BagBuilder<T extends ParameterBagContainerBuilder<T>> {
|
public class BagBuilder<T extends ParameterBagContainerBuilder<T>> {
|
||||||
|
|
||||||
private final T builder;
|
private final T builder;
|
||||||
|
@ -15,6 +17,10 @@ public class BagBuilder<T extends ParameterBagContainerBuilder<T>> {
|
||||||
private final String type;
|
private final String type;
|
||||||
private final List<ParameterBuilder<?, ?, ?>> parameters;
|
private final List<ParameterBuilder<?, ?, ?>> parameters;
|
||||||
|
|
||||||
|
public BagBuilder(T builder, String id, String type) {
|
||||||
|
this(builder, id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public BagBuilder(T builder, String id, String name, String type) {
|
public BagBuilder(T builder, String id, String name, String type) {
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
@ -23,72 +29,120 @@ public class BagBuilder<T extends ParameterBagContainerBuilder<T>> {
|
||||||
this.parameters = new ArrayList<>();
|
this.parameters = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StringParamBuilder<T> string(String id) {
|
||||||
|
return string(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public StringParamBuilder<T> string(String id, String name) {
|
public StringParamBuilder<T> string(String id, String name) {
|
||||||
StringParamBuilder<T> builder = new StringParamBuilder<>(this, id, name);
|
StringParamBuilder<T> builder = new StringParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TextParamBuilder<T> text(String id) {
|
||||||
|
return text(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public TextParamBuilder<T> text(String id, String name) {
|
public TextParamBuilder<T> text(String id, String name) {
|
||||||
TextParamBuilder<T> builder = new TextParamBuilder<>(this, id, name);
|
TextParamBuilder<T> builder = new TextParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BooleanParamBuilder<T> booleanB(String id) {
|
||||||
|
return booleanB(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public BooleanParamBuilder<T> booleanB(String id, String name) {
|
public BooleanParamBuilder<T> booleanB(String id, String name) {
|
||||||
BooleanParamBuilder<T> builder = new BooleanParamBuilder<>(this, id, name);
|
BooleanParamBuilder<T> builder = new BooleanParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IntegerParamBuilder<T> integer(String id) {
|
||||||
|
return integer(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public IntegerParamBuilder<T> integer(String id, String name) {
|
public IntegerParamBuilder<T> integer(String id, String name) {
|
||||||
IntegerParamBuilder<T> builder = new IntegerParamBuilder<>(this, id, name);
|
IntegerParamBuilder<T> builder = new IntegerParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LongParamBuilder<T> longB(String id) {
|
||||||
|
return longB(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public LongParamBuilder<T> longB(String id, String name) {
|
public LongParamBuilder<T> longB(String id, String name) {
|
||||||
LongParamBuilder<T> builder = new LongParamBuilder<>(this, id, name);
|
LongParamBuilder<T> builder = new LongParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FloatParamBuilder<T> floatB(String id) {
|
||||||
|
return floatB(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public FloatParamBuilder<T> floatB(String id, String name) {
|
public FloatParamBuilder<T> floatB(String id, String name) {
|
||||||
FloatParamBuilder<T> builder = new FloatParamBuilder<>(this, id, name);
|
FloatParamBuilder<T> builder = new FloatParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DateParamBuilder<T> date(String id) {
|
||||||
|
return date(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public DateParamBuilder<T> date(String id, String name) {
|
public DateParamBuilder<T> date(String id, String name) {
|
||||||
DateParamBuilder<T> builder = new DateParamBuilder<>(this, id, name);
|
DateParamBuilder<T> builder = new DateParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DurationParamBuilder<T> duration(String id) {
|
||||||
|
return duration(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public DurationParamBuilder<T> duration(String id, String name) {
|
public DurationParamBuilder<T> duration(String id, String name) {
|
||||||
DurationParamBuilder<T> builder = new DurationParamBuilder<>(this, id, name);
|
DurationParamBuilder<T> builder = new DurationParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StringListParamBuilder<T> stringList(String id) {
|
||||||
|
return stringList(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public StringListParamBuilder<T> stringList(String id, String name) {
|
public StringListParamBuilder<T> stringList(String id, String name) {
|
||||||
StringListParamBuilder<T> builder = new StringListParamBuilder<>(this, id, name);
|
StringListParamBuilder<T> builder = new StringListParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IntegerListParamBuilder<T> integerList(String id) {
|
||||||
|
return integerList(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public IntegerListParamBuilder<T> integerList(String id, String name) {
|
public IntegerListParamBuilder<T> integerList(String id, String name) {
|
||||||
IntegerListParamBuilder<T> builder = new IntegerListParamBuilder<>(this, id, name);
|
IntegerListParamBuilder<T> builder = new IntegerListParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LongListParamBuilder<T> longList(String id) {
|
||||||
|
return longList(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public LongListParamBuilder<T> longList(String id, String name) {
|
public LongListParamBuilder<T> longList(String id, String name) {
|
||||||
LongListParamBuilder<T> builder = new LongListParamBuilder<>(this, id, name);
|
LongListParamBuilder<T> builder = new LongListParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FloatListParamBuilder<T> floatList(String id) {
|
||||||
|
return floatList(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public FloatListParamBuilder<T> floatList(String id, String name) {
|
public FloatListParamBuilder<T> floatList(String id, String name) {
|
||||||
FloatListParamBuilder<T> builder = new FloatListParamBuilder<>(this, id, name);
|
FloatListParamBuilder<T> builder = new FloatListParamBuilder<>(this, id, name);
|
||||||
this.parameters.add(builder);
|
this.parameters.add(builder);
|
||||||
|
|
|
@ -5,15 +5,25 @@ import li.strolch.model.State;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
import li.strolch.utils.iso8601.ISO8601;
|
import li.strolch.utils.iso8601.ISO8601;
|
||||||
|
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.*;
|
||||||
|
|
||||||
public class OrderBuilder extends RootElementBuilder<OrderBuilder> {
|
public class OrderBuilder extends RootElementBuilder<OrderBuilder> {
|
||||||
|
|
||||||
private final StrolchElementBuilder builder;
|
private final StrolchElementBuilder builder;
|
||||||
|
|
||||||
|
public OrderBuilder(String id, String type) {
|
||||||
|
this(id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public OrderBuilder(String id, String name, String type) {
|
public OrderBuilder(String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
this.builder = null;
|
this.builder = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OrderBuilder(StrolchElementBuilder builder, String id, String type) {
|
||||||
|
this(builder, id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public OrderBuilder(StrolchElementBuilder builder, String id, String name, String type) {
|
public OrderBuilder(StrolchElementBuilder builder, String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
package li.strolch.model.builder;
|
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 static li.strolch.model.builder.BuilderHelper.buildParamId;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import li.strolch.model.ParameterBag;
|
import li.strolch.model.ParameterBag;
|
||||||
import li.strolch.model.ParameterBagContainer;
|
import li.strolch.model.ParameterBagContainer;
|
||||||
import li.strolch.model.Tags;
|
import li.strolch.model.Tags;
|
||||||
import li.strolch.model.parameter.StringListParameter;
|
import li.strolch.model.parameter.StringListParameter;
|
||||||
import li.strolch.model.parameter.StringParameter;
|
import li.strolch.model.parameter.StringParameter;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static java.util.Collections.emptyList;
|
||||||
|
import static li.strolch.model.StrolchModelConstants.*;
|
||||||
|
import static li.strolch.model.StrolchModelConstants.PolicyConstants.BAG_OBJECTIVES;
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.buildParamId;
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.buildParamName;
|
||||||
|
|
||||||
public abstract class ParameterBagContainerBuilder<T extends ParameterBagContainerBuilder<T>> {
|
public abstract class ParameterBagContainerBuilder<T extends ParameterBagContainerBuilder<T>> {
|
||||||
|
|
||||||
private final String id;
|
private final String id;
|
||||||
|
@ -24,6 +25,10 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
private final Map<String, String[]> singleRelations;
|
private final Map<String, String[]> singleRelations;
|
||||||
private final Map<String, String[]> multiRelations;
|
private final Map<String, String[]> multiRelations;
|
||||||
|
|
||||||
|
public ParameterBagContainerBuilder(String id, String type) {
|
||||||
|
this(id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public ParameterBagContainerBuilder(String id, String name, String type) {
|
public ParameterBagContainerBuilder(String id, String name, String type) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
@ -58,9 +63,12 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
return bag(BAG_RELATIONS, TYPE_RELATIONS, TYPE_RELATIONS);
|
return bag(BAG_RELATIONS, TYPE_RELATIONS, TYPE_RELATIONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BagBuilder<T> bag(String id, String type) {
|
||||||
|
return bag(id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public BagBuilder<T> bag(String id, String name, String type) {
|
public BagBuilder<T> bag(String id, String name, String type) {
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") BagBuilder<T> bagBuilder = new BagBuilder<>((T) this, id, name, type);
|
||||||
BagBuilder<T> bagBuilder = new BagBuilder<>((T) this, id, name, type);
|
|
||||||
if (this.parametersBags.put(id, bagBuilder) != null)
|
if (this.parametersBags.put(id, bagBuilder) != null)
|
||||||
throw new IllegalArgumentException("Bag builder for " + id + " already exists!");
|
throw new IllegalArgumentException("Bag builder for " + id + " already exists!");
|
||||||
return bagBuilder;
|
return bagBuilder;
|
||||||
|
@ -70,11 +78,14 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
return resourceRelation(buildParamId(type), type, type);
|
return resourceRelation(buildParamId(type), type, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T resourceRelation(String paramId, String type) {
|
||||||
|
return resourceRelation(paramId, buildParamName(paramId), type);
|
||||||
|
}
|
||||||
|
|
||||||
public T resourceRelation(String paramId, String paramName, String type) {
|
public T resourceRelation(String paramId, String paramName, String type) {
|
||||||
assertNotMapped(paramId);
|
assertNotMapped(paramId);
|
||||||
this.singleRelations.put(paramId, new String[] { paramName, type, Tags.RESOURCE });
|
this.singleRelations.put(paramId, new String[]{paramName, type, Tags.RESOURCE});
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") T t = (T) this;
|
||||||
T t = (T) this;
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,11 +93,14 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
return resourceRelations(buildParamId(type), type + "s", type);
|
return resourceRelations(buildParamId(type), type + "s", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T resourceRelations(String paramId, String type) {
|
||||||
|
return resourceRelations(paramId, buildParamName(paramId), type);
|
||||||
|
}
|
||||||
|
|
||||||
public T resourceRelations(String paramId, String paramName, String type) {
|
public T resourceRelations(String paramId, String paramName, String type) {
|
||||||
assertNotMapped(paramId);
|
assertNotMapped(paramId);
|
||||||
this.multiRelations.put(paramId, new String[] { paramName, type, Tags.RESOURCE });
|
this.multiRelations.put(paramId, new String[]{paramName, type, Tags.RESOURCE});
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") T t = (T) this;
|
||||||
T t = (T) this;
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,11 +108,14 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
return orderRelation(buildParamId(type), type, type);
|
return orderRelation(buildParamId(type), type, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T orderRelation(String paramId, String type) {
|
||||||
|
return orderRelation(paramId, buildParamName(paramId), type);
|
||||||
|
}
|
||||||
|
|
||||||
public T orderRelation(String paramId, String paramName, String type) {
|
public T orderRelation(String paramId, String paramName, String type) {
|
||||||
assertNotMapped(paramId);
|
assertNotMapped(paramId);
|
||||||
this.singleRelations.put(paramId, new String[] { paramName, type, Tags.ORDER });
|
this.singleRelations.put(paramId, new String[]{paramName, type, Tags.ORDER});
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") T t = (T) this;
|
||||||
T t = (T) this;
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,11 +123,14 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
return orderRelations(buildParamId(type), type + "s", type);
|
return orderRelations(buildParamId(type), type + "s", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T orderRelations(String paramId, String type) {
|
||||||
|
return orderRelations(paramId, buildParamName(paramId), type);
|
||||||
|
}
|
||||||
|
|
||||||
public T orderRelations(String paramId, String paramName, String type) {
|
public T orderRelations(String paramId, String paramName, String type) {
|
||||||
assertNotMapped(paramId);
|
assertNotMapped(paramId);
|
||||||
this.multiRelations.put(paramId, new String[] { paramName, type, Tags.ORDER });
|
this.multiRelations.put(paramId, new String[]{paramName, type, Tags.ORDER});
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") T t = (T) this;
|
||||||
T t = (T) this;
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,11 +138,14 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
return activityRelation(buildParamId(type), type, type);
|
return activityRelation(buildParamId(type), type, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T activityRelation(String paramId, String type) {
|
||||||
|
return activityRelation(paramId, buildParamName(paramId), type);
|
||||||
|
}
|
||||||
|
|
||||||
public T activityRelation(String paramId, String paramName, String type) {
|
public T activityRelation(String paramId, String paramName, String type) {
|
||||||
assertNotMapped(paramId);
|
assertNotMapped(paramId);
|
||||||
this.singleRelations.put(paramId, new String[] { paramName, type, Tags.ACTIVITY });
|
this.singleRelations.put(paramId, new String[]{paramName, type, Tags.ACTIVITY});
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") T t = (T) this;
|
||||||
T t = (T) this;
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,11 +153,14 @@ public abstract class ParameterBagContainerBuilder<T extends ParameterBagContain
|
||||||
return activityRelations(buildParamId(type), type + "s", type);
|
return activityRelations(buildParamId(type), type + "s", type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T activityRelations(String paramId, String type) {
|
||||||
|
return activityRelations(paramId, buildParamName(paramId), type);
|
||||||
|
}
|
||||||
|
|
||||||
public T activityRelations(String paramId, String paramName, String type) {
|
public T activityRelations(String paramId, String paramName, String type) {
|
||||||
assertNotMapped(paramId);
|
assertNotMapped(paramId);
|
||||||
this.multiRelations.put(paramId, new String[] { paramName, type, Tags.ACTIVITY });
|
this.multiRelations.put(paramId, new String[]{paramName, type, Tags.ACTIVITY});
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") T t = (T) this;
|
||||||
T t = (T) this;
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,18 +3,23 @@ package li.strolch.model.builder;
|
||||||
import li.strolch.model.ParameterBagContainer;
|
import li.strolch.model.ParameterBagContainer;
|
||||||
import li.strolch.model.PolicyContainer;
|
import li.strolch.model.PolicyContainer;
|
||||||
|
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.buildParamName;
|
||||||
|
|
||||||
public class PolicyContainerBuilder<T extends ParameterBagContainerBuilder<T>> extends ParameterBagContainerBuilder<T> {
|
public class PolicyContainerBuilder<T extends ParameterBagContainerBuilder<T>> extends ParameterBagContainerBuilder<T> {
|
||||||
|
|
||||||
private PoliciesBuilder<T> policies;
|
private PoliciesBuilder<T> policies;
|
||||||
|
|
||||||
|
public PolicyContainerBuilder(String id, String type) {
|
||||||
|
super(id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public PolicyContainerBuilder(String id, String name, String type) {
|
public PolicyContainerBuilder(String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PoliciesBuilder<T> policies() {
|
public PoliciesBuilder<T> policies() {
|
||||||
if (this.policies == null) {
|
if (this.policies == null) {
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") T t = (T) this;
|
||||||
T t = (T) this;
|
|
||||||
this.policies = new PoliciesBuilder<>(t);
|
this.policies = new PoliciesBuilder<>(t);
|
||||||
}
|
}
|
||||||
return policies;
|
return policies;
|
||||||
|
|
|
@ -1,65 +1,104 @@
|
||||||
package li.strolch.model.builder;
|
package li.strolch.model.builder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import li.strolch.model.Resource;
|
import li.strolch.model.Resource;
|
||||||
import li.strolch.model.builder.states.*;
|
import li.strolch.model.builder.states.*;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.buildParamName;
|
||||||
|
import static li.strolch.utils.helper.StringHelper.getUniqueId;
|
||||||
|
|
||||||
public class ResourceBuilder extends RootElementBuilder<ResourceBuilder> {
|
public class ResourceBuilder extends RootElementBuilder<ResourceBuilder> {
|
||||||
|
|
||||||
private final StrolchElementBuilder builder;
|
private final StrolchElementBuilder builder;
|
||||||
private final List<TimedStateBuilder<?>> timedStates;
|
private final List<TimedStateBuilder<?>> timedStates;
|
||||||
|
|
||||||
|
public ResourceBuilder(String name, String type) {
|
||||||
|
this(getUniqueId(), name, type);
|
||||||
|
}
|
||||||
|
|
||||||
public ResourceBuilder(String id, String name, String type) {
|
public ResourceBuilder(String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
this.builder = null;
|
this.builder = null;
|
||||||
this.timedStates = new ArrayList<>();
|
this.timedStates = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ResourceBuilder(StrolchElementBuilder builder, String name, String type) {
|
||||||
|
this(builder, getUniqueId(), name, type);
|
||||||
|
}
|
||||||
|
|
||||||
public ResourceBuilder(StrolchElementBuilder builder, String id, String name, String type) {
|
public ResourceBuilder(StrolchElementBuilder builder, String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
this.timedStates = new ArrayList<>();
|
this.timedStates = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BooleanStateBuilder booleanState(String id) {
|
||||||
|
return booleanState(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public BooleanStateBuilder booleanState(String id, String name) {
|
public BooleanStateBuilder booleanState(String id, String name) {
|
||||||
BooleanStateBuilder builder = new BooleanStateBuilder(this, id, name);
|
BooleanStateBuilder builder = new BooleanStateBuilder(this, id, name);
|
||||||
this.timedStates.add(builder);
|
this.timedStates.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FloatStateBuilder floatState(String id) {
|
||||||
|
return floatState(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public FloatStateBuilder floatState(String id, String name) {
|
public FloatStateBuilder floatState(String id, String name) {
|
||||||
FloatStateBuilder builder = new FloatStateBuilder(this, id, name);
|
FloatStateBuilder builder = new FloatStateBuilder(this, id, name);
|
||||||
this.timedStates.add(builder);
|
this.timedStates.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IntegerStateBuilder integerState(String id) {
|
||||||
|
return integerState(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public IntegerStateBuilder integerState(String id, String name) {
|
public IntegerStateBuilder integerState(String id, String name) {
|
||||||
IntegerStateBuilder builder = new IntegerStateBuilder(this, id, name);
|
IntegerStateBuilder builder = new IntegerStateBuilder(this, id, name);
|
||||||
this.timedStates.add(builder);
|
this.timedStates.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LongStateBuilder longState(String id) {
|
||||||
|
return longState(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public LongStateBuilder longState(String id, String name) {
|
public LongStateBuilder longState(String id, String name) {
|
||||||
LongStateBuilder builder = new LongStateBuilder(this, id, name);
|
LongStateBuilder builder = new LongStateBuilder(this, id, name);
|
||||||
this.timedStates.add(builder);
|
this.timedStates.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FloatListStateBuilder floatListState(String id) {
|
||||||
|
return floatListState(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public FloatListStateBuilder floatListState(String id, String name) {
|
public FloatListStateBuilder floatListState(String id, String name) {
|
||||||
FloatListStateBuilder builder = new FloatListStateBuilder(this, id, name);
|
FloatListStateBuilder builder = new FloatListStateBuilder(this, id, name);
|
||||||
this.timedStates.add(builder);
|
this.timedStates.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IntegerListStateBuilder integerListState(String id) {
|
||||||
|
return integerListState(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public IntegerListStateBuilder integerListState(String id, String name) {
|
public IntegerListStateBuilder integerListState(String id, String name) {
|
||||||
IntegerListStateBuilder builder = new IntegerListStateBuilder(this, id, name);
|
IntegerListStateBuilder builder = new IntegerListStateBuilder(this, id, name);
|
||||||
this.timedStates.add(builder);
|
this.timedStates.add(builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StringSetStateBuilder stringSetState(String id) {
|
||||||
|
return stringSetState(id, buildParamName(id));
|
||||||
|
}
|
||||||
|
|
||||||
public StringSetStateBuilder stringSetState(String id, String name) {
|
public StringSetStateBuilder stringSetState(String id, String name) {
|
||||||
StringSetStateBuilder builder = new StringSetStateBuilder(this, id, name);
|
StringSetStateBuilder builder = new StringSetStateBuilder(this, id, name);
|
||||||
this.timedStates.add(builder);
|
this.timedStates.add(builder);
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
package li.strolch.model.builder;
|
package li.strolch.model.builder;
|
||||||
|
|
||||||
import li.strolch.model.PolicyContainer;
|
|
||||||
import li.strolch.model.StrolchRootElement;
|
import li.strolch.model.StrolchRootElement;
|
||||||
|
|
||||||
|
import static li.strolch.model.builder.BuilderHelper.buildParamName;
|
||||||
|
|
||||||
public abstract class RootElementBuilder<T extends ParameterBagContainerBuilder<T>> extends PolicyContainerBuilder<T> {
|
public abstract class RootElementBuilder<T extends ParameterBagContainerBuilder<T>> extends PolicyContainerBuilder<T> {
|
||||||
|
|
||||||
|
public RootElementBuilder(String id, String type) {
|
||||||
|
super(id, buildParamName(id), type);
|
||||||
|
}
|
||||||
|
|
||||||
public RootElementBuilder(String id, String name, String type) {
|
public RootElementBuilder(String id, String name, String type) {
|
||||||
super(id, name, type);
|
super(id, name, type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,19 +27,19 @@ public class StrolchElementBuilder {
|
||||||
this.activityBuilders = new HashMap<>();
|
this.activityBuilders = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResourceBuilder resource(String name, String type) {
|
public ResourceBuilder resourceTemplate(String name, String type) {
|
||||||
ResourceBuilder builder = new ResourceBuilder(this, type, name, TEMPLATE);
|
ResourceBuilder builder = new ResourceBuilder(this, type, name, TEMPLATE);
|
||||||
this.resourceBuilders.put(type, builder);
|
this.resourceBuilders.put(type, builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrderBuilder order(String name, String type) {
|
public OrderBuilder orderTemplate(String name, String type) {
|
||||||
OrderBuilder builder = new OrderBuilder(this, type, name, TEMPLATE);
|
OrderBuilder builder = new OrderBuilder(this, type, name, TEMPLATE);
|
||||||
this.orderBuilders.put(type, builder);
|
this.orderBuilders.put(type, builder);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActivityBuilder activity(String name, String type, TimeOrdering timeOrdering) {
|
public ActivityBuilder activityTemplate(String name, String type, TimeOrdering timeOrdering) {
|
||||||
ActivityBuilder builder = new ActivityBuilder(this, type, name, TEMPLATE, timeOrdering);
|
ActivityBuilder builder = new ActivityBuilder(this, type, name, TEMPLATE, timeOrdering);
|
||||||
this.activityBuilders.put(type, builder);
|
this.activityBuilders.put(type, builder);
|
||||||
return builder;
|
return builder;
|
||||||
|
@ -62,7 +62,7 @@ public class StrolchElementBuilder {
|
||||||
|
|
||||||
public List<StrolchRootElement> buildTemplates() {
|
public List<StrolchRootElement> buildTemplates() {
|
||||||
return concat(concat(this.resourceBuilders.values().stream(), //
|
return concat(concat(this.resourceBuilders.values().stream(), //
|
||||||
this.orderBuilders.values().stream()), //
|
this.orderBuilders.values().stream()), //
|
||||||
this.activityBuilders.values().stream()) //
|
this.activityBuilders.values().stream()) //
|
||||||
.map(RootElementBuilder::build).collect(toList());
|
.map(RootElementBuilder::build).collect(toList());
|
||||||
}
|
}
|
||||||
|
@ -71,24 +71,24 @@ public class StrolchElementBuilder {
|
||||||
ResourceBuilder builder = this.resourceBuilders.get(type);
|
ResourceBuilder builder = this.resourceBuilders.get(type);
|
||||||
if (builder == null)
|
if (builder == null)
|
||||||
throw new IllegalArgumentException("No resource template defined for type " + type);
|
throw new IllegalArgumentException("No resource template defined for type " + type);
|
||||||
return updateFields(type, newName, builder.build());
|
return setInitialFields(type, newName, builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Order newOrder(String type, String newName) {
|
public Order newOrder(String type, String newName) {
|
||||||
OrderBuilder builder = this.orderBuilders.get(type);
|
OrderBuilder builder = this.orderBuilders.get(type);
|
||||||
if (builder == null)
|
if (builder == null)
|
||||||
throw new IllegalArgumentException("No resource template defined for type " + type);
|
throw new IllegalArgumentException("No resource template defined for type " + type);
|
||||||
return updateFields(type, newName, builder.build());
|
return setInitialFields(type, newName, builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Activity newActivity(String type, String newName) {
|
public Activity newActivity(String type, String newName) {
|
||||||
ActivityBuilder builder = this.activityBuilders.get(type);
|
ActivityBuilder builder = this.activityBuilders.get(type);
|
||||||
if (builder == null)
|
if (builder == null)
|
||||||
throw new IllegalArgumentException("No resource template defined for type " + type);
|
throw new IllegalArgumentException("No resource template defined for type " + type);
|
||||||
return updateFields(type, newName, builder.build());
|
return setInitialFields(type, newName, builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T extends StrolchRootElement> T updateFields(String type, String newName, T element) {
|
private <T extends StrolchRootElement> T setInitialFields(String type, String newName, T element) {
|
||||||
element.setId(StringHelper.getUniqueId());
|
element.setId(StringHelper.getUniqueId());
|
||||||
element.setName(newName);
|
element.setName(newName);
|
||||||
element.setType(type);
|
element.setType(type);
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class StrolchElementBuilderTest {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// person
|
// person
|
||||||
.resource("Person Template", "Person") //
|
.resourceTemplate("Person Template", "Person") //
|
||||||
.defaultBag() //
|
.defaultBag() //
|
||||||
.date("birthdate", "Birthdate").value(ZonedDateTime.now()).end() //
|
.date("birthdate", "Birthdate").value(ZonedDateTime.now()).end() //
|
||||||
.string("case", "Case").interpretation("Case").uom("Simple").end() //
|
.string("case", "Case").interpretation("Case").uom("Simple").end() //
|
||||||
|
@ -47,7 +47,7 @@ public class StrolchElementBuilderTest {
|
||||||
.endResource() //
|
.endResource() //
|
||||||
|
|
||||||
// cars
|
// cars
|
||||||
.resource("Car Template", "Car") //
|
.resourceTemplate("Car Template", "Car") //
|
||||||
.defaultBag() //
|
.defaultBag() //
|
||||||
.string("color", "Color").value("white").end() //
|
.string("color", "Color").value("white").end() //
|
||||||
.endBag() //
|
.endBag() //
|
||||||
|
@ -56,7 +56,7 @@ public class StrolchElementBuilderTest {
|
||||||
.endResource() //
|
.endResource() //
|
||||||
|
|
||||||
// machines
|
// machines
|
||||||
.resource("Machine Template", "Machine") //
|
.resourceTemplate("Machine Template", "Machine") //
|
||||||
.defaultBag() //
|
.defaultBag() //
|
||||||
.string("color", "Color").end() //
|
.string("color", "Color").end() //
|
||||||
.endBag() //
|
.endBag() //
|
||||||
|
@ -68,7 +68,7 @@ public class StrolchElementBuilderTest {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// orders
|
// orders
|
||||||
.order("Order Template", "Order") //
|
.orderTemplate("Order Template", "Order") //
|
||||||
.defaultBag() //
|
.defaultBag() //
|
||||||
.string("description", "Description").end() //
|
.string("description", "Description").end() //
|
||||||
.endBag() //
|
.endBag() //
|
||||||
|
@ -83,7 +83,7 @@ public class StrolchElementBuilderTest {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// ToStock
|
// ToStock
|
||||||
.activity("ToStock Template", "ToStock", TimeOrdering.SERIES) //
|
.activityTemplate("ToStock Template", "ToStock", TimeOrdering.SERIES) //
|
||||||
.defaultBag() //
|
.defaultBag() //
|
||||||
.string("description", "Description").end() //
|
.string("description", "Description").end() //
|
||||||
.endBag() //
|
.endBag() //
|
||||||
|
@ -211,7 +211,7 @@ public class StrolchElementBuilderTest {
|
||||||
|
|
||||||
Resource car1 = new StrolchElementBuilder() //
|
Resource car1 = new StrolchElementBuilder() //
|
||||||
|
|
||||||
.resource("Car Template", "Car") //
|
.resourceTemplate("Car Template", "Car") //
|
||||||
.defaultBag() //
|
.defaultBag() //
|
||||||
.string("color", "Color").value("white").end() //
|
.string("color", "Color").value("white").end() //
|
||||||
.endBag() //
|
.endBag() //
|
||||||
|
|
Loading…
Reference in New Issue