mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
[homematic] Fix invalid default values ending up in the thing type (#12437)
Sometimes invalid default values ended up in the default value for a channel of a thing type. Initializing the thing would fail completely complaining that it is not an allowed option. This patch makes sure those values are actually valid and attempts to correct them if they are invalid. Signed-off-by: Flole <flole@flole.de>
This commit is contained in:
parent
38a14b821d
commit
0e0b9afe08
@ -342,6 +342,33 @@ public class HomematicTypeGeneratorImpl implements HomematicTypeGenerator {
|
||||
}
|
||||
});
|
||||
builder.withOptions(options);
|
||||
if (dp.isEnumType()) {
|
||||
logger.trace("Checking if default option {} is valid",
|
||||
Objects.toString(dp.getDefaultValue(), ""));
|
||||
boolean needsChange = true;
|
||||
for (ParameterOption option : options) {
|
||||
if (option.getValue().equals(Objects.toString(dp.getDefaultValue(), ""))) {
|
||||
needsChange = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (needsChange) {
|
||||
String defStr = Objects.toString(dp.getDefaultValue(), "0");
|
||||
if (defStr == null) {
|
||||
defStr = "0";
|
||||
}
|
||||
int offset = Integer.parseInt(defStr);
|
||||
if (offset >= 0 && offset < options.size()) {
|
||||
ParameterOption defaultOption = options.get(offset);
|
||||
logger.trace("Changing default option to {} (offset {})", defaultOption, defStr);
|
||||
builder.withDefault(defaultOption.getValue());
|
||||
} else if (options.size() > 0) {
|
||||
ParameterOption defaultOption = options.get(0);
|
||||
logger.trace("Changing default option to {} (first value)", defaultOption);
|
||||
builder.withDefault(defaultOption.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (dp.isNumberType()) {
|
||||
|
Loading…
Reference in New Issue
Block a user