From 6b5947e18d99d133a813f721235fc253f1d250f9 Mon Sep 17 00:00:00 2001 From: lsiepel Date: Fri, 17 Feb 2023 14:01:58 +0100 Subject: [PATCH 1/6] Remove org.apache.commons Signed-off-by: lsiepel --- .../max/internal/command/MCommand.java | 2 +- .../max/internal/command/TCommand.java | 9 ++- .../max/internal/message/CMessage.java | 4 +- .../max/internal/util/StringUtils.java | 79 +++++++++++++++++++ .../max/internal/util/StringUtilsTest.java | 42 ++++++++++ 5 files changed, 130 insertions(+), 6 deletions(-) create mode 100644 bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java create mode 100644 bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java index 45dc66d9bba3b..d95d19348306a 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java @@ -21,11 +21,11 @@ import java.util.Set; import java.util.TreeSet; -import org.apache.commons.lang3.StringUtils; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.binding.max.internal.Utils; import org.openhab.binding.max.internal.device.Device; import org.openhab.binding.max.internal.device.RoomInformation; +import org.openhab.binding.max.internal.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/TCommand.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/TCommand.java index 401235d386d0e..f119e6562aaf0 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/TCommand.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/TCommand.java @@ -16,7 +16,6 @@ import java.util.Base64; import java.util.List; -import org.apache.commons.lang3.ArrayUtils; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.binding.max.internal.Utils; @@ -49,9 +48,13 @@ public void addRoom(String rfAddress) { @Override public String getCommandString() { final int updateForced = forceUpdate ? FORCE_UPDATE : NO_FORCE_UPDATE; - byte[] commandArray = null; + byte[] commandArray = new byte[0]; for (String rfAddress : rfAddresses) { - commandArray = ArrayUtils.addAll(Utils.hexStringToByteArray(rfAddress), commandArray); + byte[] rfAddressArray = Utils.hexStringToByteArray(rfAddress); + byte[] tnmpArray = new byte[rfAddressArray.length + commandArray.length]; + System.arraycopy(rfAddressArray, 0, tnmpArray, 0, rfAddressArray.length); + System.arraycopy(commandArray, 0, tnmpArray, rfAddressArray.length, commandArray.length); + commandArray = tnmpArray; } String encodedString = Base64.getEncoder().encodeToString(commandArray); diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java index 927ca59d25310..64024b0f74ee7 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java @@ -25,10 +25,10 @@ import java.util.HashMap; import java.util.Map; -import org.apache.commons.lang3.StringUtils; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.binding.max.internal.Utils; import org.openhab.binding.max.internal.device.DeviceType; +import org.openhab.binding.max.internal.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -278,7 +278,7 @@ public void debug(Logger logger) { logger.debug("RoomID: {}", roomId); for (String key : properties.keySet()) { if (!key.startsWith("Unknown")) { - String propertyName = String.join(" ", StringUtils.splitByCharacterTypeCamelCase(key)); + String propertyName = String.join(" ", StringUtils.splitByCharacterType(key)); logger.debug("{}: {}", propertyName, properties.get(key)); } else { logger.debug("{}: {}", key, properties.get(key)); diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java new file mode 100644 index 0000000000000..ca1b7a26f9246 --- /dev/null +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.max.internal.util; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +/** + * The {@link StringUtils} class defines some static string utility methods + * + * @author Leo Siepel - Initial contribution + */ +@NonNullByDefault +public class StringUtils { + + /** + * Input string is shortened to the maxwidth, the last 3 chars are replaced by ... + * + * For example: (maxWidth 18) input="openHAB is the greatest ever", return="openHAB is the ..." + * + * @param input input string + * @param maxWidth maxmimum amount of characters to return (including ...) + * @return Abbreviated String + */ + public static @Nullable String abbreviate(@Nullable String input, int maxWidth) { + if (input != null) { + if (input.length() <= 4 || input.length() <= maxWidth) { + return input; + } + return input.substring(0, maxWidth - 3) + "..."; + } + return input; + } + + public static @Nullable String @Nullable [] splitByCharacterType(@Nullable String input) { + if (input == null) { + return null; + } + if (input.isBlank()) { + return new String[0]; + } + List cache = new ArrayList<>(); + char[] inputAsCharArray = input.toCharArray(); + int prevType = Character.getType(inputAsCharArray[0]); + int prevTypeStart = 0; + for (int i = prevTypeStart + 1; i < inputAsCharArray.length; i++) { + int curType = Character.getType(inputAsCharArray[i]); + if (prevType == curType) { + continue; + } + if (curType == Character.LOWERCASE_LETTER && prevType == Character.UPPERCASE_LETTER) { + int tmpStart = i - 1; + if (tmpStart != prevTypeStart) { + cache.add(new String(inputAsCharArray, prevTypeStart, tmpStart - prevTypeStart)); + prevTypeStart = tmpStart; + } + } else { + cache.add(new String(inputAsCharArray, prevTypeStart, i - prevTypeStart)); + prevTypeStart = i; + } + prevType = curType; + } + cache.add(new String(inputAsCharArray, prevTypeStart, inputAsCharArray.length - prevTypeStart)); + return cache.toArray(String[]::new); + } +} diff --git a/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java b/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java new file mode 100644 index 0000000000000..0e54047dc0dd7 --- /dev/null +++ b/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2010-2023 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ + +package org.openhab.binding.max.internal.util; + +import static org.junit.jupiter.api.Assertions.*; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.junit.jupiter.api.Test; + +/** + * The {@link StringUtils} class defines some static string utility methods + * + * @author Leo Siepel - Initial contribution + */ +@NonNullByDefault +public class StringUtilsTest { + + @Test + public void splitByCharacterType() { + assertNull(StringUtils.splitByCharacterType(null)); + assertArrayEquals(new String[0], StringUtils.splitByCharacterType("")); + assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, StringUtils.splitByCharacterType("ab de fg")); + assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, + StringUtils.splitByCharacterType("ab de fg")); + assertArrayEquals(new String[] { "ab", ":", "cd", ":", "ef" }, StringUtils.splitByCharacterType("ab:cd:ef")); + assertArrayEquals(new String[] { "number", "5" }, StringUtils.splitByCharacterType("number5")); + assertArrayEquals(new String[] { "foo", "Bar" }, StringUtils.splitByCharacterType("fooBar")); + assertArrayEquals(new String[] { "foo", "200", "Bar" }, StringUtils.splitByCharacterType("foo200Bar")); + assertArrayEquals(new String[] { "ASF", "Rules" }, StringUtils.splitByCharacterType("ASFRules")); + } +} From a4e786038441a44cd6adace4bc590338f70b7c99 Mon Sep 17 00:00:00 2001 From: lsiepel Date: Fri, 17 Feb 2023 14:55:03 +0100 Subject: [PATCH 2/6] Correct nullability Signed-off-by: lsiepel --- .../org/openhab/binding/max/internal/util/StringUtils.java | 4 ++-- .../openhab/binding/max/internal/util/StringUtilsTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java index ca1b7a26f9246..1379e8f16ff13 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java @@ -45,9 +45,9 @@ public class StringUtils { return input; } - public static @Nullable String @Nullable [] splitByCharacterType(@Nullable String input) { + public static String[] splitByCharacterType(@Nullable String input) { if (input == null) { - return null; + return new String[0]; } if (input.isBlank()) { return new String[0]; diff --git a/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java b/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java index 0e54047dc0dd7..b50670e930587 100644 --- a/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java +++ b/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java @@ -28,7 +28,7 @@ public class StringUtilsTest { @Test public void splitByCharacterType() { - assertNull(StringUtils.splitByCharacterType(null)); + assertArrayEquals(new String[0], StringUtils.splitByCharacterType(null)); assertArrayEquals(new String[0], StringUtils.splitByCharacterType("")); assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, StringUtils.splitByCharacterType("ab de fg")); assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, From a31b581a82dcc10534ee72e441d307a47563da4a Mon Sep 17 00:00:00 2001 From: Leo Siepel Date: Sun, 15 Oct 2023 21:37:57 +0200 Subject: [PATCH 3/6] adapt to core stringutils Signed-off-by: Leo Siepel --- .../max/internal/message/CMessage.java | 2 +- .../max/internal/util/StringUtils.java | 32 -------------- .../max/internal/util/StringUtilsTest.java | 42 ------------------- 3 files changed, 1 insertion(+), 75 deletions(-) delete mode 100644 bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java index c1ce23dabc4c1..7fd863e05a990 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java @@ -28,7 +28,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.binding.max.internal.Utils; import org.openhab.binding.max.internal.device.DeviceType; -import org.openhab.binding.max.internal.util.StringUtils; +import org.openhab.core.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java index 1379e8f16ff13..84d3e03e49f87 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java @@ -44,36 +44,4 @@ public class StringUtils { } return input; } - - public static String[] splitByCharacterType(@Nullable String input) { - if (input == null) { - return new String[0]; - } - if (input.isBlank()) { - return new String[0]; - } - List cache = new ArrayList<>(); - char[] inputAsCharArray = input.toCharArray(); - int prevType = Character.getType(inputAsCharArray[0]); - int prevTypeStart = 0; - for (int i = prevTypeStart + 1; i < inputAsCharArray.length; i++) { - int curType = Character.getType(inputAsCharArray[i]); - if (prevType == curType) { - continue; - } - if (curType == Character.LOWERCASE_LETTER && prevType == Character.UPPERCASE_LETTER) { - int tmpStart = i - 1; - if (tmpStart != prevTypeStart) { - cache.add(new String(inputAsCharArray, prevTypeStart, tmpStart - prevTypeStart)); - prevTypeStart = tmpStart; - } - } else { - cache.add(new String(inputAsCharArray, prevTypeStart, i - prevTypeStart)); - prevTypeStart = i; - } - prevType = curType; - } - cache.add(new String(inputAsCharArray, prevTypeStart, inputAsCharArray.length - prevTypeStart)); - return cache.toArray(String[]::new); - } } diff --git a/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java b/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java deleted file mode 100644 index b50670e930587..0000000000000 --- a/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/util/StringUtilsTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (c) 2010-2023 Contributors to the openHAB project - * - * See the NOTICE file(s) distributed with this work for additional - * information. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0 - * - * SPDX-License-Identifier: EPL-2.0 - */ - -package org.openhab.binding.max.internal.util; - -import static org.junit.jupiter.api.Assertions.*; - -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.junit.jupiter.api.Test; - -/** - * The {@link StringUtils} class defines some static string utility methods - * - * @author Leo Siepel - Initial contribution - */ -@NonNullByDefault -public class StringUtilsTest { - - @Test - public void splitByCharacterType() { - assertArrayEquals(new String[0], StringUtils.splitByCharacterType(null)); - assertArrayEquals(new String[0], StringUtils.splitByCharacterType("")); - assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, StringUtils.splitByCharacterType("ab de fg")); - assertArrayEquals(new String[] { "ab", " ", "de", " ", "fg" }, - StringUtils.splitByCharacterType("ab de fg")); - assertArrayEquals(new String[] { "ab", ":", "cd", ":", "ef" }, StringUtils.splitByCharacterType("ab:cd:ef")); - assertArrayEquals(new String[] { "number", "5" }, StringUtils.splitByCharacterType("number5")); - assertArrayEquals(new String[] { "foo", "Bar" }, StringUtils.splitByCharacterType("fooBar")); - assertArrayEquals(new String[] { "foo", "200", "Bar" }, StringUtils.splitByCharacterType("foo200Bar")); - assertArrayEquals(new String[] { "ASF", "Rules" }, StringUtils.splitByCharacterType("ASFRules")); - } -} From dcca27171c854a19df96078910eca16e7db189c0 Mon Sep 17 00:00:00 2001 From: Leo Siepel Date: Mon, 16 Oct 2023 22:57:27 +0200 Subject: [PATCH 4/6] spotless Signed-off-by: Leo Siepel --- .../org/openhab/binding/max/internal/util/StringUtils.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java index 84d3e03e49f87..98eef5dc058ec 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java @@ -12,9 +12,6 @@ */ package org.openhab.binding.max.internal.util; -import java.util.ArrayList; -import java.util.List; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; From 149ecba0cd0c98f237a54d9745802e1768dd9100 Mon Sep 17 00:00:00 2001 From: Leo Siepel Date: Mon, 1 Apr 2024 12:03:40 +0200 Subject: [PATCH 5/6] Adjust to core util class Signed-off-by: Leo Siepel --- .../max/internal/command/MCommand.java | 2 +- .../max/internal/util/StringUtils.java | 44 ------------------- 2 files changed, 1 insertion(+), 45 deletions(-) delete mode 100644 bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java index 581bbcca9f5bf..2188b8d8a0855 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/command/MCommand.java @@ -25,7 +25,7 @@ import org.openhab.binding.max.internal.Utils; import org.openhab.binding.max.internal.device.Device; import org.openhab.binding.max.internal.device.RoomInformation; -import org.openhab.binding.max.internal.util.StringUtils; +import org.openhab.core.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java deleted file mode 100644 index 98eef5dc058ec..0000000000000 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/util/StringUtils.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (c) 2010-2023 Contributors to the openHAB project - * - * See the NOTICE file(s) distributed with this work for additional - * information. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0 - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.openhab.binding.max.internal.util; - -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; - -/** - * The {@link StringUtils} class defines some static string utility methods - * - * @author Leo Siepel - Initial contribution - */ -@NonNullByDefault -public class StringUtils { - - /** - * Input string is shortened to the maxwidth, the last 3 chars are replaced by ... - * - * For example: (maxWidth 18) input="openHAB is the greatest ever", return="openHAB is the ..." - * - * @param input input string - * @param maxWidth maxmimum amount of characters to return (including ...) - * @return Abbreviated String - */ - public static @Nullable String abbreviate(@Nullable String input, int maxWidth) { - if (input != null) { - if (input.length() <= 4 || input.length() <= maxWidth) { - return input; - } - return input.substring(0, maxWidth - 3) + "..."; - } - return input; - } -} From 14b74bc0e603976893c6878ff7c9339fb65d9bd7 Mon Sep 17 00:00:00 2001 From: Leo Siepel Date: Mon, 1 Apr 2024 12:08:06 +0200 Subject: [PATCH 6/6] Improive checkstyle warnings Signed-off-by: Leo Siepel --- .../max/internal/handler/MaxCubeBridgeHandler.java | 4 ++-- .../max/internal/handler/MaxDevicesHandler.java | 12 ++++++------ .../binding/max/internal/message/CMessage.java | 10 ++-------- .../max/internal/message/MessageProcessorTest.java | 14 +++++++------- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxCubeBridgeHandler.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxCubeBridgeHandler.java index 8475d391d2db4..ea8f42a33087b 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxCubeBridgeHandler.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxCubeBridgeHandler.java @@ -126,7 +126,7 @@ private enum BackupState { /** maximum queue size that we're allowing */ private static final int MAX_COMMANDS = 50; private static final int MAX_DUTY_CYCLE = 80; - private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd-HHmm"); + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd-HHmm"); private final Logger logger = LoggerFactory.getLogger(MaxCubeBridgeHandler.class); private final List devices = new ArrayList<>(); @@ -1025,7 +1025,7 @@ public boolean hasExcessDutyCycle() { public void backup() { this.backup = BackupState.REQUESTED; this.backupUtil = new MaxBackupUtils( - new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().format(formatter)); + new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().format(FORMATTER)); socketClose(); } } diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxDevicesHandler.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxDevicesHandler.java index bc6ab1cc7bf03..fd09c1e156dce 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxDevicesHandler.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/handler/MaxDevicesHandler.java @@ -536,30 +536,30 @@ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { */ private void setDeviceConfiguration(Device device) { try { - boolean config_changed = false; + boolean configChanged = false; logger.debug("MAX! {} {} configuration update", device.getType(), device.getSerialNumber()); Configuration configuration = editConfiguration(); if (!device.getRoomName().equalsIgnoreCase((String) getConfig().get(PROPERTY_ROOMNAME))) { configuration.put(PROPERTY_ROOMNAME, device.getRoomName()); - config_changed = true; + configChanged = true; } if (getConfig().get(PROPERTY_ROOMID) == null || new BigDecimal(device.getRoomId()) .compareTo((BigDecimal) getConfig().get(PROPERTY_ROOMID)) != 0) { configuration.put(PROPERTY_ROOMID, new BigDecimal(device.getRoomId())); - config_changed = true; + configChanged = true; } if (!device.getName().equalsIgnoreCase((String) getConfig().get(PROPERTY_DEVICENAME))) { configuration.put(PROPERTY_DEVICENAME, device.getName()); - config_changed = true; + configChanged = true; } if (!device.getRFAddress().equalsIgnoreCase((String) getConfig().get(PROPERTY_RFADDRESS))) { configuration.put(PROPERTY_RFADDRESS, device.getRFAddress()); - config_changed = true; + configChanged = true; } for (Map.Entry entry : device.getProperties().entrySet()) { configuration.put(entry.getKey(), entry.getValue()); } - if (config_changed) { + if (configChanged) { updateConfiguration(configuration); logger.debug("Config updated: {}", configuration.getProperties()); } else { diff --git a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java index 4c4711796bb45..1bbc4f7b39851 100644 --- a/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java +++ b/bundles/org.openhab.binding.max/src/main/java/org/openhab/binding/max/internal/message/CMessage.java @@ -109,11 +109,7 @@ public CMessage(String raw) { private String getSerialNumber(byte[] bytes) { byte[] sn = new byte[10]; - - for (int i = 0; i < 10; i++) { - sn[i] = bytes[i + 8]; - } - + System.arraycopy(bytes, 8, sn, 0, sn.length); return new String(sn, StandardCharsets.UTF_8); } @@ -124,10 +120,8 @@ private String parseData(byte[] bytes) { try { int dataStart = 18; byte[] sn = new byte[bytes.length - dataStart]; + System.arraycopy(bytes, dataStart, sn, 0, sn.length); - for (int i = 0; i < sn.length; i++) { - sn[i] = bytes[i + dataStart]; - } logger.trace("DataBytes: {}", Utils.getHex(sn)); return new String(sn, StandardCharsets.UTF_8); } catch (Exception e) { diff --git a/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/message/MessageProcessorTest.java b/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/message/MessageProcessorTest.java index bb1d1d52b3768..8ca49df5f05d2 100644 --- a/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/message/MessageProcessorTest.java +++ b/bundles/org.openhab.binding.max/src/test/java/org/openhab/binding/max/internal/message/MessageProcessorTest.java @@ -91,15 +91,15 @@ public void testSingleM_Message() throws Exception { @Test public void testMultilineM_Message() throws Exception { - String line1_part1 = "M:00,02,"; - String line1_part2 = "VgIMAQpXb2huemltbWVyCvMrAgtUb2lsZXR0ZSBFRwrenQMOVG9pbGV0dGUgMS4gT0cK3rgECkJhZGV6aW1tZXIK3qoFDFNjaGxhZnppbW1lcgresQYDSmFuD4lCBwlDaHJpc3RpbmEPiTYIBEZsdXIPiT0KEEJhZGV6aW1tZXIgMi4gT0cPiRwLBULDvHJvD4k/DAxHw6RzdGV6aW1tZXIPiRoJC1dhc2Noa8O8Y2hlD4lXNgQHOCtLRVEwMTg4NjczCFRlcnJhc3NlAQQHMblLRVEwMTg3MTkwCEZsdXJ0w7xyAQIK8ytLRVEwMzc5NTg3C1dhbmRoZWl6dW5nAQIK9P9LRVEwMzgwMDU1DkZlbnN0ZXJoZWl6dW5nAQQHMbtLRVEwMTg3MTg4CEZsdXJ0w7xyAgQHMuxLRVEwMTg2ODg0B0ZlbnN0ZXICAQrenUtFUTA0MDY5NjIHSGVpenVuZwIBCt64S0VRMDQwNjk4OQdIZWl6dW5nAwQIFGdLRVEwMTkwNTc3B0ZlbnN0ZXIDBAc2l0tFUTAxODU5NDUIRmx1cnTDvHIEAQreqktFUTA0MDY5NzUHSGVpenVuZwQBCt8JS0VRMDQwNzA3MA5IYW5kdHVjaGVpenVuZwQEBzhTS0VRMDE4ODcxMAdGZW5zdGVyBAQIFIxLRVEwMTkwNTQzFkZlbnN0ZXIgU3RyYcOfZSByZWNodHMFAQresUtFUTA0MDY5ODIHSGVpenVuZwUEBzHmS0VRMDE4NzE0NhVGZW5zdGVyIFN0cmHDn2UgbGlua3MFAxBXqUxFUTA5ODIxNTYOV2FuZHRoZXJtb3N0YXQBBA/u1ExFUTA3OTQ3NTIIRmx1cnTDvHIGBA/v6kxFUTA3OTQ0NzQNRmVuc3RlciBsaW5rcwYED/HnTEVRMDc5Mzk2NA5GZW5zdGVyIHJlY2h0cwYBD4lCTEVRMTAwNDYwMAdIZWl6dW5nBgQP9BVMRVEwNzkzNDA2CEZsdXJ0w7xyBwQP79FMRVEwNzk0NDk5B0ZlbnN0ZXIHAQ+JNkxFUTEwMDQ1ODgHSGVpenVuZwcBD4k9TEVRMTAwNDU5NQ1IZWl6dW5nIHVudGVuCAEPiRxMRVExMDA0NTYyB0hlaXp1bmcKBA/yTUxFUTA3OTM4NjIHRmVuc3RlcgoED/F+TEVRMDc5NDA2OQhGbHVydMO8cgoBD4k/TEVRMTAwNDU5NwdIZWl6dW5nCwQP8YdMRVEwNzk0MDYwB0ZlbnN0ZXILBA/xSExFUTA3OTQxMjQIRmx1cnTDvHILBA/yVkxFUTA3OTM4NTMURmVuc3RlciBHYXJ0ZW4gbGlua3MMBA/yI0xFUTA3OTM5MDQVRmVuc3RlciBHYXJ0ZW4gcmVjaHRzDAEPiRpMRVExMDA0NTYwB0hlaXp1bmcMBA/vj0xFUTA3OTQ1NjUPRmVuc3RlciBTdHJhw59lDAQP8CtMRVEwNzk0NDA5BFTDvHIDBAgUa0tFUTAxODcwNjkNRmVuc3RlciBTZWl0ZQUEBzagS0VRMDE4NTkzNhVGZW5zdGVyIFN0cmHDn2UgbGlua3MBBA/wI0xFUTA3OTQ0MTYORmVuc3RlciBLw7xjaGUBAxBV50xFUTA5ODI2NzYOV2FuZHRoZXJtb3N0YXQFAxBW2kxFUTA5ODIzNjgOV2FuZHRoZXJtb3N0YXQEAxBV4kxFUTA5ODI2NzEOV2FuZHRoZXJtb3N0YXQHAxBZWExFUTA5ODE3MjkOV2FuZHRoZXJtb3N0YXQMAxBV6ExFUTA5ODI2NzcOV2FuZHRoZXJtb3N0YXQGAxBV40xFUTA5ODI2NzIOV2FuZHRoZXJtb3N0YXQKBAcxoEtFUTAxODcyMTYLV2FzY2hrw7xjaGUF"; - String line1 = line1_part1 + line1_part2; + String line1Part1 = "M:00,02,"; + String line1Part2 = "VgIMAQpXb2huemltbWVyCvMrAgtUb2lsZXR0ZSBFRwrenQMOVG9pbGV0dGUgMS4gT0cK3rgECkJhZGV6aW1tZXIK3qoFDFNjaGxhZnppbW1lcgresQYDSmFuD4lCBwlDaHJpc3RpbmEPiTYIBEZsdXIPiT0KEEJhZGV6aW1tZXIgMi4gT0cPiRwLBULDvHJvD4k/DAxHw6RzdGV6aW1tZXIPiRoJC1dhc2Noa8O8Y2hlD4lXNgQHOCtLRVEwMTg4NjczCFRlcnJhc3NlAQQHMblLRVEwMTg3MTkwCEZsdXJ0w7xyAQIK8ytLRVEwMzc5NTg3C1dhbmRoZWl6dW5nAQIK9P9LRVEwMzgwMDU1DkZlbnN0ZXJoZWl6dW5nAQQHMbtLRVEwMTg3MTg4CEZsdXJ0w7xyAgQHMuxLRVEwMTg2ODg0B0ZlbnN0ZXICAQrenUtFUTA0MDY5NjIHSGVpenVuZwIBCt64S0VRMDQwNjk4OQdIZWl6dW5nAwQIFGdLRVEwMTkwNTc3B0ZlbnN0ZXIDBAc2l0tFUTAxODU5NDUIRmx1cnTDvHIEAQreqktFUTA0MDY5NzUHSGVpenVuZwQBCt8JS0VRMDQwNzA3MA5IYW5kdHVjaGVpenVuZwQEBzhTS0VRMDE4ODcxMAdGZW5zdGVyBAQIFIxLRVEwMTkwNTQzFkZlbnN0ZXIgU3RyYcOfZSByZWNodHMFAQresUtFUTA0MDY5ODIHSGVpenVuZwUEBzHmS0VRMDE4NzE0NhVGZW5zdGVyIFN0cmHDn2UgbGlua3MFAxBXqUxFUTA5ODIxNTYOV2FuZHRoZXJtb3N0YXQBBA/u1ExFUTA3OTQ3NTIIRmx1cnTDvHIGBA/v6kxFUTA3OTQ0NzQNRmVuc3RlciBsaW5rcwYED/HnTEVRMDc5Mzk2NA5GZW5zdGVyIHJlY2h0cwYBD4lCTEVRMTAwNDYwMAdIZWl6dW5nBgQP9BVMRVEwNzkzNDA2CEZsdXJ0w7xyBwQP79FMRVEwNzk0NDk5B0ZlbnN0ZXIHAQ+JNkxFUTEwMDQ1ODgHSGVpenVuZwcBD4k9TEVRMTAwNDU5NQ1IZWl6dW5nIHVudGVuCAEPiRxMRVExMDA0NTYyB0hlaXp1bmcKBA/yTUxFUTA3OTM4NjIHRmVuc3RlcgoED/F+TEVRMDc5NDA2OQhGbHVydMO8cgoBD4k/TEVRMTAwNDU5NwdIZWl6dW5nCwQP8YdMRVEwNzk0MDYwB0ZlbnN0ZXILBA/xSExFUTA3OTQxMjQIRmx1cnTDvHILBA/yVkxFUTA3OTM4NTMURmVuc3RlciBHYXJ0ZW4gbGlua3MMBA/yI0xFUTA3OTM5MDQVRmVuc3RlciBHYXJ0ZW4gcmVjaHRzDAEPiRpMRVExMDA0NTYwB0hlaXp1bmcMBA/vj0xFUTA3OTQ1NjUPRmVuc3RlciBTdHJhw59lDAQP8CtMRVEwNzk0NDA5BFTDvHIDBAgUa0tFUTAxODcwNjkNRmVuc3RlciBTZWl0ZQUEBzagS0VRMDE4NTkzNhVGZW5zdGVyIFN0cmHDn2UgbGlua3MBBA/wI0xFUTA3OTQ0MTYORmVuc3RlciBLw7xjaGUBAxBV50xFUTA5ODI2NzYOV2FuZHRoZXJtb3N0YXQFAxBW2kxFUTA5ODIzNjgOV2FuZHRoZXJtb3N0YXQEAxBV4kxFUTA5ODI2NzEOV2FuZHRoZXJtb3N0YXQHAxBZWExFUTA5ODE3MjkOV2FuZHRoZXJtb3N0YXQMAxBV6ExFUTA5ODI2NzcOV2FuZHRoZXJtb3N0YXQGAxBV40xFUTA5ODI2NzIOV2FuZHRoZXJtb3N0YXQKBAcxoEtFUTAxODcyMTYLV2FzY2hrw7xjaGUF"; + String line1 = line1Part1 + line1Part2; - String line2_part1 = "M:01,02,"; - String line2_part2 = "AxBV8ExFUTA5ODI2ODUOV2FuZHRoZXJtb3N0YXQJBA/v50xFUTA3OTQ0NzcNQmFsa29uZmVuc3RlcgkBD4lXTEVRMTAwNDYyMRZIZWl6dW5nIHVudGVybSBGZW5zdGVyCQQP8llMRVEwNzkzODUwDkZlbnN0ZXIgcmVjaHRzCQQP8bxMRVEwNzk0MDA3DUZlbnN0ZXIgbGlua3MJAQ+JOExFUTEwMDQ1OTAOSGVpenVuZyBCYWxrb24JBA/yLExFUTA3OTM4OTUKQmFsa29udMO8cgkED++zTEVRMDc5NDUyOQhGbHVydMO8cgkB"; - String line2 = line2_part1 + line2_part2; + String line2Part1 = "M:01,02,"; + String line2Part2 = "AxBV8ExFUTA5ODI2ODUOV2FuZHRoZXJtb3N0YXQJBA/v50xFUTA3OTQ0NzcNQmFsa29uZmVuc3RlcgkBD4lXTEVRMTAwNDYyMRZIZWl6dW5nIHVudGVybSBGZW5zdGVyCQQP8llMRVEwNzkzODUwDkZlbnN0ZXIgcmVjaHRzCQQP8bxMRVEwNzk0MDA3DUZlbnN0ZXIgbGlua3MJAQ+JOExFUTEwMDQ1OTAOSGVpenVuZyBCYWxrb24JBA/yLExFUTA3OTM4OTUKQmFsa29udMO8cgkED++zTEVRMDc5NDUyOQhGbHVydMO8cgkB"; + String line2 = line2Part1 + line2Part2; - String expectedString = line1 + line2_part2; + String expectedString = line1 + line2Part2; MMessage expectedMessage = new MMessage(expectedString); assertFalse(this.processor.addReceivedLine(line1));