return;
}
- StringBuilder channelList = new StringBuilder();
- List<Channel> channels = new ArrayList<>();
+ Map<String, Channel> channelMap = new HashMap<>();
String thingId = getThing().getUID().getAsString();
for (String channelId : ALL_CHANNEL_IDS) {
String feature = channelId.toLowerCase();
for (Channel channel : thing.getChannels()) {
String id = channel.getUID().getId();
if (id.startsWith(InsteonBindingConstants.BROADCAST_ON_OFF)) {
- addChannel(channel, id, channels, channelList);
+ channelMap.put(id, channel);
broadcastChannels.add(id);
}
}
.createChannelBuilder(channelUID, channelTypeUID).withLabel(id)
.build();
- addChannel(channel, id, channels, channelList);
+ channelMap.put(id, channel);
broadcastChannels.add(id);
}
} else {
channel = callback.createChannelBuilder(channelUID, channelTypeUID).build();
}
- addChannel(channel, channelId, channels, channelList);
+ channelMap.put(channelId, channel);
}
} else {
logger.debug("{} is a feature group for {}. It will not be added as a channel.", feature,
}
}
- if (!channels.isEmpty() || device.isModem()) {
- if (!channels.isEmpty()) {
+ if (!channelMap.isEmpty() || device.isModem()) {
+ List<Channel> channels = new ArrayList<>();
+ StringBuilder channelList = new StringBuilder();
+ if (!channelMap.isEmpty()) {
+ List<String> channelIds = new ArrayList<>(channelMap.keySet());
+ Collections.sort(channelIds);
+ channelIds.forEach(channelId -> {
+ Channel channel = channelMap.get(channelId);
+ if (channel != null) {
+ channels.add(channel);
+
+ if (channelList.length() > 0) {
+ channelList.append(", ");
+ }
+ channelList.append(channelId);
+ }
+ });
+
updateThing(editThing().withChannels(channels).build());
}
});
}
- private void addChannel(Channel channel, String channelId, List<Channel> channels, StringBuilder channelList) {
- channels.add(channel);
-
- if (channelList.length() > 0) {
- channelList.append(", ");
- }
- channelList.append(channelId);
- }
-
@Override
public void dispose() {
InsteonDeviceConfiguration config = this.config;