[Major] GroupedParameterizedElement.get() and .set() changes

The GroupedParameterizedElement.get() and .set() helper methods for default bag parameters, now safely handle non-existing bags and parameters. This means that one can simply do:

    resource.getBoolean("newBoolean");
    resource.setBoolean("newBoolean", true);

even if the parameters or ParameterBag don't exist.
This commit is contained in:
Robert von Burg 2020-06-29 16:07:05 +02:00
parent b818a102c3
commit 1b3b3778e6
1 changed files with 193 additions and 54 deletions

View File

@ -16,8 +16,7 @@
package li.strolch.model;
import static java.util.stream.Collectors.toList;
import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS;
import static li.strolch.model.StrolchModelConstants.BAG_RELATIONS;
import static li.strolch.model.StrolchModelConstants.*;
import java.text.MessageFormat;
import java.time.LocalDateTime;
@ -29,6 +28,7 @@ import li.strolch.exception.StrolchException;
import li.strolch.exception.StrolchModelException;
import li.strolch.model.parameter.*;
import li.strolch.utils.helper.StringHelper;
import li.strolch.utils.iso8601.ISO8601;
import li.strolch.utils.time.PeriodDuration;
/**
@ -85,8 +85,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public String getString(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getString(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return "";
StringParameter param = bag.getParameter(paramKey);
if (param == null)
return "";
return param.getValue();
}
@Override
@ -97,8 +102,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public boolean getBoolean(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getBoolean(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return false;
BooleanParameter param = bag.getParameter(paramKey);
if (param == null)
return false;
return param.getValue();
}
@Override
@ -109,8 +119,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public int getInteger(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getInteger(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return 0;
IntegerParameter param = bag.getParameter(paramKey);
if (param == null)
return 0;
return param.getValue();
}
@Override
@ -121,8 +136,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public double getDouble(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getDouble(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return 0.0D;
FloatParameter param = bag.getParameter(paramKey);
if (param == null)
return 0.0D;
return param.getValue();
}
@Override
@ -133,8 +153,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public long getLong(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getLong(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return 0L;
LongParameter param = bag.getParameter(paramKey);
if (param == null)
return 0L;
return param.getValue();
}
@Override
@ -145,8 +170,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public ZonedDateTime getDate(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getDate(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return ISO8601.EMPTY_VALUE_ZONED_DATE;
DateParameter param = bag.getParameter(paramKey);
if (param == null)
return ISO8601.EMPTY_VALUE_ZONED_DATE;
return param.toZonedDateTime();
}
@Override
@ -157,8 +187,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public LocalDateTime getLocalDate(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getLocalDate(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return ISO8601.EMPTY_VALUE_LOCAL_DATE;
DateParameter param = bag.getParameter(paramKey);
if (param == null)
return ISO8601.EMPTY_VALUE_LOCAL_DATE;
return param.toLocalDateTime();
}
@Override
@ -169,8 +204,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public String getText(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getText(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return "";
TextParameter param = bag.getParameter(paramKey);
if (param == null)
return "";
return param.getValue();
}
@Override
@ -181,8 +221,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public PeriodDuration getDuration(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getDuration(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return PeriodDuration.ZERO;
DurationParameter param = bag.getParameter(paramKey);
if (param == null)
return PeriodDuration.ZERO;
return param.getValue();
}
@Override
@ -193,8 +238,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public List<String> getStringList(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getStringList(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return Collections.emptyList();
StringListParameter param = bag.getParameter(paramKey);
if (param == null)
return Collections.emptyList();
return param.getValue();
}
@Override
@ -205,8 +255,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public List<Integer> getIntegerList(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getIntegerList(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return Collections.emptyList();
IntegerListParameter param = bag.getParameter(paramKey);
if (param == null)
return Collections.emptyList();
return param.getValue();
}
@Override
@ -217,8 +272,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public List<Double> getDoubleList(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getDoubleList(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return Collections.emptyList();
FloatListParameter param = bag.getParameter(paramKey);
if (param == null)
return Collections.emptyList();
return param.getValue();
}
@Override
@ -229,8 +289,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public List<Long> getLongList(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
return bag.getLongList(paramKey);
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null)
return Collections.emptyList();
LongListParameter param = bag.getParameter(paramKey);
if (param == null)
return Collections.emptyList();
return param.getValue();
}
@Override
@ -241,8 +306,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setString(String paramKey, String value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setString(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
StringParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new StringParameter(paramKey, paramKey, value));
}
}
@Override
@ -253,8 +323,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setBoolean(String paramKey, boolean value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setBoolean(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
BooleanParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new BooleanParameter(paramKey, paramKey, value));
}
}
@Override
@ -265,8 +340,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setInteger(String paramKey, int value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setInteger(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
IntegerParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new IntegerParameter(paramKey, paramKey, value));
}
}
@Override
@ -277,8 +357,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setDouble(String paramKey, double value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setDouble(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
FloatParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new FloatParameter(paramKey, paramKey, value));
}
}
@Override
@ -289,8 +374,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setLong(String paramKey, long value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setLong(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
LongParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new LongParameter(paramKey, paramKey, value));
}
}
@Override
@ -301,8 +391,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setDate(String paramKey, ZonedDateTime value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setDate(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
DateParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValueFromZonedDateTime(value);
} else {
bag.addParameter(new DateParameter(paramKey, paramKey, value));
}
}
@Override
@ -313,8 +408,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setDate(String paramKey, LocalDateTime value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setDate(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
DateParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValueFromLocalDateTime(value);
} else {
bag.addParameter(new DateParameter(paramKey, paramKey, value));
}
}
@Override
@ -325,8 +425,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setText(String paramKey, String value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setText(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
TextParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new TextParameter(paramKey, paramKey, value));
}
}
@Override
@ -337,8 +442,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setDuration(String paramKey, PeriodDuration value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setDuration(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
DurationParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new DurationParameter(paramKey, paramKey, value));
}
}
@Override
@ -349,8 +459,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setStringList(String paramKey, List<String> value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setStringList(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
StringListParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new StringListParameter(paramKey, paramKey, value));
}
}
@Override
@ -361,8 +476,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setIntegerList(String paramKey, List<Integer> value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setIntegerList(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
IntegerListParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new IntegerListParameter(paramKey, paramKey, value));
}
}
@Override
@ -373,8 +493,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setDoubleList(String paramKey, List<Double> value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setDoubleList(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
FloatListParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new FloatListParameter(paramKey, paramKey, value));
}
}
@Override
@ -385,8 +510,13 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
@Override
public void setLongList(String paramKey, List<Long> value) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);
bag.setLongList(paramKey, value);
ParameterBag bag = getOrCreateDefaultParametersBag();
LongListParameter param = bag.getParameter(paramKey);
if (param != null) {
param.setValue(value);
} else {
bag.addParameter(new LongListParameter(paramKey, paramKey, value));
}
}
@Override
@ -395,6 +525,15 @@ public abstract class GroupedParameterizedElement extends AbstractStrolchElement
bag.setLongList(paramKey, value);
}
private ParameterBag getOrCreateDefaultParametersBag() {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, false);
if (bag == null) {
bag = new ParameterBag(BAG_PARAMETERS, TYPE_PARAMETERS, TYPE_PARAMETERS);
addParameterBag(bag);
}
return bag;
}
@Override
public StringParameter getStringP(String paramKey) throws StrolchModelException {
ParameterBag bag = getParameterBag(BAG_PARAMETERS, true);