diff --git a/jetlinks-components/common-component/src/main/java/org/jetlinks/community/ValueObject.java b/jetlinks-components/common-component/src/main/java/org/jetlinks/community/ValueObject.java index fdfd69d6..809ae22f 100644 --- a/jetlinks-components/common-component/src/main/java/org/jetlinks/community/ValueObject.java +++ b/jetlinks-components/common-component/src/main/java/org/jetlinks/community/ValueObject.java @@ -5,11 +5,17 @@ import org.jetlinks.community.utils.TimeUtils; import java.time.Duration; import java.util.Date; +import java.util.Map; import java.util.Optional; public interface ValueObject { - Optional get(String name); + Map getAll(); + + default Optional get(String name) { + return Optional.ofNullable(getAll()) + .map(map -> map.get(name)); + } default Optional getInt(String name) { return get(name, Integer.class); @@ -74,4 +80,17 @@ public interface ValueObject { .map(obj -> FastBeanCopier.DEFAULT_CONVERT.convert(obj, type, FastBeanCopier.EMPTY_CLASS_ARRAY)); } + static ValueObject of(Map mapVal) { + return new ValueObject() { + @Override + public Optional get(String name) { + return Optional.empty(); + } + + @Override + public Map getAll() { + return mapVal; + } + }; + } } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/TcpClientProperties.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/TcpClientProperties.java index 0bd47857..b3734e2b 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/TcpClientProperties.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/TcpClientProperties.java @@ -35,7 +35,7 @@ public class TcpClientProperties implements ValueObject { private boolean enabled; @Override - public Optional get(String name) { - return Optional.ofNullable(parserConfiguration).map(map -> map.get(name)); + public Map getAll() { + return parserConfiguration; } } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/VertxTcpClientProvider.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/VertxTcpClientProvider.java index c1c08f79..a707d156 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/VertxTcpClientProvider.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/VertxTcpClientProvider.java @@ -56,7 +56,7 @@ public class VertxTcpClientProvider implements NetworkProvider builder.build(configuration)) .orElseThrow(() -> new UnsupportedOperationException("unsupported parser:" + type)); diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilder.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilder.java index e9060d1b..6986d493 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilder.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilder.java @@ -1,9 +1,10 @@ package org.jetlinks.community.network.tcp.parser; +import org.jetlinks.community.ValueObject; import org.jetlinks.core.Values; public interface PayloadParserBuilder { - PayloadParser build(PayloadParserType type, Values configuration); + PayloadParser build(PayloadParserType type, ValueObject configuration); } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilderStrategy.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilderStrategy.java index 1d9a7ed9..48948fa6 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilderStrategy.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilderStrategy.java @@ -1,9 +1,9 @@ package org.jetlinks.community.network.tcp.parser; -import org.jetlinks.core.Values; +import org.jetlinks.community.ValueObject; public interface PayloadParserBuilderStrategy { PayloadParserType getType(); - PayloadParser build(Values config); + PayloadParser build(ValueObject config); } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DelimitedPayloadParserBuilder.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DelimitedPayloadParserBuilder.java index a0f21aa3..ebe64876 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DelimitedPayloadParserBuilder.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DelimitedPayloadParserBuilder.java @@ -2,6 +2,7 @@ package org.jetlinks.community.network.tcp.parser.strateies; import io.vertx.core.parsetools.RecordParser; import org.apache.commons.lang.StringEscapeUtils; +import org.jetlinks.community.ValueObject; import org.jetlinks.core.Value; import org.jetlinks.core.Values; import org.jetlinks.community.network.tcp.parser.PayloadParserType; @@ -13,10 +14,9 @@ public class DelimitedPayloadParserBuilder extends VertxPayloadParserBuilder { } @Override - protected RecordParser createParser(Values config) { + protected RecordParser createParser(ValueObject config) { - return RecordParser.newDelimited(StringEscapeUtils.unescapeJava(config.getValue("delimited") - .map(Value::asString) + return RecordParser.newDelimited(StringEscapeUtils.unescapeJava(config.getString("delimited") .orElseThrow(() -> new IllegalArgumentException("delimited can not be null")))); } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DirectPayloadParserBuilder.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DirectPayloadParserBuilder.java index 5b624ee5..43560428 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DirectPayloadParserBuilder.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DirectPayloadParserBuilder.java @@ -1,6 +1,7 @@ package org.jetlinks.community.network.tcp.parser.strateies; import lombok.SneakyThrows; +import org.jetlinks.community.ValueObject; import org.jetlinks.core.Values; import org.jetlinks.community.network.tcp.parser.DirectRecordParser; import org.jetlinks.community.network.tcp.parser.PayloadParser; @@ -16,7 +17,7 @@ public class DirectPayloadParserBuilder implements PayloadParserBuilderStrategy @Override @SneakyThrows - public PayloadParser build(Values config) { + public PayloadParser build(ValueObject config) { return new DirectRecordParser(); } } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilder.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilder.java index 5336ca77..f6c1c43f 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilder.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilder.java @@ -1,6 +1,7 @@ package org.jetlinks.community.network.tcp.parser.strateies; import io.vertx.core.parsetools.RecordParser; +import org.jetlinks.community.ValueObject; import org.jetlinks.core.Value; import org.jetlinks.core.Values; import org.jetlinks.community.network.tcp.parser.PayloadParserType; @@ -12,9 +13,8 @@ public class FixLengthPayloadParserBuilder extends VertxPayloadParserBuilder { } @Override - protected RecordParser createParser(Values config) { - return RecordParser.newFixed(config.getValue("size") - .map(Value::asInt) + protected RecordParser createParser(ValueObject config) { + return RecordParser.newFixed(config.getInt("size") .orElseThrow(() -> new IllegalArgumentException("size can not be null"))); } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java index 4124d596..20108934 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java @@ -4,6 +4,7 @@ import lombok.SneakyThrows; import org.apache.commons.codec.digest.DigestUtils; import org.hswebframework.expands.script.engine.DynamicScriptEngine; import org.hswebframework.expands.script.engine.DynamicScriptEngineFactory; +import org.jetlinks.community.ValueObject; import org.jetlinks.core.Value; import org.jetlinks.core.Values; import org.jetlinks.community.network.tcp.parser.PayloadParser; @@ -21,12 +22,10 @@ public class ScriptPayloadParserBuilder implements PayloadParserBuilderStrategy @Override @SneakyThrows - public PayloadParser build(Values config) { - String script = config.getValue("script") - .map(Value::asString) + public PayloadParser build(ValueObject config) { + String script = config.getString("script") .orElseThrow(() -> new IllegalArgumentException("script不能为空")); - String lang = config.getValue("lang") - .map(Value::asString) + String lang = config.getString("lang") .orElseThrow(() -> new IllegalArgumentException("lang不能为空")); DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(lang); diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/VertxPayloadParserBuilder.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/VertxPayloadParserBuilder.java index 7ac4b4fe..049fb499 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/VertxPayloadParserBuilder.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/VertxPayloadParserBuilder.java @@ -2,6 +2,7 @@ package org.jetlinks.community.network.tcp.parser.strateies; import io.vertx.core.buffer.Buffer; import io.vertx.core.parsetools.RecordParser; +import org.jetlinks.community.ValueObject; import org.jetlinks.core.Values; import org.jetlinks.community.network.tcp.parser.PayloadParser; import org.jetlinks.community.network.tcp.parser.PayloadParserBuilderStrategy; @@ -15,10 +16,10 @@ public abstract class VertxPayloadParserBuilder implements PayloadParserBuilderS @Override public abstract PayloadParserType getType(); - protected abstract RecordParser createParser(Values config); + protected abstract RecordParser createParser(ValueObject config); @Override - public PayloadParser build(Values config) { + public PayloadParser build(ValueObject config) { return new RecordPayloadParser(createParser(config)); } diff --git a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/server/TcpServerProperties.java b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/server/TcpServerProperties.java index 3a6b0272..22e1f605 100644 --- a/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/server/TcpServerProperties.java +++ b/jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/server/TcpServerProperties.java @@ -50,7 +50,7 @@ public class TcpServerProperties implements ValueObject { } @Override - public Optional get(String name) { - return Optional.ofNullable(parserConfiguration).map(map -> map.get(name)); + public Map getAll() { + return parserConfiguration; } } diff --git a/jetlinks-components/network-component/tcp-component/src/test/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilderTest.java b/jetlinks-components/network-component/tcp-component/src/test/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilderTest.java index 6f622885..1515263c 100644 --- a/jetlinks-components/network-component/tcp-component/src/test/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilderTest.java +++ b/jetlinks-components/network-component/tcp-component/src/test/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilderTest.java @@ -1,6 +1,7 @@ package org.jetlinks.community.network.tcp.parser.strateies; import io.vertx.core.buffer.Buffer; +import org.jetlinks.community.ValueObject; import org.jetlinks.community.network.tcp.parser.PayloadParser; import org.jetlinks.core.Values; import org.junit.Assert; @@ -17,7 +18,7 @@ class FixLengthPayloadParserBuilderTest { @Test void testFixLength() { FixLengthPayloadParserBuilder builder = new FixLengthPayloadParserBuilder(); - PayloadParser parser = builder.build(Values.of(Collections.singletonMap("size", 5))); + PayloadParser parser = builder.build(ValueObject.of(Collections.singletonMap("size", 5))); List arr = new ArrayList<>(); parser.handlePayload() @@ -37,7 +38,7 @@ class FixLengthPayloadParserBuilderTest { @Test void testDelimited() { DelimitedPayloadParserBuilder builder = new DelimitedPayloadParserBuilder(); - PayloadParser parser = builder.build(Values.of(Collections.singletonMap("delimited", "@@"))); + PayloadParser parser = builder.build(ValueObject.of(Collections.singletonMap("delimited", "@@"))); List arr = new ArrayList<>(); parser.handlePayload() diff --git a/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/TimeSeriesData.java b/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/TimeSeriesData.java index 4669c0b0..ce019553 100644 --- a/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/TimeSeriesData.java +++ b/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/TimeSeriesData.java @@ -13,6 +13,11 @@ public interface TimeSeriesData extends ValueObject { Map getData(); + @Override + default Map getAll() { + return getData(); + } + @Override default Optional get(String name) { return Optional.ofNullable(getData().get(name)); diff --git a/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/query/AggregationData.java b/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/query/AggregationData.java index 7b9ecd57..8a2ce964 100644 --- a/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/query/AggregationData.java +++ b/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/query/AggregationData.java @@ -14,7 +14,12 @@ public interface AggregationData extends ValueObject { return Optional.ofNullable(asMap().get(name)); } - static AggregationData of(Map map){ - return ()->map; + @Override + default Map getAll() { + return asMap(); + } + + static AggregationData of(Map map) { + return () -> map; } }