Browse Source

Update TBEL version to 1.0.1. Improve TBEL helper functions.

pull/7699/head
Igor Kulikov 4 years ago
parent
commit
5045a76062
  1. 40
      common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java
  2. 8
      common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbUtils.java
  3. 2
      pom.xml

40
common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java

@ -17,6 +17,14 @@ package org.thingsboard.script.api.tbel;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
@ -24,6 +32,11 @@ import java.util.TimeZone;
public class TbDate extends Date {
private static final DateTimeFormatter isoDateFormatter = DateTimeFormatter.ofPattern(
"yyyy-MM-dd[[ ]['T']HH:mm[:ss[.SSS]][ ][XXX][Z][z][VV][O]]").withZone(ZoneId.systemDefault());
private static final DateFormat isoDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
public TbDate() {
super();
}
@ -60,8 +73,7 @@ public class TbDate extends Date {
}
public String toISOString() {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
return formatter.format(this);
return isoDateFormat.format(this);
}
public String toLocaleString(String locale) {
@ -79,14 +91,32 @@ public class TbDate extends Date {
return System.currentTimeMillis();
}
public static long parse(String value) {
public static long parse(String value, String format) {
try {
return Date.parse(value);
} catch (IllegalArgumentException e) {
DateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.parse(value).getTime();
} catch (Exception e) {
return -1;
}
}
public static long parse(String value) {
try {
TemporalAccessor accessor = isoDateFormatter.parseBest(value,
ZonedDateTime::from,
LocalDateTime::from,
LocalDate::from);
Instant instant = Instant.from(accessor);
return Instant.EPOCH.until(instant, ChronoUnit.MILLIS);
} catch (Exception e) {
try {
return Date.parse(value);
} catch (IllegalArgumentException e2) {
return -1;
}
}
}
public static long UTC(int year, int month, int date,
int hrs, int min, int sec) {
return Date.UTC(year - 1900, month, date, hrs, min, sec);

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

@ -218,15 +218,15 @@ public class TbUtils {
return parseBytesToInt(data, 0, data.length, bigEndian);
}
public static ExecutionArrayList<Integer> hexToBytes(ExecutionContext ctx, String hex) {
public static ExecutionArrayList<Byte> hexToBytes(ExecutionContext ctx, String hex) {
int len = hex.length();
if (len % 2 > 0) {
throw new IllegalArgumentException("Hex string must be even-length.");
}
ExecutionArrayList<Integer> data = new ExecutionArrayList<>(ctx);
ExecutionArrayList<Byte> data = new ExecutionArrayList<>(ctx);
for (int i = 0; i < len; i += 2) {
data.add((Character.digit(hex.charAt(i), 16) << 4)
+ Character.digit(hex.charAt(i + 1), 16));
data.add((byte)((Character.digit(hex.charAt(i), 16) << 4)
+ Character.digit(hex.charAt(i + 1), 16)));
}
return data;
}

2
pom.xml

@ -77,7 +77,7 @@
<zookeeper.version>3.5.5</zookeeper.version>
<protobuf.version>3.21.9</protobuf.version>
<grpc.version>1.42.1</grpc.version>
<tbel.version>1.0.0</tbel.version>
<tbel.version>1.0.1</tbel.version>
<lombok.version>1.18.18</lombok.version>
<paho.client.version>1.2.4</paho.client.version>
<netty.version>4.1.75.Final</netty.version>

Loading…
Cancel
Save