[New] Added StrolchRootElement.setOrAddParamFromFlatJson() with uom
This commit is contained in:
parent
54d76b1264
commit
e0ee3748ea
|
@ -15,12 +15,16 @@
|
||||||
*/
|
*/
|
||||||
package li.strolch.model;
|
package li.strolch.model;
|
||||||
|
|
||||||
|
import static li.strolch.model.StrolchModelConstants.INTERPRETATION_NONE;
|
||||||
|
import static li.strolch.model.StrolchModelConstants.UOM_NONE;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import li.strolch.model.activity.Activity;
|
import li.strolch.model.activity.Activity;
|
||||||
import li.strolch.model.json.StrolchRootElementToJsonVisitor;
|
import li.strolch.model.json.StrolchRootElementToJsonVisitor;
|
||||||
import li.strolch.model.parameter.Parameter;
|
import li.strolch.model.parameter.Parameter;
|
||||||
|
import li.strolch.model.visitor.SetParameterValueVisitor;
|
||||||
import li.strolch.model.visitor.StrolchElementVisitor;
|
import li.strolch.model.visitor.StrolchElementVisitor;
|
||||||
import li.strolch.model.visitor.StrolchRootElementVisitor;
|
import li.strolch.model.visitor.StrolchRootElementVisitor;
|
||||||
import li.strolch.model.xml.StrolchElementToXmlStringVisitor;
|
import li.strolch.model.xml.StrolchElementToXmlStringVisitor;
|
||||||
|
@ -199,6 +203,38 @@ public interface StrolchRootElement extends StrolchElement, PolicyContainer, Par
|
||||||
*/
|
*/
|
||||||
default void setOrAddParamFromFlatJson(JsonObject jsonObject, String bagId, String bagName, String bagType,
|
default void setOrAddParamFromFlatJson(JsonObject jsonObject, String bagId, String bagName, String bagType,
|
||||||
String paramId, String paramName, StrolchValueType type, boolean ignoreOnEmpty) {
|
String paramId, String paramName, StrolchValueType type, boolean ignoreOnEmpty) {
|
||||||
|
setOrAddParamFromFlatJson(jsonObject, bagId, bagName, bagType, paramId, paramName, INTERPRETATION_NONE,
|
||||||
|
UOM_NONE, type, ignoreOnEmpty);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set or add a parameter to this element from a {@link JsonObject}
|
||||||
|
*
|
||||||
|
* @param jsonObject
|
||||||
|
* the object from which to get the value
|
||||||
|
* @param bagId
|
||||||
|
* the bag ID on which to set the value
|
||||||
|
* @param bagName
|
||||||
|
* the name of the bag, if the bag is to be created
|
||||||
|
* @param bagType
|
||||||
|
* the type of the bag, if the bag is to be created
|
||||||
|
* @param paramId
|
||||||
|
* the ID of the parameter on which to set the value, and also the Json reference ID
|
||||||
|
* @param paramName
|
||||||
|
* the name of the parameter, if the parameter is to be created
|
||||||
|
* @param interpretation
|
||||||
|
* the interpretation
|
||||||
|
* @param uom
|
||||||
|
* the uom
|
||||||
|
* @param type
|
||||||
|
* the type of Parameter to create
|
||||||
|
* @param ignoreOnEmpty
|
||||||
|
* if true, and the json object is missing the field, then the parameter is not changed, otherwise the parameter
|
||||||
|
* is cleared if the json field is missing or null
|
||||||
|
*/
|
||||||
|
default void setOrAddParamFromFlatJson(JsonObject jsonObject, String bagId, String bagName, String bagType,
|
||||||
|
String paramId, String paramName, String interpretation, String uom, StrolchValueType type,
|
||||||
|
boolean ignoreOnEmpty) {
|
||||||
|
|
||||||
if (!jsonObject.has(paramId) && ignoreOnEmpty)
|
if (!jsonObject.has(paramId) && ignoreOnEmpty)
|
||||||
return;
|
return;
|
||||||
|
@ -218,6 +254,8 @@ public interface StrolchRootElement extends StrolchElement, PolicyContainer, Par
|
||||||
param = type.parameterInstance();
|
param = type.parameterInstance();
|
||||||
param.setId(paramId);
|
param.setId(paramId);
|
||||||
param.setName(paramName);
|
param.setName(paramName);
|
||||||
|
param.setInterpretation(interpretation);
|
||||||
|
param.setUom(uom);
|
||||||
bag.addParameter(param);
|
bag.addParameter(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,4 +265,88 @@ public interface StrolchRootElement extends StrolchElement, PolicyContainer, Par
|
||||||
param.setValueFromString(jsonObject.get(paramId).getAsString());
|
param.setValueFromString(jsonObject.get(paramId).getAsString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set or add a parameter to this element with the given value
|
||||||
|
*
|
||||||
|
* @param bagId
|
||||||
|
* the bag ID on which to set the value
|
||||||
|
* @param bagName
|
||||||
|
* the name of the bag, if the bag is to be created
|
||||||
|
* @param bagType
|
||||||
|
* the type of the bag, if the bag is to be created
|
||||||
|
* @param paramId
|
||||||
|
* the ID of the parameter on which to set the value, and also the Json reference ID
|
||||||
|
* @param paramName
|
||||||
|
* the name of the parameter, if the parameter is to be created
|
||||||
|
* @param type
|
||||||
|
* the type of Parameter to create
|
||||||
|
* @param value
|
||||||
|
* the value to set
|
||||||
|
* @param ignoreOnEmpty
|
||||||
|
* if true, and the value is null, then the parameter is not changed, otherwise the parameter is cleared if the
|
||||||
|
* value is null
|
||||||
|
*/
|
||||||
|
default void setOrAddParam(String bagId, String bagName, String bagType, String paramId, String paramName,
|
||||||
|
StrolchValueType type, Object value, boolean ignoreOnEmpty) {
|
||||||
|
setOrAddParam(bagId, bagName, bagType, paramId, paramName, INTERPRETATION_NONE, UOM_NONE, type, value,
|
||||||
|
ignoreOnEmpty);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set or add a parameter to this element with the given value
|
||||||
|
*
|
||||||
|
* @param bagId
|
||||||
|
* the bag ID on which to set the value
|
||||||
|
* @param bagName
|
||||||
|
* the name of the bag, if the bag is to be created
|
||||||
|
* @param bagType
|
||||||
|
* the type of the bag, if the bag is to be created
|
||||||
|
* @param paramId
|
||||||
|
* the ID of the parameter on which to set the value, and also the Json reference ID
|
||||||
|
* @param paramName
|
||||||
|
* the name of the parameter, if the parameter is to be created
|
||||||
|
* @param interpretation
|
||||||
|
* the interpretation
|
||||||
|
* @param uom
|
||||||
|
* the uom
|
||||||
|
* @param type
|
||||||
|
* the type of Parameter to create
|
||||||
|
* @param value
|
||||||
|
* the value to set
|
||||||
|
* @param ignoreOnEmpty
|
||||||
|
* if true, and the value is null, then the parameter is not changed, otherwise the parameter is cleared if the
|
||||||
|
* value is null
|
||||||
|
*/
|
||||||
|
default void setOrAddParam(String bagId, String bagName, String bagType, String paramId, String paramName,
|
||||||
|
String interpretation, String uom, StrolchValueType type, Object value, boolean ignoreOnEmpty) {
|
||||||
|
|
||||||
|
if (value == null && ignoreOnEmpty)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ParameterBag bag = getParameterBag(bagId);
|
||||||
|
if (bag == null) {
|
||||||
|
bag = new ParameterBag(bagId, bagName, bagType);
|
||||||
|
addParameterBag(bag);
|
||||||
|
}
|
||||||
|
|
||||||
|
Parameter<?> param = bag.getParameter(paramId);
|
||||||
|
if (param == null && value == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (param == null) {
|
||||||
|
param = type.parameterInstance();
|
||||||
|
param.setId(paramId);
|
||||||
|
param.setName(paramName);
|
||||||
|
param.setInterpretation(interpretation);
|
||||||
|
param.setUom(uom);
|
||||||
|
bag.addParameter(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value == null) {
|
||||||
|
param.clear();
|
||||||
|
} else {
|
||||||
|
param.accept(new SetParameterValueVisitor(value));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue