Adding UI extensibility
[aai/sparky-be.git] / src / main / java / org / onap / aai / sparky / util / SuggestionsPermutation.java
index 463d122..ba51254 100644 (file)
@@ -36,44 +36,63 @@ public class SuggestionsPermutation {
    * \r
    * @return A Arraylist which contains a array list of all possible combinations\r
    */\r
-  @SuppressWarnings("serial")\r
-  public ArrayList<ArrayList<String>> getSuggestionsPermutation(List<String> list) {\r
-    List<String> statusList = new ArrayList<>(list);\r
-    List<String> dupStatusList;\r
-    ArrayList<ArrayList<String>> uniqueList = new ArrayList<ArrayList<String>>();\r
-    int mainLoopIndexCounter = 0;\r
-    for (String status : statusList) {\r
-      // Add the single entity subset\r
-      uniqueList.add(new ArrayList<String>() {\r
-        {\r
-          add(status);\r
-        }\r
-      });\r
-      // Remove all the elements to left till the current index\r
-      dupStatusList = truncateListUntill(statusList, mainLoopIndexCounter);\r
+  public static ArrayList<ArrayList<String>> getUniqueListForSuggestions(\r
+      List<String> originalList) {\r
+    ArrayList<ArrayList<String>> lists = new ArrayList<ArrayList<String>>();\r
+    if (originalList.isEmpty()) {\r
+      lists.add(new ArrayList<String>());\r
+      return lists;\r
+    }\r
+    List<String> list = new ArrayList<String>(originalList);\r
+    String head = list.get(0);\r
+    ArrayList<String> rest = new ArrayList<String>(list.subList(1, list.size()));\r
 \r
-      while (dupStatusList.size() > 0) {\r
-        ArrayList<String> suggListInIterate = new ArrayList<>();\r
-        suggListInIterate.add(status);\r
-        for (String dupStatus : dupStatusList) {\r
-          suggListInIterate.add(dupStatus);\r
-        }\r
-        uniqueList.add(suggListInIterate);\r
-        dupStatusList.remove(0);\r
-      }\r
-      mainLoopIndexCounter++;\r
+    for (ArrayList<String> activeList : getUniqueListForSuggestions(rest)) {\r
+      ArrayList<String> newList = new ArrayList<String>();\r
+      newList.add(head);\r
+      newList.addAll(activeList);\r
+      lists.add(newList);\r
+      lists.add(activeList);\r
     }\r
-    return uniqueList;\r
+    return lists;\r
+  }\r
 \r
+  public static ArrayList<ArrayList<String>> getNonEmptyUniqueLists(List<String> list) {\r
+    ArrayList<ArrayList<String>> lists = getUniqueListForSuggestions(list);\r
+    // remove empty list from the power set\r
+    for (ArrayList<String> emptyList : lists) {\r
+      if (emptyList.isEmpty()) {\r
+        lists.remove(emptyList);\r
+        break;\r
+      }\r
+    }\r
+    return lists;\r
   }\r
 \r
-  private List<String> truncateListUntill(List<String> lists, int index) {\r
-    List<String> truncatedList = new ArrayList<>(lists);\r
-    int counter = 0;\r
-    while (counter <= index) {\r
-      truncatedList.remove(0);\r
-      counter++;\r
+  public static List<List<String>> getListPermutations(List<String> list) {\r
+    List<String> inputList = new ArrayList<String>();\r
+    inputList.addAll(list);\r
+    if (inputList.size() == 0) {\r
+      List<List<String>> result = new ArrayList<List<String>>();\r
+      result.add(new ArrayList<String>());\r
+      return result;\r
     }\r
-    return truncatedList;\r
+\r
+    List<List<String>> listOfLists = new ArrayList<List<String>>();\r
+\r
+    String firstElement = inputList.remove(0);\r
+\r
+    List<List<String>> recursiveReturn = getListPermutations(inputList);\r
+    for (List<String> li : recursiveReturn) {\r
+\r
+      for (int index = 0; index <= li.size(); index++) {\r
+        List<String> temp = new ArrayList<String>(li);\r
+        temp.add(index, firstElement);\r
+        listOfLists.add(temp);\r
+      }\r
+\r
+    }\r
+    return listOfLists;\r
   }\r
+\r
 }\r