Implement groups CLI command autocompletion

Change-Id: I0bb9eff30c03a5d08f69280879ec2be869cb6539
diff --git a/cli/src/main/java/org/onosproject/cli/net/GroupStatusCompleter.java b/cli/src/main/java/org/onosproject/cli/net/GroupStatusCompleter.java
new file mode 100644
index 0000000..4042138
--- /dev/null
+++ b/cli/src/main/java/org/onosproject/cli/net/GroupStatusCompleter.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.cli.net;
+
+import com.google.common.collect.Lists;
+import org.onosproject.cli.AbstractChoicesCompleter;
+import org.onosproject.net.group.Group;
+
+import java.util.List;
+
+/**
+ * Group status completer.
+ */
+public class GroupStatusCompleter extends AbstractChoicesCompleter {
+    @Override
+    protected List<String> choices() {
+        List<String> strings = Lists.newArrayList();
+        for (Group.GroupState groupState : Group.GroupState.values()) {
+            strings.add(groupState.toString());
+        }
+        strings.add(GroupsListCommand.ANY);
+        return strings;
+    }
+}
diff --git a/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java b/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java
index 2b25744..8083c96 100644
--- a/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/GroupsListCommand.java
@@ -45,6 +45,8 @@
         description = "Lists all groups in the system")
 public class GroupsListCommand extends AbstractShellCommand {
 
+    public static final String ANY = "any";
+
     private static final String FORMAT =
             "   id=0x%s, state=%s, type=%s, bytes=%s, packets=%s, appId=%s";
     private static final String BUCKET_FORMAT =
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 434c9a4..1a47a0a 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -428,6 +428,11 @@
         </command>
         <command>
             <action class="org.onosproject.cli.net.GroupsListCommand"/>
+            <completers>
+                <ref component-id="groupStatusCompleter"/>
+                <ref component-id="deviceIdCompleter"/>
+                <null/>
+            </completers>
         </command>
 
         <command>
@@ -562,6 +567,7 @@
     <bean id="hostIdCompleter" class="org.onosproject.cli.net.HostIdCompleter"/>
     <bean id="intentKeyCompleter" class="org.onosproject.cli.net.IntentKeyCompleter"/>
     <bean id="flowRuleStatusCompleter" class="org.onosproject.cli.net.FlowRuleStatusCompleter"/>
+    <bean id="groupStatusCompleter" class="org.onosproject.cli.net.GroupStatusCompleter" />
     <bean id="connectPointCompleter" class="org.onosproject.cli.net.ConnectPointCompleter"/>
     <bean id="nullCompleter" class="org.apache.karaf.shell.console.completer.NullCompleter"/>
     <bean id="ethTypeCompleter" class="org.onosproject.cli.net.EthTypeCompleter"/>