[New] Added StrolchValueType.valueToJson()
This commit is contained in:
parent
b53c1bca58
commit
cfc03747e5
|
@ -15,13 +15,23 @@
|
||||||
*/
|
*/
|
||||||
package li.strolch.model;
|
package li.strolch.model;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
import static java.util.stream.Collectors.joining;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import com.google.gson.JsonPrimitive;
|
||||||
import li.strolch.model.parameter.*;
|
import li.strolch.model.parameter.*;
|
||||||
import li.strolch.model.timedstate.*;
|
import li.strolch.model.timedstate.*;
|
||||||
import li.strolch.model.timevalue.IValue;
|
import li.strolch.model.timevalue.IValue;
|
||||||
import li.strolch.model.timevalue.IValueChange;
|
import li.strolch.model.timevalue.IValueChange;
|
||||||
import li.strolch.model.timevalue.impl.*;
|
import li.strolch.model.timevalue.impl.*;
|
||||||
|
import li.strolch.utils.iso8601.ISO8601;
|
||||||
|
import li.strolch.utils.time.PeriodDuration;
|
||||||
|
|
||||||
public enum StrolchValueType {
|
public enum StrolchValueType {
|
||||||
|
|
||||||
|
@ -35,6 +45,11 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
BOOLEAN("Boolean") {
|
BOOLEAN("Boolean") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
return new JsonPrimitive(((Boolean) value).toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return BooleanParameter.parseFromString(value);
|
return BooleanParameter.parseFromString(value);
|
||||||
|
@ -71,6 +86,11 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
INTEGER("Integer") {
|
INTEGER("Integer") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
return new JsonPrimitive(((Integer) value).toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return IntegerParameter.parseFromString(value);
|
return IntegerParameter.parseFromString(value);
|
||||||
|
@ -107,6 +127,11 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
FLOAT("Float") {
|
FLOAT("Float") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
return new JsonPrimitive(value.toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return FloatParameter.parseFromString(value);
|
return FloatParameter.parseFromString(value);
|
||||||
|
@ -140,6 +165,11 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
LONG("Long") {
|
LONG("Long") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
return new JsonPrimitive(value.toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return LongParameter.parseFromString(value);
|
return LongParameter.parseFromString(value);
|
||||||
|
@ -173,6 +203,11 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
STRING("String") {
|
STRING("String") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
return new JsonPrimitive((String) value);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return value;
|
return value;
|
||||||
|
@ -208,6 +243,11 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
TEXT("Text") {
|
TEXT("Text") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
return new JsonPrimitive((String) value);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return value;
|
return value;
|
||||||
|
@ -243,6 +283,17 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
DATE("Date") {
|
DATE("Date") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
if (value instanceof Date)
|
||||||
|
return new JsonPrimitive(ISO8601.toString((Date) value));
|
||||||
|
else if (value instanceof LocalDateTime)
|
||||||
|
return new JsonPrimitive(ISO8601.toString((LocalDateTime) value));
|
||||||
|
if (value instanceof ZonedDateTime)
|
||||||
|
return new JsonPrimitive(ISO8601.toString((ZonedDateTime) value));
|
||||||
|
throw new ClassCastException("value " + value + " + has unexpected class " + value.getClass());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return DateParameter.parseFromString(value);
|
return DateParameter.parseFromString(value);
|
||||||
|
@ -273,6 +324,11 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
DURATION("Duration") {
|
DURATION("Duration") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
return new JsonPrimitive(((PeriodDuration) value).toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return DurationParameter.parseFromString(value);
|
return DurationParameter.parseFromString(value);
|
||||||
|
@ -306,6 +362,13 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
FLOAT_LIST("FloatList") {
|
FLOAT_LIST("FloatList") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<Double> list = (List<Double>) value;
|
||||||
|
return new JsonPrimitive(list.stream().map(Objects::toString).collect(joining(", ")));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return FloatListParameter.parseFromString(value);
|
return FloatListParameter.parseFromString(value);
|
||||||
|
@ -334,6 +397,13 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
INTEGER_LIST("IntegerList") {
|
INTEGER_LIST("IntegerList") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<Integer> list = (List<Integer>) value;
|
||||||
|
return new JsonPrimitive(list.stream().map(Objects::toString).collect(joining(", ")));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return IntegerListParameter.parseFromString(value);
|
return IntegerListParameter.parseFromString(value);
|
||||||
|
@ -364,6 +434,13 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
LONG_LIST("LongList") {
|
LONG_LIST("LongList") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<Long> list = (List<Long>) value;
|
||||||
|
return new JsonPrimitive(list.stream().map(Objects::toString).collect(joining(", ")));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return LongListParameter.parseFromString(value);
|
return LongListParameter.parseFromString(value);
|
||||||
|
@ -394,6 +471,13 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
STRING_LIST("StringList") {
|
STRING_LIST("StringList") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<String> list = (List<String>) value;
|
||||||
|
return new JsonPrimitive(list.stream().map(Objects::toString).collect(joining(", ")));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
return StringListParameter.parseFromString(value);
|
return StringListParameter.parseFromString(value);
|
||||||
|
@ -426,6 +510,12 @@ public enum StrolchValueType {
|
||||||
* </ul>
|
* </ul>
|
||||||
*/
|
*/
|
||||||
STRING_SET("StringSet") {
|
STRING_SET("StringSet") {
|
||||||
|
@Override
|
||||||
|
public JsonPrimitive valueToJson(Object value) {
|
||||||
|
throw new UnsupportedOperationException(
|
||||||
|
MessageFormat.format("Formatting of type {0} is not supported!", getType())); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object parseValue(String value) {
|
public Object parseValue(String value) {
|
||||||
throw new UnsupportedOperationException(
|
throw new UnsupportedOperationException(
|
||||||
|
@ -471,6 +561,8 @@ public enum StrolchValueType {
|
||||||
throw new IllegalArgumentException("Type " + value + " does not exist!");
|
throw new IllegalArgumentException("Type " + value + " does not exist!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract JsonPrimitive valueToJson(Object value);
|
||||||
|
|
||||||
public abstract Object parseValue(String value);
|
public abstract Object parseValue(String value);
|
||||||
|
|
||||||
public abstract Parameter<?> parameterInstance();
|
public abstract Parameter<?> parameterInstance();
|
||||||
|
|
Loading…
Reference in New Issue