/** * @param name The name of the component type to get the unique groupings of. * * @return The unique groupings of a named component type. */ private Map<String, List<String>> getUniqueGroupings(String name) { String queryString = "?- unique_group_field(" + name + ", G, F)."; Iterable<Map<String, Variable>> uniqueFieldsIterable = runQuery(queryString); Map<String, List<String>> results = new LinkedHashMap<String, List<String>>(); for (Map<String, Variable> variables : uniqueFieldsIterable) { Variable var = variables.get("F"); Functor fieldFunctor = (Functor) var.getValue(); String fieldName = engine.getFunctorName(fieldFunctor); var = variables.get("G"); Term groupNoTerm = var.getValue(); int groupNo = ((IntLiteral) groupNoTerm).intValue(); System.out.println("UniqueGroups: " + groupNo + " : " + fieldName); String group = (groupNo == 0) ? "" : Integer.toString(groupNo); List<String> fieldList = results.get(group); if (fieldList == null) { fieldList = new LinkedList<String>(); results.put(group, fieldList); } fieldList.add(fieldName); } return results; }