/** * Check if a row is inside another list * * @param list Row list * @param rowToCheck row to check * @param comparator row comparator */ private static boolean in(List<Map<String, CellData>> list, Map<String, CellData> rowToCheck, CompareRow comparator) { for (Map<String, CellData> row : list) { if (comparator.compare(row, rowToCheck) == 0) { return true; } } return false; } }
/** * Sort datalist * * @param list DataList to sort * @param sortList Sort by field list */ public static void sort(DataList list, List<SortColumn> sortList) { Collections.sort(list.getRows(), new CompareRow(sortList)); }
/** * Sort datalist * * @param list DataList to sort * @param columnId Sort by field list * @param direction Sort direction */ public static void sort(DataList list, String columnId, String direction) { List<SortColumn> sortColumnList = new ArrayList<>(); SortColumn sortColumn = new SortColumn(columnId, direction); sortColumnList.add(sortColumn); Collections.sort(list.getRows(), new CompareRow(sortColumnList)); }
/** * Keeps only distinct values of given fields * * @param list DataList * @param sortColumns Sort by field list */ public static void distinct(DataList list, List<SortColumn> sortColumns) { CompareRow comparator = new CompareRow(sortColumns); List<Map<String, CellData>> newRows = new ArrayList<>(); for (Map<String, CellData> row: list.getRows()) { if (!in(newRows, row, comparator)) { newRows.add((Map<String, CellData>) ((HashMap<String, CellData>) row).clone()); } } // Set rows and records list.setRows(newRows); list.setRecords((long) list.getRows().size()); }