Browse Source

moved geoutils to script api

pull/12965/head
IrynaMatveieva 2 years ago
parent
commit
f0bfea12c0
  1. 3
      application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java
  2. 2
      common/actor/src/main/java/org/thingsboard/server/actors/DefaultTbActorSystem.java
  3. 12
      common/script/script-api/pom.xml
  4. 2
      common/script/script-api/src/main/java/org/thingsboard/script/api/Coordinates.java
  5. 2
      common/script/script-api/src/main/java/org/thingsboard/script/api/GeoUtil.java
  6. 2
      common/script/script-api/src/main/java/org/thingsboard/script/api/Perimeter.java
  7. 2
      common/script/script-api/src/main/java/org/thingsboard/script/api/PerimeterType.java
  8. 2
      common/script/script-api/src/main/java/org/thingsboard/script/api/RangeUnit.java
  9. 6
      common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbUtils.java
  10. 12
      rule-engine/rule-engine-components/pom.xml
  11. 7
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/AbstractGeofencingNode.java
  12. 1
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/TbGpsGeofencingActionNodeConfiguration.java
  13. 2
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/TbGpsGeofencingFilterNodeConfiguration.java
  14. 26
      rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/geo/GeoUtilTest.java
  15. 3
      rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/geo/TbGpsGeofencingFilterNodeTest.java

3
application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java

@ -127,6 +127,9 @@ public class TenantActor extends RuleChainManagerActor {
@Override
public void destroy(TbActorStopReason stopReason, Throwable cause) {
log.info("[{}] Stopping tenant actor.", tenantId);
if (cfActor != null) {
ctx.stop(cfActor.getActorId());
}
}
@Override

2
common/actor/src/main/java/org/thingsboard/server/actors/DefaultTbActorSystem.java

@ -23,7 +23,6 @@ import org.thingsboard.server.common.msg.TbActorMsg;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@ -215,7 +214,6 @@ public class DefaultTbActorSystem implements TbActorSystem {
@Override
public void stop() {
actors.values().forEach(mailbox -> Optional.ofNullable(mailbox).ifPresent(m -> m.destroy(null)));
dispatchers.values().forEach(dispatcher -> {
dispatcher.getExecutor().shutdown();
try {

12
common/script/script-api/pom.xml

@ -48,10 +48,6 @@
<groupId>org.thingsboard.common</groupId>
<artifactId>util</artifactId>
</dependency>
<dependency>
<groupId>org.thingsboard.rule-engine</groupId>
<artifactId>rule-engine-components</artifactId>
</dependency>
<dependency>
<groupId>org.javadelight</groupId>
<artifactId>delight-nashorn-sandbox</artifactId>
@ -115,6 +111,14 @@
<artifactId>awaitility</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.locationtech.spatial4j</groupId>
<artifactId>spatial4j</artifactId>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
</dependency>
</dependencies>
<distributionManagement>

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/Coordinates.java → common/script/script-api/src/main/java/org/thingsboard/script/api/Coordinates.java

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.rule.engine.geo;
package org.thingsboard.script.api;
import lombok.Data;

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/GeoUtil.java → common/script/script-api/src/main/java/org/thingsboard/script/api/GeoUtil.java

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.rule.engine.geo;
package org.thingsboard.script.api;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/Perimeter.java → common/script/script-api/src/main/java/org/thingsboard/script/api/Perimeter.java

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.rule.engine.geo;
package org.thingsboard.script.api;
import lombok.Data;

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/PerimeterType.java → common/script/script-api/src/main/java/org/thingsboard/script/api/PerimeterType.java

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.rule.engine.geo;
package org.thingsboard.script.api;
public enum PerimeterType {
CIRCLE, POLYGON

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/RangeUnit.java → common/script/script-api/src/main/java/org/thingsboard/script/api/RangeUnit.java

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.rule.engine.geo;
package org.thingsboard.script.api;
public enum RangeUnit {
METER(1000.0), KILOMETER(1.0), FOOT(3280.84), MILE(0.62137), NAUTICAL_MILE(0.539957);

6
common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbUtils.java

@ -25,9 +25,9 @@ import org.mvel2.execution.ExecutionArrayList;
import org.mvel2.execution.ExecutionHashMap;
import org.mvel2.util.MethodStub;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.rule.engine.geo.Coordinates;
import org.thingsboard.rule.engine.geo.GeoUtil;
import org.thingsboard.rule.engine.geo.RangeUnit;
import org.thingsboard.script.api.Coordinates;
import org.thingsboard.script.api.GeoUtil;
import org.thingsboard.script.api.RangeUnit;
import org.thingsboard.server.common.data.StringUtils;
import java.io.IOException;

12
rule-engine/rule-engine-components/pom.xml

@ -53,6 +53,10 @@
<artifactId>transport-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.thingsboard.common.script</groupId>
<artifactId>script-api</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
@ -120,14 +124,6 @@
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk18on</artifactId>
</dependency>
<dependency>
<groupId>org.locationtech.spatial4j</groupId>
<artifactId>spatial4j</artifactId>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>

7
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/AbstractGeofencingNode.java

@ -26,6 +26,11 @@ import org.thingsboard.rule.engine.api.TbNode;
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
import org.thingsboard.rule.engine.api.TbNodeException;
import org.thingsboard.rule.engine.api.util.TbNodeUtils;
import org.thingsboard.script.api.Coordinates;
import org.thingsboard.script.api.GeoUtil;
import org.thingsboard.script.api.Perimeter;
import org.thingsboard.script.api.PerimeterType;
import org.thingsboard.script.api.RangeUnit;
import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.msg.TbMsg;
@ -74,7 +79,7 @@ public abstract class AbstractGeofencingNode<T extends TbGpsGeofencingFilterNode
} else if (perimeter.getPerimeterType() == PerimeterType.POLYGON) {
return GeoUtil.contains(perimeter.getPolygonsDefinition(), new Coordinates(latitude, longitude));
} else {
throw new TbNodeException("Unsupported perimeter type: " + perimeter.getPerimeterType() + "!");
throw new TbNodeException("Unsupported perimeter type: " + perimeter.getPerimeterType() + "!");
}
}

1
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/TbGpsGeofencingActionNodeConfiguration.java

@ -16,6 +16,7 @@
package org.thingsboard.rule.engine.geo;
import lombok.Data;
import org.thingsboard.script.api.PerimeterType;
import java.util.concurrent.TimeUnit;

2
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/geo/TbGpsGeofencingFilterNodeConfiguration.java

@ -17,6 +17,8 @@ package org.thingsboard.rule.engine.geo;
import lombok.Data;
import org.thingsboard.rule.engine.api.NodeConfiguration;
import org.thingsboard.script.api.PerimeterType;
import org.thingsboard.script.api.RangeUnit;
/**
* Created by ashvayka on 19.01.18.

26
rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/geo/GeoUtilTest.java

@ -19,6 +19,8 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import org.thingsboard.script.api.Coordinates;
import org.thingsboard.script.api.GeoUtil;
@ExtendWith(MockitoExtension.class)
public class GeoUtilTest {
@ -31,18 +33,18 @@ public class GeoUtilTest {
public static final String SELF_INTERSECTING_WITH_HOLES = "[[[[47.42893833699058,27.17895466200852],[47.41407351681856,37.46095466320853],[49.63741575793274,32.47858934221699]],[[47.84342032696093,29.20045703244998],[49.124803688667576,32.38611942598416],[47.858163521459254,34.714948486085035]]],[[[51.659197648757306,27.947907653551276],[49.63741575793274,32.47858934221699],[51.71367987390804,37.46095466320853]],[[51.20718653775245,30.738363015535448],[51.317169097567344,34.58312797324915],[50.1351109330126,32.51793993882006]]]]";
public static final Coordinates POINT_INSIDE_SIMPLE_RECT_CENTER = new Coordinates(48.37082198780869, 32.673342414527355);
public static final Coordinates POINT_INSIDE_SIMPLE_RECT_NEAR_BORDER = new Coordinates(48.42916753187315,40.956064637716224);
public static final Coordinates POINT_OUTSIDE_SIMPLE_RECT = new Coordinates(52.94806646045028,32.91501335472649);
public static final Coordinates POINT_INSIDE_SAND_CLOCK_CENTER = new Coordinates(49.993588800145105,31.289062500000004);
public static final Coordinates POINT_INSIDE_SAND_CLOCK_NEAR_BORDER = new Coordinates(47.798651123976306,26.895045405470082);
public static final Coordinates POINT_OUTSIDE_SAND_CLOCK_1 = new Coordinates(49.553754212665936,28.03748985004787);
public static final Coordinates POINT_OUTSIDE_SAND_CLOCK_2 = new Coordinates(46.9802466961145,32.321728498980335);
public static final Coordinates POINT_INSIDE_SELF_INTERSECTING_UPPER_CENTER = new Coordinates(50.750366308834884,32.51952867922265);
public static final Coordinates POINT_INSIDE_SELF_INTERSECTING_LOWER_CENTER = new Coordinates(48.1371117277312,32.40967825185941);
public static final Coordinates POINT_INSIDE_SELF_INTERSECTING_NEAR_BORDER = new Coordinates(51.16552151942722,35.66125090181154);
public static final Coordinates POINT_OUTSIDE_SELF_INTERSECTING_1= new Coordinates(49.66777277299077,33.26651158529272);
public static final Coordinates POINT_OUTSIDE_SELF_INTERSECTING_2 = new Coordinates(47.10052840114779,32.16800731166027);
public static final Coordinates POINT_OUTSIDE_SELF_INTERSECTING_3 = new Coordinates(78.76578380252519,15.646485040786361);
public static final Coordinates POINT_INSIDE_SIMPLE_RECT_NEAR_BORDER = new Coordinates(48.42916753187315, 40.956064637716224);
public static final Coordinates POINT_OUTSIDE_SIMPLE_RECT = new Coordinates(52.94806646045028, 32.91501335472649);
public static final Coordinates POINT_INSIDE_SAND_CLOCK_CENTER = new Coordinates(49.993588800145105, 31.289062500000004);
public static final Coordinates POINT_INSIDE_SAND_CLOCK_NEAR_BORDER = new Coordinates(47.798651123976306, 26.895045405470082);
public static final Coordinates POINT_OUTSIDE_SAND_CLOCK_1 = new Coordinates(49.553754212665936, 28.03748985004787);
public static final Coordinates POINT_OUTSIDE_SAND_CLOCK_2 = new Coordinates(46.9802466961145, 32.321728498980335);
public static final Coordinates POINT_INSIDE_SELF_INTERSECTING_UPPER_CENTER = new Coordinates(50.750366308834884, 32.51952867922265);
public static final Coordinates POINT_INSIDE_SELF_INTERSECTING_LOWER_CENTER = new Coordinates(48.1371117277312, 32.40967825185941);
public static final Coordinates POINT_INSIDE_SELF_INTERSECTING_NEAR_BORDER = new Coordinates(51.16552151942722, 35.66125090181154);
public static final Coordinates POINT_OUTSIDE_SELF_INTERSECTING_1 = new Coordinates(49.66777277299077, 33.26651158529272);
public static final Coordinates POINT_OUTSIDE_SELF_INTERSECTING_2 = new Coordinates(47.10052840114779, 32.16800731166027);
public static final Coordinates POINT_OUTSIDE_SELF_INTERSECTING_3 = new Coordinates(78.76578380252519, 15.646485040786361);
@Test

3
rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/geo/TbGpsGeofencingFilterNodeTest.java

@ -24,6 +24,9 @@ import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.rule.engine.api.TbContext;
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
import org.thingsboard.rule.engine.api.TbNodeException;
import org.thingsboard.script.api.Coordinates;
import org.thingsboard.script.api.PerimeterType;
import org.thingsboard.script.api.RangeUnit;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.msg.TbMsgType;

Loading…
Cancel
Save