*/
package org.openhab.binding.homematic.internal.common;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmGatewayInfo;
import org.openhab.binding.homematic.internal.model.HmInterface;
@Override
public String toString() {
- ToStringBuilder tsb = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE);
- tsb.append("gatewayAddress", gatewayAddress).append("callbackHost", callbackHost)
- .append("bindAddress", bindAddress).append("xmlCallbackPort", xmlCallbackPort)
- .append("binCallbackPort", binCallbackPort).append("gatewayType", gatewayType)
- .append("rfPort", getRfPort()).append("wiredPort", getWiredPort()).append("hmIpPort", getHmIpPort())
- .append("cuxdPort", getCuxdPort()).append("groupPort", getGroupPort()).append("timeout", timeout)
- .append("discoveryTimeToLive", discoveryTimeToLive).append("installModeDuration", installModeDuration)
- .append("socketMaxAlive", socketMaxAlive);
- return tsb.toString();
+ return String.format(
+ "%s[gatewayAddress=%s,callbackHost=%s,bindAddress=%s,xmlCallbackPort=%d,binCallbackPort=%d,"
+ + "gatewayType=%s,rfPort=%d,wiredPort=%d,hmIpPort=%d,cuxdPort=%d,groupPort=%d,timeout=%d,"
+ + "discoveryTimeToLive=%d,installModeDuration=%d,socketMaxAlive=%d]",
+ getClass().getSimpleName(), gatewayAddress, callbackHost, bindAddress, xmlCallbackPort, binCallbackPort,
+ gatewayType, getRfPort(), getWiredPort(), getHmIpPort(), getCuxdPort(), getGroupPort(), timeout,
+ discoveryTimeToLive, installModeDuration, socketMaxAlive);
}
}
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-import org.apache.commons.lang.StringUtils;
import org.eclipse.jetty.client.HttpClient;
import org.openhab.binding.homematic.internal.common.HomematicConfig;
import org.openhab.binding.homematic.internal.communicator.client.BinRpcClient;
* Creates a virtual device for handling variables, scripts and other special gateway functions.
*/
private HmDevice createGatewayDevice() {
- String type = String.format("%s-%s", HmDevice.TYPE_GATEWAY_EXTRAS, StringUtils.upperCase(id));
+ String type = String.format("%s-%s", HmDevice.TYPE_GATEWAY_EXTRAS, id.toUpperCase());
HmDevice device = new HmDevice(HmDevice.ADDRESS_GATEWAY_EXTRAS, getDefaultInterface(), type,
config.getGatewayInfo().getId(), null, null);
device.setName(HmDevice.TYPE_GATEWAY_EXTRAS);
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.StringUtils;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.api.ContentResponse;
import org.eclipse.jetty.client.util.StringContentProvider;
HmDevice device = channel.getDevice();
String channelName = String.format("%s.%s:%s.", device.getHmInterface().getName(), device.getAddress(),
channel.getNumber());
- String datapointNames = StringUtils.join(dpNames.toArray(), "\\t");
+ String datapointNames = String.join("\\t", dpNames);
TclScriptDataList resultList = sendScriptByName("getAllChannelValues", TclScriptDataList.class,
new String[] { "channel_name", "datapoint_names" },
new String[] { channelName, datapointNames });
@Override
protected void setVariable(HmDatapoint dp, Object value) throws IOException {
- String strValue = StringUtils.replace(ObjectUtils.toString(value), "\"", "\\\"");
+ String strValue = Objects.toString(value, "").replace("\"", "\\\"");
if (dp.isStringType()) {
strValue = "\"" + strValue + "\"";
}
private <T> T sendScriptByName(String scriptName, Class<T> clazz, String[] variableNames, String[] values)
throws IOException {
String script = tclregaScripts.get(scriptName);
- for (int i = 0; i < variableNames.length; i++) {
- script = StringUtils.replace(script, "{" + variableNames[i] + "}", values[i]);
+ if (script != null) {
+ for (int i = 0; i < variableNames.length; i++) {
+ script = script.replace("{" + variableNames[i] + "}", values[i]);
+ }
}
return sendScript(script, clazz);
}
@SuppressWarnings("unchecked")
private synchronized <T> T sendScript(String script, Class<T> clazz) throws IOException {
try {
- script = StringUtils.trim(script);
- if (StringUtils.isEmpty(script)) {
+ script = script == null ? null : script.trim();
+ if (script == null || script.isEmpty()) {
throw new RuntimeException("Homematic TclRegaScript is empty!");
}
if (logger.isTraceEnabled()) {
.header(HttpHeader.CONTENT_TYPE, "text/plain;charset=" + config.getEncoding()).send();
String result = new String(response.getContent(), config.getEncoding());
- result = StringUtils.substringBeforeLast(result, "<xml><exec>");
+ int lastPos = result.lastIndexOf("<xml><exec>");
+ if (lastPos != -1) {
+ result = result.substring(0, lastPos);
+ }
if (logger.isTraceEnabled()) {
logger.trace("Result TclRegaScript: {}", result);
}
Map<String, String> result = new HashMap<>();
if (scriptList.getScripts() != null) {
for (TclScript script : scriptList.getScripts()) {
- result.put(script.name, StringUtils.trimToNull(script.data));
+ String value = script.data.trim();
+ result.put(script.name, value.isEmpty() ? null : value);
}
}
return result;
import java.util.List;
import java.util.Map;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.HomematicBindingConstants;
import org.openhab.binding.homematic.internal.common.HomematicConfig;
import org.openhab.binding.homematic.internal.communicator.message.RpcRequest;
import org.openhab.binding.homematic.internal.communicator.parser.ListBidcosInterfacesParser;
import org.openhab.binding.homematic.internal.communicator.parser.ListDevicesParser;
import org.openhab.binding.homematic.internal.communicator.parser.RssiInfoParser;
+import org.openhab.binding.homematic.internal.misc.MiscUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDevice;
try {
ddParser = getDeviceDescription(HmInterface.RF);
- isHomegear = StringUtils.equalsIgnoreCase(ddParser.getType(), "Homegear");
+ isHomegear = "Homegear".equalsIgnoreCase(ddParser.getType());
} catch (IOException ex) {
// can't load gateway infos via RF interface
ddParser = new GetDeviceDescriptionParser();
HmGatewayInfo gatewayInfo = new HmGatewayInfo();
gatewayInfo.setAddress(biParser.getGatewayAddress());
+ String gwType = biParser.getType();
if (isHomegear) {
gatewayInfo.setId(HmGatewayInfo.ID_HOMEGEAR);
gatewayInfo.setType(ddParser.getType());
gatewayInfo.setFirmware(ddParser.getFirmware());
- } else if ((StringUtils.startsWithIgnoreCase(biParser.getType(), "CCU")
- || StringUtils.startsWithIgnoreCase(biParser.getType(), "HMIP_CCU")
- || StringUtils.startsWithIgnoreCase(ddParser.getType(), "HM-RCV-50") || config.isCCUType())
+ } else if ((MiscUtils.strStartsWithIgnoreCase(gwType, "CCU")
+ || MiscUtils.strStartsWithIgnoreCase(gwType, "HMIP_CCU")
+ || MiscUtils.strStartsWithIgnoreCase(ddParser.getType(), "HM-RCV-50") || config.isCCUType())
&& !config.isNoCCUType()) {
gatewayInfo.setId(HmGatewayInfo.ID_CCU);
- String type = StringUtils.isBlank(biParser.getType()) ? "CCU" : biParser.getType();
+ String type = gwType.isBlank() ? "CCU" : gwType;
gatewayInfo.setType(type);
- gatewayInfo.setFirmware(ddParser.getFirmware() != null ? ddParser.getFirmware() : biParser.getFirmware());
+ gatewayInfo
+ .setFirmware(!ddParser.getFirmware().isEmpty() ? ddParser.getFirmware() : biParser.getFirmware());
} else {
gatewayInfo.setId(HmGatewayInfo.ID_DEFAULT);
- gatewayInfo.setType(biParser.getType());
+ gatewayInfo.setType(gwType);
gatewayInfo.setFirmware(biParser.getFirmware());
}
import java.util.Map;
import java.util.TreeMap;
-import org.apache.commons.lang.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
if (length != 4) {
throw new EOFException("Only " + length + " bytes received reading message length");
}
- int datasize = (new BigInteger(ArrayUtils.subarray(sig, 4, 8))).intValue();
+ int datasize = (new BigInteger(Arrays.copyOfRange(sig, 4, 8))).intValue();
byte payload[] = new byte[datasize];
int offset = 0;
int currentLength;
throw new EOFException("Only " + offset + " bytes received while reading message payload, expected "
+ datasize + " bytes");
}
- byte[] message = ArrayUtils.addAll(sig, payload);
+ byte[] message = new byte[sig.length + payload.length];
+ System.arraycopy(sig, 0, message, 0, sig.length);
+ System.arraycopy(payload, 0, message, sig.length, payload.length);
+
decodeMessage(message, methodHeader);
}
import java.util.Map;
import java.util.Map.Entry;
-import org.apache.commons.lang.StringEscapeUtils;
-
/**
* A XML-RPC request for sending data to the Homematic server.
*
} else {
Class<?> clazz = value.getClass();
if (clazz == String.class || clazz == Character.class) {
- sb.append(StringEscapeUtils.escapeXml(value.toString()));
+ sb.append(escapeXml(value.toString()));
} else if (clazz == Long.class || clazz == Integer.class || clazz == Short.class || clazz == Byte.class) {
tag("int", value.toString());
} else if (clazz == Double.class) {
}
}
}
+
+ private StringBuilder escapeXml(String inValue) {
+ StringBuilder outValue = new StringBuilder(inValue.length());
+ for (int i = 0; i < inValue.length(); i++) {
+ switch (inValue.charAt(i)) {
+ case '<':
+ outValue.append("<");
+ break;
+ case '>':
+ outValue.append(">");
+ break;
+ case '&':
+ outValue.append("&");
+ break;
+ case '\'':
+ outValue.append("&apost;");
+ break;
+ case '"':
+ outValue.append(""");
+ break;
+ default:
+ outValue.append(inValue.charAt(i));
+ }
+ }
+ return outValue;
+ }
}
import java.io.IOException;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmInterface;
}
private String[] toOptionList(String options) {
- String[] result = StringUtils.splitByWholeSeparatorPreserveAllTokens(options, ";");
+ String[] result = options == null ? null : options.split(";");
return result == null || result.length == 0 ? null : result;
}
}
import java.io.IOException;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmParamsetType;
}
dp.setReadOnly(entry.readOnly);
dp.setUnit(entry.unit);
-
- String[] result = StringUtils.splitByWholeSeparatorPreserveAllTokens(entry.options, ";");
+ String[] result = entry.options == null ? null : entry.options.split(";");
dp.setOptions(result == null || result.length == 0 ? null : result);
if (dp.getOptions() != null) {
package org.openhab.binding.homematic.internal.communicator.parser;
import java.io.IOException;
+import java.util.Objects;
-import org.apache.commons.lang.BooleanUtils;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.math.NumberUtils;
+import org.eclipse.jdt.annotation.NonNull;
import org.openhab.binding.homematic.internal.misc.MiscUtils;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmParamsetType;
* Converts the object to a string.
*/
protected String toString(Object object) {
- return StringUtils.trimToNull(ObjectUtils.toString(object));
+ String value = Objects.toString(object, "").trim();
+ return value.isEmpty() ? null : value;
}
/**
return (Integer) object;
}
try {
- return Double.valueOf(ObjectUtils.toString(object)).intValue();
+ return Double.valueOf(object.toString()).intValue();
} catch (NumberFormatException ex) {
logger.debug("Failed converting {} to a Double", object, ex);
return null;
return (Double) object;
}
try {
- return Double.valueOf(ObjectUtils.toString(object));
+ return Double.valueOf(object.toString());
} catch (NumberFormatException ex) {
logger.debug("Failed converting {} to a Double", object, ex);
return null;
return (Number) object;
}
try {
- return NumberUtils.createNumber(ObjectUtils.toString(object));
+ String value = object.toString();
+ if (value.contains(".")) {
+ return Float.parseFloat(value);
+ } else {
+ return Integer.parseInt(value);
+ }
} catch (NumberFormatException ex) {
logger.debug("Failed converting {} to a Number", object, ex);
return null;
if (object == null || object instanceof Boolean) {
return (Boolean) object;
}
- return BooleanUtils.toBoolean(ObjectUtils.toString(object));
+ return "true".equals(object.toString().toLowerCase());
}
/**
/**
* Returns the address of a device, replacing group address identifier and illegal characters.
*/
+ @NonNull
protected String getSanitizedAddress(Object object) {
- String address = StringUtils.trimToNull(StringUtils.replaceOnce(toString(object), "*", "T-"));
- return MiscUtils.validateCharacters(address, "Address", "_");
+ String address = Objects.toString(object, "").trim().replaceFirst("\\*", "T-");
+ return MiscUtils.validateCharacters(address.isEmpty() ? null : address, "Address", "_");
}
/**
HmDatapoint dp = new HmDatapoint();
dp.setName(name);
dp.setDescription(name);
- dp.setUnit(StringUtils.replace(StringUtils.trimToNull(unit), "\ufffd", "°"));
- if (dp.getUnit() == null && StringUtils.startsWith(dp.getName(), "RSSI_")) {
+ if (unit != null) {
+ unit = unit.trim().replace("\ufffd", "°");
+ }
+ dp.setUnit(unit == null || unit.isEmpty() ? null : unit);
+ if (dp.getUnit() == null && dp.getName() != null && dp.getName().startsWith("RSSI_")) {
dp.setUnit("dBm");
}
* Converts a string value to the type.
*/
protected Object convertToType(String value) {
- if (StringUtils.isBlank(value)) {
+ if (value == null || value.isBlank()) {
return null;
}
if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("on")) {
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.lang.StringUtils;
+import org.openhab.binding.homematic.internal.misc.MiscUtils;
/**
* Parses a delete device event received from a Homematic gateway.
Object[] data = (Object[]) message[1];
for (int i = 0; i < message.length; i++) {
String address = getSanitizedAddress(data[i]);
- boolean isDevice = !StringUtils.contains(address, ":")
- && !StringUtils.startsWithIgnoreCase(address, "BidCos");
- if (isDevice) {
+ if (MiscUtils.isDevice(address)) {
adresses.add(address);
}
-
}
}
return adresses;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDatapointInfo;
public class DisplayOptionsParser extends CommonRpcParser<Object, Void> {
private final Logger logger = LoggerFactory.getLogger(DisplayOptionsParser.class);
private static final String[] onOff = new String[] { "ON", "OFF" };
-
+ private static final int IDX_NOT_FOUND = -1;
private HmChannel channel;
private String text;
private int beep = 0;
@Override
public Void parse(Object value) throws IOException {
- String optionsString = StringUtils.remove(toString(value), ' ');
+ String valueString = toString(value);
+ String optionsString = valueString == null ? null : valueString.replace(" ", "");
if (optionsString != null) {
int idxFirstSep = optionsString.indexOf(",");
if (idxFirstSep == -1) {
optionsString = optionsString.substring(idxFirstSep + 1);
}
- String[] options = StringUtils.split(optionsString, ",");
+ String[] options = optionsString.split(",");
String[] availableSymbols = getAvailableSymbols(channel);
String[] availableBeepOptions = getAvailableOptions(channel, DATAPOINT_NAME_BEEP);
DATAPOINT_NAME_BACKLIGHT, deviceAddress);
unit = getIntParameter(availableUnitOptions, unit, parameter, DATAPOINT_NAME_UNIT, deviceAddress);
- if (ArrayUtils.contains(availableSymbols, parameter)) {
+ if (findInArray(availableSymbols, parameter) != IDX_NOT_FOUND) {
logger.debug("Symbol '{}' found for remote control '{}'", parameter, deviceAddress);
symbols.add(parameter);
}
*/
private int getIntParameter(String[] options, int currentValue, String parameter, String parameterName,
String deviceAddress) {
- int idx = ArrayUtils.indexOf(options, parameter);
- if (idx != -1) {
+ int idx = findInArray(options, parameter);
+ if (idx != IDX_NOT_FOUND) {
if (currentValue == 0) {
logger.debug("{} option '{}' found at index {} for remote control '{}'", parameterName, parameter,
idx + 1, deviceAddress);
HmDatapointInfo dpInfo = HmDatapointInfo.createValuesInfo(channel, datapointName);
HmDatapoint dp = channel.getDatapoint(dpInfo);
if (dp != null) {
- String[] options = (String[]) ArrayUtils.remove(dp.getOptions(), 0);
+ String[] dpOpts = dp.getOptions();
+ String[] options = new String[dpOpts.length - 1];
+ options = Arrays.copyOfRange(dpOpts, 1, dpOpts.length);
for (String onOffString : onOff) {
- int onIdx = ArrayUtils.indexOf(options, onOffString);
- if (onIdx != -1) {
+ int onIdx = findInArray(options, onOffString);
+ if (onIdx != IDX_NOT_FOUND) {
options[onIdx] = datapointName + "_" + onOffString;
}
}
return new String[0];
}
+ private int findInArray(String[] arr, String searchString) {
+ if (arr.length == 0) {
+ return IDX_NOT_FOUND;
+ }
+ for (int i = 0; i < arr.length; i++) {
+ if (arr[i].equals(searchString)) {
+ return i;
+ }
+ }
+ return IDX_NOT_FOUND;
+ }
+
/**
* Returns all possible symbols from the remote control.
*/
import java.io.IOException;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.math.NumberUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapointInfo;
import org.openhab.binding.homematic.internal.model.HmDevice;
address = HmDevice.ADDRESS_GATEWAY_EXTRAS;
channel = HmChannel.CHANNEL_NUMBER_VARIABLE;
} else {
- String[] configParts = StringUtils.trimToEmpty(addressWithChannel).split(":");
+ String addrChannel = addressWithChannel == null ? "" : addressWithChannel.trim();
+ String[] configParts = addrChannel.split(":");
address = getSanitizedAddress(configParts[0]);
if (configParts.length > 1) {
- channel = NumberUtils.createInteger(configParts[1]);
+ channel = configParts[1] == null ? null : Integer.valueOf(configParts[1]);
}
}
package org.openhab.binding.homematic.internal.communicator.parser;
import java.io.IOException;
+import java.util.Objects;
-import org.apache.commons.lang.ObjectUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmParamsetType;
public Void parse(Object[] message) throws IOException {
message = (Object[]) message[0];
for (int i = 0; i < message.length; i++) {
- String scriptName = ObjectUtils.toString(message[i]);
+ String scriptName = Objects.toString(message[i], "");
HmDatapoint dpScript = new HmDatapoint(scriptName, scriptName, HmValueType.BOOL, Boolean.FALSE, false,
HmParamsetType.VALUES);
dpScript.setInfo(scriptName);
* Returns the parsed type.
*/
public String getType() {
- return type;
+ return type == null ? "" : type;
}
/**
import java.util.HashMap;
import java.util.Map;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.common.HomematicConfig;
import org.openhab.binding.homematic.internal.misc.MiscUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
for (int i = 0; i < message.length; i++) {
Map<String, ?> data = (Map<String, ?>) message[i];
- boolean isDevice = !StringUtils.contains(toString(data.get("ADDRESS")), ":");
-
- if (isDevice) {
+ if (MiscUtils.isDevice(toString(data.get("ADDRESS")), true)) {
String address = getSanitizedAddress(data.get("ADDRESS"));
String type = MiscUtils.validateCharacters(toString(data.get("TYPE")), "Device type", "-");
String id = toString(data.get("ID"));
import java.util.List;
import java.util.Map;
-import org.apache.commons.lang.StringUtils;
+import org.openhab.binding.homematic.internal.misc.MiscUtils;
/**
* Parses a new device event received from a Homematic gateway.
Map<String, ?> data = (Map<String, ?>) message[i];
String address = toString(data.get("ADDRESS"));
- boolean isDevice = !StringUtils.contains(address, ":")
- && !StringUtils.startsWithIgnoreCase(address, "BidCos");
- if (isDevice) {
+ if (MiscUtils.isDevice(address)) {
adresses.add(getSanitizedAddress(address));
}
}
import java.io.IOException;
import java.util.Map;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.communicator.client.UnknownParameterSetException;
import org.openhab.binding.homematic.internal.communicator.client.UnknownRpcFailureException;
import org.openhab.binding.homematic.internal.communicator.message.RpcRequest;
Number faultCode = toNumber(map.get("faultCode"));
String faultString = toString(map.get("faultString"));
String faultMessage = String.format("%s %s (sending %s)", faultCode, faultString, request);
- if (faultCode.intValue() == -1 && StringUtils.equals("Failure", faultString)) {
+ if (faultCode.intValue() == -1 && "Failure".equals(faultString)) {
throw new UnknownRpcFailureException(faultMessage);
- } else if (faultCode.intValue() == -3 && StringUtils.equals("Unknown paramset", faultString)) {
+ } else if (faultCode.intValue() == -3 && "Unknown paramset".equals(faultString)) {
throw new UnknownParameterSetException(faultMessage);
}
throw new IOException(faultMessage);
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
-import org.apache.commons.lang.ObjectUtils;
import org.openhab.binding.homematic.internal.communicator.message.RpcRequest;
import org.openhab.binding.homematic.internal.communicator.parser.DeleteDevicesParser;
import org.openhab.binding.homematic.internal.communicator.parser.EventParser;
for (Object o : (Object[]) responseData[0]) {
Map<?, ?> call = (Map<?, ?>) o;
if (call != null) {
- String method = ObjectUtils.toString(call.get("methodName"));
+ String method = Objects.toString(call.get("methodName"), "");
Object[] data = (Object[]) call.get("params");
handleMethodCall(method, data);
}
import static org.openhab.binding.homematic.internal.misc.HomematicConstants.VIRTUAL_DATAPOINT_NAME_BUTTON;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.misc.MiscUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDevice;
import org.openhab.binding.homematic.internal.model.HmValueType;
import org.openhab.core.thing.CommonTriggerEvents;
+import org.openhab.core.thing.DefaultSystemChannelTypeProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public void handleEvent(VirtualGateway gateway, HmDatapoint dp) {
HmDatapoint vdp = getVirtualDatapoint(dp.getChannel());
if (MiscUtils.isTrueValue(dp.getValue())) {
- String pressType = StringUtils.substringAfter(dp.getName(), "_");
+ int usPos = dp.getName().indexOf("_");
+ String pressType = usPos == -1 ? dp.getName() : dp.getName().substring(usPos + 1);
switch (pressType) {
case "SHORT":
if (dp.getValue() == null || !dp.getValue().equals(dp.getPreviousValue())) {
import java.io.IOException;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.misc.HomematicClientException;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDatapointConfig;
public void handleCommand(VirtualGateway gateway, HmDatapoint dp, HmDatapointConfig dpConfig, Object value)
throws IOException, HomematicClientException {
dp.setValue(value);
- if (!StringUtils.equals(dp.getOptionValue(), MODE_LOCKED)) {
+ if (!MODE_LOCKED.equals(dp.getOptionValue())) {
gateway.disableDatapoint(dp, DELETE_MODE_DURATION);
}
}
import java.io.IOException;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.communicator.parser.DisplayOptionsParser;
import org.openhab.binding.homematic.internal.misc.HomematicClientException;
import org.openhab.binding.homematic.internal.model.HmChannel;
DisplayOptionsParser rcOptionsParser = new DisplayOptionsParser(channel);
rcOptionsParser.parse(value);
- if (StringUtils.isNotBlank(rcOptionsParser.getText())) {
- sendDatapoint(gateway, channel, DATAPOINT_NAME_TEXT, rcOptionsParser.getText());
+ String dpNameText = rcOptionsParser.getText();
+ if (dpNameText != null && !dpNameText.isBlank()) {
+ sendDatapoint(gateway, channel, DATAPOINT_NAME_TEXT, dpNameText);
}
sendDatapoint(gateway, channel, DATAPOINT_NAME_BEEP, rcOptionsParser.getBeep());
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.StringUtils;
import org.openhab.binding.homematic.internal.misc.HomematicClientException;
import org.openhab.binding.homematic.internal.misc.MiscUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
}
for (int i = 1; i <= getLineCount(channel.getDevice()); i++) {
- String line = ObjectUtils.toString(
- channel.getDatapoint(HmParamsetType.VALUES, DATAPOINT_NAME_DISPLAY_LINE + i).getValue());
- if (StringUtils.isEmpty(line)) {
+ String line = Objects.toString(
+ channel.getDatapoint(HmParamsetType.VALUES, DATAPOINT_NAME_DISPLAY_LINE + i).getValue(), "");
+ if (line.isEmpty()) {
line = " ";
}
message.add(LINE);
.getOptionValue();
message.add(COLOR);
String colorCode = Color.getCode(color);
- message.add(StringUtils.isBlank(colorCode) ? Color.WHITE.getCode() : colorCode);
+ message.add(colorCode == null || colorCode.isBlank() ? Color.WHITE.getCode() : colorCode);
}
String icon = channel.getDatapoint(HmParamsetType.VALUES, DATAPOINT_NAME_DISPLAY_ICON + i)
.getOptionValue();
String iconCode = Icon.getCode(icon);
- if (StringUtils.isNotBlank(iconCode)) {
+ if (iconCode != null && !iconCode.isBlank()) {
message.add(ICON);
message.add(iconCode);
}
message.add(STOP);
gateway.sendDatapoint(channel.getDatapoint(HmParamsetType.VALUES, DATAPOINT_NAME_SUBMIT),
- new HmDatapointConfig(), StringUtils.join(message, ","), null);
+ new HmDatapointConfig(), String.join(",", message), null);
}
}
*/
package org.openhab.binding.homematic.internal.discovery.eq3udp;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-
/**
* Extracts a UDP response from a Homematic CCU gateway.
*
@Override
public String toString() {
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("deviceTypeId", deviceTypeId)
- .append("serialNumber", serialNumber).toString();
+ return String.format("%s[deviceTypeId=%s,serialNumber=%s]", getClass().getSimpleName(), deviceTypeId,
+ serialNumber);
}
}
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.concurrent.Future;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.math.NumberUtils;
import org.openhab.binding.homematic.internal.HomematicBindingConstants;
import org.openhab.binding.homematic.internal.common.HomematicConfig;
import org.openhab.binding.homematic.internal.communicator.HomematicGateway;
private static boolean containsChannel(List<Channel> channels, ChannelUID channelUID) {
for (Channel channel : channels) {
ChannelUID uid = channel.getUID();
- if (StringUtils.equals(channelUID.getGroupId(), uid.getGroupId())
- && StringUtils.equals(channelUID.getId(), uid.getId())) {
+ if (Objects.equals(channelUID.getGroupId(), uid.getGroupId())
+ && Objects.equals(channelUID.getId(), uid.getId())) {
return true;
}
}
HmDatapoint dp = channelZero
.getDatapoint(new HmDatapointInfo(HmParamsetType.VALUES, channelZero, datapointName));
if (dp != null) {
- properties.put(propertyName, ObjectUtils.toString(dp.getValue()));
+ properties.put(propertyName, Objects.toString(dp.getValue(), ""));
}
}
throws IOException, GatewayNotAvailableException, ConverterException {
if (dp.isTrigger()) {
if (dp.getValue() != null) {
- triggerChannel(channel.getUID(), ObjectUtils.toString(dp.getValue()));
+ triggerChannel(channel.getUID(), dp.getValue() == null ? "" : dp.getValue().toString());
}
} else if (isLinked(channel)) {
loadHomematicChannelValues(dp.getChannel());
Object newValue = configurationParameter.getValue();
if (key.startsWith("HMP_")) {
- key = StringUtils.removeStart(key, "HMP_");
- Integer channelNumber = NumberUtils.toInt(StringUtils.substringBefore(key, "_"));
- String dpName = StringUtils.substringAfter(key, "_");
+ key = key.substring(4);
+ int sepPos = key.indexOf("_");
+ Integer channelNumber = Integer.valueOf(key.substring(0, sepPos));
+ String dpName = key.substring(sepPos + 1);
HmDatapointInfo dpInfo = new HmDatapointInfo(device.getAddress(), HmParamsetType.MASTER,
channelNumber, dpName);
newValue = decimal.doubleValue();
}
}
- if (ObjectUtils.notEqual(dp.isEnumType() ? dp.getOptionValue() : dp.getValue(),
- newValue)) {
+ if (!Objects.equals(dp.isEnumType() ? dp.getOptionValue() : dp.getValue(), newValue)) {
sendDatapoint(dp, new HmDatapointConfig(), newValue);
}
}
public static boolean isFalseValue(Object value) {
return value != null && value == Boolean.FALSE;
}
+
+ /**
+ * Returns true, if str starts with search. Check is done case-insensitive.
+ */
+ public static boolean strStartsWithIgnoreCase(String str, String search) {
+ if (str == null || search == null || search.length() > str.length()) {
+ return false;
+ }
+ return str.substring(0, search.length()).equalsIgnoreCase(search);
+ }
+
+ /**
+ * Returns true if address is a device
+ */
+ public static boolean isDevice(String address) {
+ return isDevice(address, false);
+ }
+
+ /**
+ * Returns true if address is a device. If allowBidCos ist true then addresses starting with "BidCos" classified as
+ * devices, too.
+ */
+ public static boolean isDevice(String address, boolean allowBidCos) {
+ if (address == null) {
+ return false;
+ }
+ if (address.contains(":")) {
+ return false;
+ }
+ if (allowBidCos && strStartsWithIgnoreCase(address.trim(), "BidCos")) {
+ return true;
+ }
+ return !strStartsWithIgnoreCase(address.trim(), "BidCos");
+ }
+
+ /**
+ * Changes all characters after whitespace to upper-case and all other character to lower case.
+ */
+ public static String capitalize(String value) {
+ if (value == null) {
+ return null;
+ }
+ char[] chars = value.toCharArray();
+ boolean capitalizeNextChar = true;
+ for (int i = 0; i < chars.length; i++) {
+ if (Character.isWhitespace(chars[i])) {
+ capitalizeNextChar = true;
+ } else {
+ if (capitalizeNextChar) {
+ chars[i] = Character.toTitleCase(chars[i]);
+ capitalizeNextChar = false;
+ } else {
+ chars[i] = Character.toLowerCase(chars[i]);
+ }
+ }
+ }
+ return new String(chars);
+ }
}
import java.util.List;
import java.util.Map;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
import org.openhab.binding.homematic.internal.misc.HomematicConstants;
/**
@Override
public String toString() {
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("number", number).append("type", type)
- .append("initialized", initialized).toString();
+ return String.format("%s[number=%d,initialized=%b]", getClass().getSimpleName(), number, initialized);
}
}
*/
package org.openhab.binding.homematic.internal.model;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
import org.openhab.binding.homematic.internal.misc.MiscUtils;
/**
@Override
public String toString() {
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("name", name).append("value", value)
- .append("defaultValue", defaultValue).append("type", type).append("minValue", minValue)
- .append("maxValue", maxValue).append("step", step).append("options", StringUtils.join(options, ";"))
- .append("readOnly", readOnly).append("readable", readable).append("unit", unit)
- .append("description", description).append("info", info).append("paramsetType", paramsetType)
- .append("virtual", virtual).append("trigger", trigger).toString();
+ return String.format("%s[name=%s,value=%s,defaultValue=%s,type=%s,minValue=%s,maxValue=%s,step=%s,options=%s,"
+ + "readOnly=%b,readable=%b,unit=%s,description=%s,info=%s,paramsetType=%s,virtual=%b,trigger=%b]",
+ getClass().getSimpleName(), name, value, defaultValue, type, minValue, maxValue, step,
+ (options == null ? null : String.join(";", options)), readOnly, readable, unit, description, info,
+ paramsetType, virtual, trigger);
}
}
*/
package org.openhab.binding.homematic.internal.model;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-
/**
* Configuration object for sending a datapoint.
*
@Override
public String toString() {
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("delay", delay)
- .append("receiveDelay", receiveDelay).toString();
+ return String.format("%s[delay=%f,receiveDelay=%f]", getClass().getSimpleName(), delay, receiveDelay);
}
}
*/
package org.openhab.binding.homematic.internal.model;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
+import java.util.Objects;
/**
* Simple representation of a datapoint.
@Override
public int hashCode() {
- return new HashCodeBuilder().append(address).append(paramsetType).append(channel).append(name).toHashCode();
+ return Objects.hash(address, paramsetType, channel, name);
}
@Override
return false;
}
HmDatapointInfo comp = (HmDatapointInfo) obj;
- return new EqualsBuilder().append(address, comp.getAddress()).append(paramsetType, comp.getParamsetType())
- .append(channel, comp.getChannel()).append(name, comp.getName()).isEquals();
+ return Objects.equals(address, comp.getAddress()) && Objects.equals(paramsetType, comp.getParamsetType())
+ && Objects.equals(channel, comp.getChannel()) && Objects.equals(name, comp.getName());
}
@Override
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
import org.openhab.binding.homematic.internal.misc.MiscUtils;
/**
@Override
public int hashCode() {
- return new HashCodeBuilder().append(address).toHashCode();
+ return Objects.hash(address);
}
@Override
return false;
}
HmDevice comp = (HmDevice) obj;
- return new EqualsBuilder().append(address, comp.getAddress()).isEquals();
+ return Objects.equals(address, comp.getAddress());
}
@Override
public String toString() {
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("hmInterface", hmInterface)
- .append("address", address).append("type", type).append("name", name).append("firmware", firmware)
- .append("gatewayId", gatewayId).toString();
+ return String.format("%s[hmInterface=%s,address=%s,type=%s,name=%s,firmware=%s,gatewayId=%s]",
+ getClass().getSimpleName(), hmInterface, address, type, name, firmware, gatewayId);
}
}
*/
package org.openhab.binding.homematic.internal.model;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-
/**
* Info object which holds gateway specific informations.
*
@Override
public String toString() {
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("id", id).append("type", type)
- .append("firmware", firmware).append("address", address).append("rf", rfInterface)
- .append("wired", wiredInterface).append("hmip", hmipInterface).append("cuxd", cuxdInterface)
- .append("group", groupInterface).toString();
+ return String.format("%s[id=%s,type=%s,firmware=%s,address=%s,rf=%b,wired=%b,hmip=%b,cuxd=%b,group=%b]",
+ getClass().getSimpleName(), id, type, firmware, address, rfInterface, wiredInterface, hmipInterface,
+ cuxdInterface, groupInterface);
}
}
*/
package org.openhab.binding.homematic.internal.model;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-
/**
* Object that holds the rssi infos for a RF device.
*
@Override
public String toString() {
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("address", address)
- .append("device", device).append("peer", peer).toString();
+ return String.format("%s[address=%s,device=%d,peer=%i]", getClass().getSimpleName(), address, device, peer);
}
}
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.WordUtils;
+import org.openhab.binding.homematic.internal.misc.MiscUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDevice;
ChannelGroupType groupType = channelGroupTypeProvider.getInternalChannelGroupType(groupTypeUID);
if (groupType == null || device.isGatewayExtras()) {
String groupLabel = String.format("%s",
- WordUtils.capitalizeFully(StringUtils.replace(channel.getType(), "_", " ")));
+ MiscUtils.capitalize(channel.getType().replace("_", " ")));
groupType = ChannelGroupTypeBuilder.instance(groupTypeUID, groupLabel)
.withChannelDefinitions(channelDefinitions).build();
channelGroupTypeProvider.addChannelGroupType(groupType);
"Multiple firmware versions for device type '{}' found ({}). "
+ "Make sure, all devices of the same type have the same firmware version, "
+ "otherwise you MAY have channel and/or datapoint errors in the logfile",
- deviceType, StringUtils.join(firmwares, ", "));
+ deviceType, String.join(", ", firmwares));
}
}
}
* Adds the firmware version for validation.
*/
private void addFirmware(HmDevice device) {
- if (!StringUtils.equals(device.getFirmware(), "?") && !DEVICE_TYPE_VIRTUAL.equals(device.getType())
+ if (!"?".equals(device.getFirmware()) && !DEVICE_TYPE_VIRTUAL.equals(device.getType())
&& !DEVICE_TYPE_VIRTUAL_WIRED.equals(device.getType())) {
Set<String> firmwares = firmwaresByType.get(device.getType());
if (firmwares == null) {
List<ChannelGroupDefinition> groupDefinitions = new ArrayList<>();
for (ChannelGroupType groupType : groupTypes) {
- String id = StringUtils.substringAfterLast(groupType.getUID().getId(), "_");
+ int usPos = groupType.getUID().getId().lastIndexOf("_");
+ String id = usPos == -1 ? groupType.getUID().getId() : groupType.getUID().getId().substring(usPos + 1);
groupDefinitions.add(new ChannelGroupDefinition(id, groupType.getUID()));
}
MetadataUtils.getParameterName(dp), MetadataUtils.getConfigDescriptionParameterType(dp));
builder.withLabel(MetadataUtils.getLabel(dp));
- builder.withDefault(ObjectUtils.toString(dp.getDefaultValue()));
+ builder.withDefault(Objects.toString(dp.getDefaultValue(), ""));
builder.withDescription(MetadataUtils.getDatapointDescription(dp));
if (dp.isEnumType()) {
* Returns true, if the given datapoint can be ignored for metadata generation.
*/
public static boolean isIgnoredDatapoint(HmDatapoint dp) {
- return StringUtils.indexOfAny(dp.getName(), IGNORE_DATAPOINT_NAMES) != -1;
+ for (String testValue : IGNORE_DATAPOINT_NAMES) {
+ if (dp.getName().indexOf(testValue) > -1) {
+ return true;
+ }
+ }
+ return false;
}
}
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.ResourceBundle;
import java.util.Set;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.WordUtils;
+import org.openhab.binding.homematic.internal.misc.MiscUtils;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDevice;
import org.openhab.core.config.core.ConfigDescriptionParameter.Type;
BufferedReader reader = new BufferedReader(new InputStreamReader(stream))) {
String line;
while ((line = reader.readLine()) != null) {
- if (StringUtils.trimToNull(line) != null && !StringUtils.startsWith(line, "#")) {
- String channelType = StringUtils.trimToNull(StringUtils.substringBefore(line, "|"));
- String datapointName = StringUtils.trimToNull(StringUtils.substringAfter(line, "|"));
+ if (!line.trim().isEmpty() && !line.startsWith("#")) {
+ String[] parts = line.split("\\|");
+ String channelType = null;
+ String datapointName = null;
+ if (parts.length > 0) {
+ channelType = parts[0].trim();
+ if (parts.length > 1) {
+ datapointName = parts[1].trim();
+ }
+ }
Set<String> channelDatapoints = standardDatapoints.get(channelType);
if (channelDatapoints == null) {
*/
public static String getUnit(HmDatapoint dp) {
if (dp.getUnit() != null) {
- String unit = StringUtils.replace(dp.getUnit(), "100%", "%");
- return StringUtils.replace(unit, "%", "%%");
+ return dp.getUnit().replace("100%", "%").replace("%", "%%");
}
return null;
}
* Returns the label string for the given Datapoint.
*/
public static String getLabel(HmDatapoint dp) {
- return WordUtils.capitalizeFully(StringUtils.replace(dp.getName(), "_", " "));
+ return MiscUtils.capitalize(dp.getName().replace("_", " "));
}
/**
public static String getDescription(String... keys) {
StringBuilder sb = new StringBuilder();
for (int startIdx = 0; startIdx < keys.length; startIdx++) {
- String key = StringUtils.join(keys, "|", startIdx, keys.length);
+ String key = String.join("|", Arrays.copyOfRange(keys, startIdx, keys.length));
if (key.endsWith("|")) {
key = key.substring(0, key.length() - 1);
}
sb.append(key).append(", ");
}
if (logger.isTraceEnabled()) {
- logger.trace("Description not found for: {}", StringUtils.substring(sb.toString(), 0, -2));
+ logger.trace("Description not found for: {}", sb.toString().substring(0, sb.length() - 2));
}
return null;
}
String deviceDescription = null;
boolean isTeam = device.getType().endsWith("-Team");
- String type = isTeam ? StringUtils.remove(device.getType(), "-Team") : device.getType();
+ String type = isTeam ? device.getType().replace("-Team", "") : device.getType();
deviceDescription = getDescription(type);
-
if (deviceDescription != null && isTeam) {
deviceDescription += " Team";
}
*/
public static String getItemType(HmDatapoint dp) {
String dpName = dp.getName();
- String channelType = StringUtils.defaultString(dp.getChannel().getType());
+ String channelType = dp.getChannel().getType();
+ if (channelType == null) {
+ channelType = "";
+ }
if (dp.isBooleanType()) {
if (((dpName.equals(DATAPOINT_NAME_STATE) || dpName.equals(VIRTUAL_DATAPOINT_NAME_STATE_CONTACT))
*/
public static String getCategory(HmDatapoint dp, String itemType) {
String dpName = dp.getName();
- String channelType = StringUtils.defaultString(dp.getChannel().getType());
+ String channelType = dp.getChannel().getType();
+ if (channelType == null) {
+ channelType = "";
+ }
if (dpName.equals(DATAPOINT_NAME_BATTERY_TYPE) || dpName.equals(DATAPOINT_NAME_LOWBAT)
|| dpName.equals(DATAPOINT_NAME_LOWBAT_IP)) {
import static org.openhab.binding.homematic.internal.HomematicBindingConstants.BINDING_ID;
-import org.apache.commons.lang.math.NumberUtils;
import org.openhab.binding.homematic.internal.model.HmChannel;
import org.openhab.binding.homematic.internal.model.HmDatapoint;
import org.openhab.binding.homematic.internal.model.HmDatapointInfo;
* Generates the HmDatapointInfo for the given thing and channelUID.
*/
public static HmDatapointInfo createHmDatapointInfo(ChannelUID channelUID) {
- return new HmDatapointInfo(channelUID.getThingUID().getId(), HmParamsetType.VALUES,
- NumberUtils.toInt(channelUID.getGroupId()), channelUID.getIdWithoutGroup());
+ int value;
+ try {
+ String groupID = channelUID.getGroupId();
+ value = groupID == null ? 0 : Integer.parseInt(groupID);
+ } catch (NumberFormatException e) {
+ value = 0;
+ }
+ return new HmDatapointInfo(channelUID.getThingUID().getId(), HmParamsetType.VALUES, value,
+ channelUID.getIdWithoutGroup());
}
/**
import java.util.Map.Entry;
import java.util.TreeMap;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
-
/**
* The CcuMetadataExtractor loads some JavaScript files from the CCU and generates the device and datapoint
* descriptions into the file generated-descriptions.properties.
*/
private Map<String, String> loadJsonLangDescriptionFile(String url, String lang) throws IOException {
final Map<String, String> descriptions = new TreeMap<>();
- String descriptionUrl = StringUtils.replace(url, "{LANGUAGE}", lang);
+ String descriptionUrl = url.replace("{LANGUAGE}", lang);
String startLine = " \"" + lang + "\" : {";
String endLine = " },";
public void line(String line) {
String[] entry = handleStringTable(line);
if (entry != null) {
- descriptions.put(StringUtils.trim(entry[0]), unescape(StringUtils.trim(entry[1])));
+ descriptions.put(entry[0].trim(), unescape(entry[1].trim()));
}
}
};
@Override
public void line(String line) {
if (line.startsWith("elvST['")) {
- line = StringUtils.remove(line, "elvST['");
- line = StringUtils.replace(line, "'] = '", "=");
- line = StringUtils.remove(line, "';");
- line = StringUtils.remove(line, "$");
- line = StringUtils.remove(line, "{");
- line = StringUtils.remove(line, "}");
-
- int count = StringUtils.countMatches(line, "=");
+ line = line.replace("elvST['", "");
+ line = line.replace("'] = '", "=");
+ line = line.replace("';", "");
+ line = line.replace("$", "");
+ line = line.replace("{", "");
+ line = line.replace("}", "");
+
+ int count = 0;
+ for (int i = 0; i < line.length(); i++) {
+ if (line.charAt(i) == '=') {
+ count++;
+ }
+ }
if (count > 1) {
- line = StringUtils.replace(line, "=", "|", 1);
+ line = line.replaceFirst("=", "|");
}
-
- String[] split = StringUtils.split(line, "=", 2);
- deviceKeys.put(StringUtils.trim(split[0]), StringUtils.trim(split[1]));
+ String[] split = line.split("=", 2);
+ deviceKeys.put(split[0].trim(), split[1].trim());
}
}
};
* Splits a JSON JavaScript entry.
*/
private String[] handleStringTable(String line) {
- line = StringUtils.remove(line, " \"");
- line = StringUtils.remove(line, "\",");
- line = StringUtils.remove(line, "\"");
+ line = line.replace(" \"", "");
+ line = line.replace("\",", "");
+ line = line.replace("\"", "");
- String[] splitted = StringUtils.split(line, ":", 2);
+ String[] splitted = line.split(":", 2);
return splitted.length != 2 ? null : splitted;
}
* Transforms a string for a Java property file.
*/
private String unescape(String str) {
- str = StringUtils.replace(str, "%FC", "ü");
- str = StringUtils.replace(str, "%DC", "Ü");
- str = StringUtils.replace(str, "%E4", "ä");
- str = StringUtils.replace(str, "%C4", "Ä");
- str = StringUtils.replace(str, "%F6", "ö");
- str = StringUtils.replace(str, "%D6", "Ö");
- str = StringUtils.replace(str, "%DF", "ß");
- str = StringUtils.remove(str, " ");
- str = StringUtils.replace(str, "<br/>", " ");
- str = StringEscapeUtils.unescapeHtml(str);
+ str = str.replace("%FC", "ü");
+ str = str.replace("%DC", "Ü");
+ str = str.replace("%E4", "ä");
+ str = str.replace("%C4", "Ä");
+ str = str.replace("%F6", "ö");
+ str = str.replace("%D6", "Ö");
+ str = str.replace("%DF", "ß");
+ str = str.replace(" ", "");
+ str = str.replace("<br/>", " ");
+ str = str.replace("ü", "ü");
+ str = str.replace("ä", "ä");
+ str = str.replace("ö", "ö");
+ str = str.replace("Ü", "Ü");
+ str = str.replace("Ä", "Ä");
+ str = str.replace("Ö", "Ö");
return str;
}
includeLine = false;
}
}
- if ((includeLine == null || includeLine) && StringUtils.isNotBlank(line)) {
+ if ((includeLine == null || includeLine) && !line.isBlank()) {
line(line);
}
}