]> git.basschouten.com Git - openhab-addons.git/commitdiff
Remove org.apache.common (#14434)
authorlsiepel <leosiepel@gmail.com>
Thu, 6 Apr 2023 22:39:13 +0000 (00:39 +0200)
committerGitHub <noreply@github.com>
Thu, 6 Apr 2023 22:39:13 +0000 (00:39 +0200)
Signed-off-by: lsiepel <leosiepel@gmail.com>
bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/handler/SensiboSkyHandler.java
bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/util/StringUtils.java [new file with mode: 0644]
bundles/org.openhab.binding.sensibo/src/test/java/org/openhab/binding/sensibo/internal/util/StringUtilsTest.java [new file with mode: 0644]

index 836c593b02e1d666182238bf82631fac1e6d9e79..b8aa3166e0936fd6df57d24f625831152088d0a3 100644 (file)
@@ -32,10 +32,6 @@ import javax.measure.Unit;
 import javax.measure.UnitConverter;
 import javax.measure.quantity.Temperature;
 
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.commons.lang3.text.WordUtils;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.binding.sensibo.internal.CallbackChannelsTypeProvider;
@@ -44,6 +40,7 @@ import org.openhab.binding.sensibo.internal.config.SensiboSkyConfiguration;
 import org.openhab.binding.sensibo.internal.dto.poddetails.TemperatureDTO;
 import org.openhab.binding.sensibo.internal.model.SensiboModel;
 import org.openhab.binding.sensibo.internal.model.SensiboSky;
+import org.openhab.binding.sensibo.internal.util.StringUtils;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.library.types.QuantityType;
@@ -99,17 +96,17 @@ public class SensiboSkyHandler extends SensiboBaseThingHandler implements Channe
 
     private static String beautify(final String camelCaseWording) {
         final StringBuilder b = new StringBuilder();
-        for (final String s : StringUtils.splitByCharacterTypeCamelCase(camelCaseWording)) {
+        for (final String s : StringUtils.splitByCharacterType(camelCaseWording)) {
             b.append(" ");
             b.append(s);
         }
         final StringBuilder bs = new StringBuilder();
-        for (final String t : StringUtils.splitByWholeSeparator(b.toString(), " _")) {
+        for (final String t : b.toString().split("[ ][_]")) {
             bs.append(" ");
             bs.append(t);
         }
 
-        return WordUtils.capitalizeFully(bs.toString()).trim();
+        return StringUtils.capitalizeFully(bs.toString()).trim();
     }
 
     private String getMacAddress() {
@@ -429,24 +426,22 @@ public class SensiboSkyHandler extends SensiboBaseThingHandler implements Channe
                     if (!validTemperatures.validValues.contains(rawValue.intValue())) {
                         stateChange.addError(String.format(
                                 "Cannot change targetTemperature to '%d', valid targetTemperatures are one of %s",
-                                rawValue.intValue(), ToStringBuilder.reflectionToString(
-                                        validTemperatures.validValues.toArray(), ToStringStyle.SIMPLE_STYLE)));
+                                rawValue.intValue(),
+                                String.join(",", validTemperatures.validValues.stream().map(Object::toString)
+                                        .collect(Collectors.toUnmodifiableList()).toArray(new String[0]))));
                     }
                     break;
                 case MODE_PROPERTY:
                     if (!sensiboSky.getRemoteCapabilities().containsKey(newPropertyValue)) {
-                        stateChange.addError(
-                                String.format("Cannot change mode to %s, valid modes are %s", newPropertyValue,
-                                        ToStringBuilder.reflectionToString(
-                                                sensiboSky.getRemoteCapabilities().keySet().toArray(),
-                                                ToStringStyle.SIMPLE_STYLE)));
+                        stateChange.addError(String.format("Cannot change mode to %s, valid modes are %s",
+                                newPropertyValue, String.join(",", sensiboSky.getRemoteCapabilities().keySet())));
                     }
                     break;
                 case FAN_LEVEL_PROPERTY:
                     if (!currentModeCapabilities.fanLevels.contains(newPropertyValue)) {
-                        stateChange.addError(String.format("Cannot change fanLevel to %s, valid fanLevels are %s",
-                                newPropertyValue, ToStringBuilder.reflectionToString(
-                                        currentModeCapabilities.fanLevels.toArray(), ToStringStyle.SIMPLE_STYLE)));
+                        stateChange.addError(
+                                String.format("Cannot change fanLevel to %s, valid fanLevels are %s", newPropertyValue,
+                                        String.join(",", currentModeCapabilities.fanLevels.toArray(new String[0]))));
                     }
                     break;
                 case MASTER_SWITCH_PROPERTY:
@@ -454,9 +449,9 @@ public class SensiboSkyHandler extends SensiboBaseThingHandler implements Channe
                     break;
                 case SWING_PROPERTY:
                     if (!currentModeCapabilities.swingModes.contains(newPropertyValue)) {
-                        stateChange.addError(String.format("Cannot change swing to %s, valid swings are %s",
-                                newPropertyValue, ToStringBuilder.reflectionToString(
-                                        currentModeCapabilities.swingModes.toArray(), ToStringStyle.SIMPLE_STYLE)));
+                        stateChange.addError(
+                                String.format("Cannot change swing to %s, valid swings are %s", newPropertyValue,
+                                        String.join(",", currentModeCapabilities.swingModes.toArray(new String[0]))));
                     }
                     break;
                 default:
diff --git a/bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/util/StringUtils.java b/bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/util/StringUtils.java
new file mode 100644 (file)
index 0000000..1607b21
--- /dev/null
@@ -0,0 +1,77 @@
+/**
+ * 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.sensibo.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 {
+
+    public static String capitalizeFully(String input) {
+        final String delimiter = "_";
+        String capitalizedFully = "";
+        for (String str : input.split(delimiter)) {
+            String properlyCapitalized = "";
+            if (str.length() > 0) {
+                properlyCapitalized = str.substring(0, 1).toUpperCase();
+            }
+            if (str.length() > 1) {
+                properlyCapitalized = str.substring(1).toLowerCase();
+            }
+            capitalizedFully = capitalizedFully + properlyCapitalized;
+        }
+
+        return capitalizedFully;
+    }
+
+    public static String[] splitByCharacterType(@Nullable String input) {
+        if (input == null) {
+            return new String[0];
+        }
+        if (input.isBlank()) {
+            return new String[0];
+        }
+        List<String> 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.sensibo/src/test/java/org/openhab/binding/sensibo/internal/util/StringUtilsTest.java b/bundles/org.openhab.binding.sensibo/src/test/java/org/openhab/binding/sensibo/internal/util/StringUtilsTest.java
new file mode 100644 (file)
index 0000000..d8bb9a0
--- /dev/null
@@ -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.sensibo.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"));
+    }
+}