From 46a73befaec1ca3cbecb1718231da2d34cc30fb5 Mon Sep 17 00:00:00 2001 From: lsiepel Date: Fri, 7 Apr 2023 00:39:13 +0200 Subject: [PATCH] Remove org.apache.common (#14434) Signed-off-by: lsiepel --- .../internal/handler/SensiboSkyHandler.java | 35 ++++----- .../sensibo/internal/util/StringUtils.java | 77 +++++++++++++++++++ .../internal/util/StringUtilsTest.java | 42 ++++++++++ 3 files changed, 134 insertions(+), 20 deletions(-) create mode 100644 bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/util/StringUtils.java create mode 100644 bundles/org.openhab.binding.sensibo/src/test/java/org/openhab/binding/sensibo/internal/util/StringUtilsTest.java diff --git a/bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/handler/SensiboSkyHandler.java b/bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/handler/SensiboSkyHandler.java index 836c593b0..b8aa3166e 100644 --- a/bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/handler/SensiboSkyHandler.java +++ b/bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/handler/SensiboSkyHandler.java @@ -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 index 000000000..1607b21fb --- /dev/null +++ b/bundles/org.openhab.binding.sensibo/src/main/java/org/openhab/binding/sensibo/internal/util/StringUtils.java @@ -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 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 index 000000000..d8bb9a06e --- /dev/null +++ b/bundles/org.openhab.binding.sensibo/src/test/java/org/openhab/binding/sensibo/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.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")); + } +}