zhou-hao 5 سال پیش
والد
کامیت
bbf2910bf3
15فایلهای تغییر یافته به همراه61 افزوده شده و 28 حذف شده
  1. 20 1
      jetlinks-components/common-component/src/main/java/org/jetlinks/community/ValueObject.java
  2. 2 2
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/TcpClientProperties.java
  3. 1 1
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/client/VertxTcpClientProvider.java
  4. 2 1
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/DefaultPayloadParserBuilder.java
  5. 2 1
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilder.java
  6. 2 2
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/PayloadParserBuilderStrategy.java
  7. 3 3
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DelimitedPayloadParserBuilder.java
  8. 2 1
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/DirectPayloadParserBuilder.java
  9. 3 3
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilder.java
  10. 4 5
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/ScriptPayloadParserBuilder.java
  11. 3 2
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/strateies/VertxPayloadParserBuilder.java
  12. 2 2
      jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/server/TcpServerProperties.java
  13. 3 2
      jetlinks-components/network-component/tcp-component/src/test/java/org/jetlinks/community/network/tcp/parser/strateies/FixLengthPayloadParserBuilderTest.java
  14. 5 0
      jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/TimeSeriesData.java
  15. 7 2
      jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/query/AggregationData.java

+ 20 - 1
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.time.Duration;
 import java.util.Date;
 import java.util.Date;
+import java.util.Map;
 import java.util.Optional;
 import java.util.Optional;
 
 
 public interface ValueObject {
 public interface ValueObject {
 
 
-    Optional<Object> get(String name);
+    Map<String, Object> getAll();
+
+    default Optional<Object> get(String name) {
+        return Optional.ofNullable(getAll())
+            .map(map -> map.get(name));
+    }
 
 
     default Optional<Integer> getInt(String name) {
     default Optional<Integer> getInt(String name) {
         return get(name, Integer.class);
         return get(name, Integer.class);
@@ -74,4 +80,17 @@ public interface ValueObject {
             .map(obj -> FastBeanCopier.DEFAULT_CONVERT.convert(obj, type, FastBeanCopier.EMPTY_CLASS_ARRAY));
             .map(obj -> FastBeanCopier.DEFAULT_CONVERT.convert(obj, type, FastBeanCopier.EMPTY_CLASS_ARRAY));
     }
     }
 
 
+    static ValueObject of(Map<String, Object> mapVal) {
+        return new ValueObject() {
+            @Override
+            public Optional<Object> get(String name) {
+                return Optional.empty();
+            }
+
+            @Override
+            public Map<String, Object> getAll() {
+                return mapVal;
+            }
+        };
+    }
 }
 }

+ 2 - 2
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;
     private boolean enabled;
 
 
     @Override
     @Override
-    public Optional<Object> get(String name) {
-        return Optional.ofNullable(parserConfiguration).map(map -> map.get(name));
+    public Map<String, Object> getAll() {
+        return parserConfiguration;
     }
     }
 }
 }

+ 1 - 1
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<TcpClientProperti
     }
     }
 
 
     public void initClient(VertxTcpClient client, TcpClientProperties properties) {
     public void initClient(VertxTcpClient client, TcpClientProperties properties) {
-        client.setRecordParser(payloadParserBuilder.build(properties.getParserType(), Values.of(properties.getParserConfiguration())));
+        client.setRecordParser(payloadParserBuilder.build(properties.getParserType(), properties));
         NetClient netClient = vertx.createNetClient(properties.getOptions());
         NetClient netClient = vertx.createNetClient(properties.getOptions());
         client.setClient(netClient);
         client.setClient(netClient);
         client.setKeepAliveTimeoutMs(properties.getLong("keepAliveTimeout").orElse(Duration.ofMinutes(10).toMillis()));
         client.setKeepAliveTimeoutMs(properties.getLong("keepAliveTimeout").orElse(Duration.ofMinutes(10).toMillis()));

+ 2 - 1
jetlinks-components/network-component/tcp-component/src/main/java/org/jetlinks/community/network/tcp/parser/DefaultPayloadParserBuilder.java

@@ -1,5 +1,6 @@
 package org.jetlinks.community.network.tcp.parser;
 package org.jetlinks.community.network.tcp.parser;
 
 
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 import org.jetlinks.community.network.tcp.parser.strateies.DelimitedPayloadParserBuilder;
 import org.jetlinks.community.network.tcp.parser.strateies.DelimitedPayloadParserBuilder;
 import org.jetlinks.community.network.tcp.parser.strateies.DirectPayloadParserBuilder;
 import org.jetlinks.community.network.tcp.parser.strateies.DirectPayloadParserBuilder;
@@ -25,7 +26,7 @@ public class DefaultPayloadParserBuilder implements PayloadParserBuilder, BeanPo
         register(new DirectPayloadParserBuilder());
         register(new DirectPayloadParserBuilder());
     }
     }
     @Override
     @Override
-    public PayloadParser build(PayloadParserType type, Values configuration) {
+    public PayloadParser build(PayloadParserType type, ValueObject configuration) {
         return Optional.ofNullable(strategyMap.get(type))
         return Optional.ofNullable(strategyMap.get(type))
                 .map(builder -> builder.build(configuration))
                 .map(builder -> builder.build(configuration))
                 .orElseThrow(() -> new UnsupportedOperationException("unsupported parser:" + type));
                 .orElseThrow(() -> new UnsupportedOperationException("unsupported parser:" + type));

+ 2 - 1
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;
 package org.jetlinks.community.network.tcp.parser;
 
 
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 
 
 public interface PayloadParserBuilder {
 public interface PayloadParserBuilder {
 
 
-    PayloadParser build(PayloadParserType type, Values configuration);
+    PayloadParser build(PayloadParserType type, ValueObject configuration);
 
 
 }
 }

+ 2 - 2
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;
 package org.jetlinks.community.network.tcp.parser;
 
 
-import org.jetlinks.core.Values;
+import org.jetlinks.community.ValueObject;
 
 
 public interface PayloadParserBuilderStrategy {
 public interface PayloadParserBuilderStrategy {
     PayloadParserType getType();
     PayloadParserType getType();
 
 
-    PayloadParser build(Values config);
+    PayloadParser build(ValueObject config);
 }
 }

+ 3 - 3
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 io.vertx.core.parsetools.RecordParser;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringEscapeUtils;
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.core.Value;
 import org.jetlinks.core.Value;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 import org.jetlinks.community.network.tcp.parser.PayloadParserType;
 import org.jetlinks.community.network.tcp.parser.PayloadParserType;
@@ -13,10 +14,9 @@ public class DelimitedPayloadParserBuilder extends VertxPayloadParserBuilder {
     }
     }
 
 
     @Override
     @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"))));
                 .orElseThrow(() -> new IllegalArgumentException("delimited can not be null"))));
     }
     }
 
 

+ 2 - 1
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;
 package org.jetlinks.community.network.tcp.parser.strateies;
 
 
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 import org.jetlinks.community.network.tcp.parser.DirectRecordParser;
 import org.jetlinks.community.network.tcp.parser.DirectRecordParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
@@ -16,7 +17,7 @@ public class DirectPayloadParserBuilder implements PayloadParserBuilderStrategy
 
 
     @Override
     @Override
     @SneakyThrows
     @SneakyThrows
-    public PayloadParser build(Values config) {
+    public PayloadParser build(ValueObject config) {
         return new DirectRecordParser();
         return new DirectRecordParser();
     }
     }
 }
 }

+ 3 - 3
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;
 package org.jetlinks.community.network.tcp.parser.strateies;
 
 
 import io.vertx.core.parsetools.RecordParser;
 import io.vertx.core.parsetools.RecordParser;
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.core.Value;
 import org.jetlinks.core.Value;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 import org.jetlinks.community.network.tcp.parser.PayloadParserType;
 import org.jetlinks.community.network.tcp.parser.PayloadParserType;
@@ -12,9 +13,8 @@ public class FixLengthPayloadParserBuilder extends VertxPayloadParserBuilder {
     }
     }
 
 
     @Override
     @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")));
                 .orElseThrow(() -> new IllegalArgumentException("size can not be null")));
     }
     }
 
 

+ 4 - 5
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.apache.commons.codec.digest.DigestUtils;
 import org.hswebframework.expands.script.engine.DynamicScriptEngine;
 import org.hswebframework.expands.script.engine.DynamicScriptEngine;
 import org.hswebframework.expands.script.engine.DynamicScriptEngineFactory;
 import org.hswebframework.expands.script.engine.DynamicScriptEngineFactory;
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.core.Value;
 import org.jetlinks.core.Value;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
@@ -21,12 +22,10 @@ public class ScriptPayloadParserBuilder implements PayloadParserBuilderStrategy
 
 
     @Override
     @Override
     @SneakyThrows
     @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不能为空"));
             .orElseThrow(() -> new IllegalArgumentException("script不能为空"));
-        String lang = config.getValue("lang")
-            .map(Value::asString)
+        String lang = config.getString("lang")
             .orElseThrow(() -> new IllegalArgumentException("lang不能为空"));
             .orElseThrow(() -> new IllegalArgumentException("lang不能为空"));
 
 
         DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(lang);
         DynamicScriptEngine engine = DynamicScriptEngineFactory.getEngine(lang);

+ 3 - 2
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.buffer.Buffer;
 import io.vertx.core.parsetools.RecordParser;
 import io.vertx.core.parsetools.RecordParser;
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParserBuilderStrategy;
 import org.jetlinks.community.network.tcp.parser.PayloadParserBuilderStrategy;
@@ -15,10 +16,10 @@ public abstract class VertxPayloadParserBuilder implements PayloadParserBuilderS
     @Override
     @Override
     public abstract PayloadParserType getType();
     public abstract PayloadParserType getType();
 
 
-    protected abstract RecordParser createParser(Values config);
+    protected abstract RecordParser createParser(ValueObject config);
 
 
     @Override
     @Override
-    public PayloadParser build(Values config) {
+    public PayloadParser build(ValueObject config) {
         return new RecordPayloadParser(createParser(config));
         return new RecordPayloadParser(createParser(config));
     }
     }
 
 

+ 2 - 2
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
     @Override
-    public Optional<Object> get(String name) {
-        return Optional.ofNullable(parserConfiguration).map(map -> map.get(name));
+    public Map<String, Object> getAll() {
+        return parserConfiguration;
     }
     }
 }
 }

+ 3 - 2
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;
 package org.jetlinks.community.network.tcp.parser.strateies;
 
 
 import io.vertx.core.buffer.Buffer;
 import io.vertx.core.buffer.Buffer;
+import org.jetlinks.community.ValueObject;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.community.network.tcp.parser.PayloadParser;
 import org.jetlinks.core.Values;
 import org.jetlinks.core.Values;
 import org.junit.Assert;
 import org.junit.Assert;
@@ -17,7 +18,7 @@ class FixLengthPayloadParserBuilderTest {
     @Test
     @Test
     void testFixLength() {
     void testFixLength() {
         FixLengthPayloadParserBuilder builder = new FixLengthPayloadParserBuilder();
         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<String>  arr = new ArrayList<>();
         List<String>  arr = new ArrayList<>();
 
 
         parser.handlePayload()
         parser.handlePayload()
@@ -37,7 +38,7 @@ class FixLengthPayloadParserBuilderTest {
     @Test
     @Test
     void testDelimited() {
     void testDelimited() {
         DelimitedPayloadParserBuilder builder = new DelimitedPayloadParserBuilder();
         DelimitedPayloadParserBuilder builder = new DelimitedPayloadParserBuilder();
-        PayloadParser parser = builder.build(Values.of(Collections.singletonMap("delimited", "@@")));
+        PayloadParser parser = builder.build(ValueObject.of(Collections.singletonMap("delimited", "@@")));
         List<String>  arr = new ArrayList<>();
         List<String>  arr = new ArrayList<>();
 
 
         parser.handlePayload()
         parser.handlePayload()

+ 5 - 0
jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/TimeSeriesData.java

@@ -13,6 +13,11 @@ public interface TimeSeriesData extends ValueObject {
 
 
     Map<String, Object> getData();
     Map<String, Object> getData();
 
 
+    @Override
+    default Map<String, Object> getAll() {
+        return getData();
+    }
+
     @Override
     @Override
     default Optional<Object> get(String name) {
     default Optional<Object> get(String name) {
         return Optional.ofNullable(getData().get(name));
         return Optional.ofNullable(getData().get(name));

+ 7 - 2
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));
         return Optional.ofNullable(asMap().get(name));
     }
     }
 
 
-    static AggregationData of(Map<String,Object> map){
-        return ()->map;
+    @Override
+    default Map<String, Object> getAll() {
+        return asMap();
+    }
+
+    static AggregationData of(Map<String, Object> map) {
+        return () -> map;
     }
     }
 }
 }