Commit 4c275888ec840d18b7774825f4742a9df5fdd18d

Authored by Igor Kulikov
2 parents ce82ca0b 52d62688

Merge branch 'master' of github.com:thingsboard/thingsboard

... ... @@ -24,6 +24,8 @@ import java.io.Serializable;
24 24 @Data
25 25 public class ClaimData implements Serializable {
26 26
  27 + private static final long serialVersionUID = -3922621193389915930L;
  28 +
27 29 private final String secretKey;
28 30 private final long expirationTime;
29 31
... ...
... ... @@ -39,6 +39,8 @@ import static org.thingsboard.server.common.data.SearchTextBasedWithAdditionalIn
39 39 @Slf4j
40 40 public class TenantProfile extends SearchTextBased<TenantProfileId> implements HasName {
41 41
  42 + private static final long serialVersionUID = 3021989561267192281L;
  43 +
42 44 @NoXss
43 45 @ApiModelProperty(position = 3, value = "Name of the tenant profile", example = "High Priority Tenants")
44 46 private String name;
... ...
... ... @@ -24,6 +24,8 @@ import java.util.Optional;
24 24 */
25 25 public class BaseAttributeKvEntry implements AttributeKvEntry {
26 26
  27 + private static final long serialVersionUID = -6460767583563159407L;
  28 +
27 29 private final long lastUpdateTs;
28 30 private final KvEntry kv;
29 31
... ...
... ... @@ -25,6 +25,8 @@ import java.io.Serializable;
25 25 @Data
26 26 public class SecuritySettings implements Serializable {
27 27
  28 + private static final long serialVersionUID = -1307613974597312465L;
  29 +
28 30 @ApiModelProperty(position = 1, value = "The user password policy object." )
29 31 private UserPasswordPolicy passwordPolicy;
30 32 @ApiModelProperty(position = 2, value = "Maximum number of failed login attempts allowed before user account is locked." )
... ...
... ... @@ -45,24 +45,42 @@ public class GeoUtil {
45 45 }
46 46
47 47 public static synchronized boolean contains(String polygon, Coordinates coordinates) {
48   - ShapeFactory.PolygonBuilder polygonBuilder = jtsCtx.getShapeFactory().polygon();
49 48 JsonArray polygonArray = new JsonParser().parse(polygon).getAsJsonArray();
50   - boolean first = true;
  49 +
  50 + JsonArray arrayWithCoords = polygonArray;
  51 + JsonArray innerArray = polygonArray.get(0).getAsJsonArray();
  52 + if (!containsPrimitives(innerArray)) {
  53 + arrayWithCoords = innerArray;
  54 + }
  55 +
  56 + Shape shape = buildPolygonFromJsonCoords(arrayWithCoords);
  57 + Point point = jtsCtx.getShapeFactory().pointXY(coordinates.getLongitude(), coordinates.getLatitude());
  58 + return shape.relate(point).equals(SpatialRelation.CONTAINS);
  59 + }
  60 +
  61 + private static Shape buildPolygonFromJsonCoords(JsonArray coordinates) {
  62 + ShapeFactory.PolygonBuilder polygonBuilder = jtsCtx.getShapeFactory().polygon();
  63 + boolean isFirst = true;
51 64 double firstLat = 0.0;
52 65 double firstLng = 0.0;
53   - for (JsonElement jsonElement : polygonArray) {
54   - double lat = jsonElement.getAsJsonArray().get(0).getAsDouble();
55   - double lng = jsonElement.getAsJsonArray().get(1).getAsDouble();
56   - if (first) {
  66 + for (JsonElement element : coordinates) {
  67 + double lat = element.getAsJsonArray().get(0).getAsDouble();
  68 + double lng = element.getAsJsonArray().get(1).getAsDouble();
  69 + if (isFirst) {
57 70 firstLat = lat;
58 71 firstLng = lng;
59   - first = false;
  72 + isFirst = false;
60 73 }
61   - polygonBuilder.pointXY(jtsCtx.getShapeFactory().normX(lng), jtsCtx.getShapeFactory().normY(lat));
  74 + polygonBuilder.pointXY(jtsCtx.getShapeFactory().normX(lng), jtsCtx.getShapeFactory().normX(lat));
62 75 }
63   - polygonBuilder.pointXY(jtsCtx.getShapeFactory().normX(firstLng), jtsCtx.getShapeFactory().normY(firstLat));
64   - Shape shape = polygonBuilder.buildOrRect();
65   - Point point = jtsCtx.getShapeFactory().pointXY(coordinates.getLongitude(), coordinates.getLatitude());
66   - return shape.relate(point).equals(SpatialRelation.CONTAINS);
  76 + polygonBuilder.pointXY(jtsCtx.getShapeFactory().normX(firstLng), jtsCtx.getShapeFactory().normX(firstLat));
  77 + return polygonBuilder.buildOrRect();
  78 + }
  79 +
  80 + private static boolean containsPrimitives(JsonArray array) {
  81 + for (JsonElement element : array) {
  82 + return element.isJsonPrimitive();
  83 + }
  84 + return false;
67 85 }
68 86 }
... ...