Skip to content

Commit

Permalink
[somfytahoma] Console command completion
Browse files Browse the repository at this point in the history
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
  • Loading branch information
lolodomo committed Oct 24, 2022
1 parent 42d93c3 commit 9c19cda
Showing 1 changed file with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,16 @@
package org.openhab.binding.somfytahoma.internal.console;

import java.util.List;
import java.util.stream.Collectors;

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.binding.somfytahoma.internal.SomfyTahomaBindingConstants;
import org.openhab.binding.somfytahoma.internal.handler.SomfyTahomaBridgeHandler;
import org.openhab.binding.somfytahoma.internal.model.SomfyTahomaActionGroup;
import org.openhab.core.io.console.Console;
import org.openhab.core.io.console.ConsoleCommandCompleter;
import org.openhab.core.io.console.StringsCompleter;
import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension;
import org.openhab.core.io.console.extensions.ConsoleCommandExtension;
import org.openhab.core.thing.Thing;
Expand All @@ -39,6 +44,7 @@
public class SomfyTahomaCommandExtension extends AbstractConsoleCommandExtension {

private static final String SCENARIOS = "scenarios";
private static final StringsCompleter SUBCMD_COMPLETER = new StringsCompleter(List.of(SCENARIOS), false);

private final ThingRegistry thingRegistry;

Expand Down Expand Up @@ -92,4 +98,33 @@ public void execute(String[] args, Console console) {
public List<String> getUsages() {
return List.of(buildCommandUsage("<bridgeUID> " + SCENARIOS, "list all the scenarios with their id"));
}

@Override
public @Nullable ConsoleCommandCompleter getCompleter() {
return new SomfyTahomaConsoleCommandCompleter();
}

private class SomfyTahomaConsoleCommandCompleter implements ConsoleCommandCompleter {
@Override
public boolean complete(String[] args, int cursorArgumentIndex, int cursorPosition, List<String> candidates) {
if (cursorArgumentIndex <= 0) {
return new StringsCompleter(thingRegistry.getAll().stream()
.filter(t -> SomfyTahomaBindingConstants.THING_TYPE_BRIDGE.equals(t.getThingTypeUID()))
.map(t -> t.getUID().getAsString()).collect(Collectors.toList()), true).complete(args,
cursorArgumentIndex, cursorPosition, candidates);
} else if (cursorArgumentIndex == 1) {
Thing thing = null;
try {
ThingUID thingUID = new ThingUID(args[0]);
thing = thingRegistry.get(thingUID);
} catch (IllegalArgumentException e) {
thing = null;
}
if (thing != null && SomfyTahomaBindingConstants.THING_TYPE_BRIDGE.equals(thing.getThingTypeUID())) {
return SUBCMD_COMPLETER.complete(args, cursorArgumentIndex, cursorPosition, candidates);
}
}
return false;
}
}
}

0 comments on commit 9c19cda

Please sign in to comment.