Cześć
Staram się zrobić uniwersalną metodę, która będzie określać czy posortowane są pola w obiektach będących w liście.
Mam obiekt A mający kilka pól a,b,c... obiekt B mający jakieś inne pola f,g,h,i itp.
Obiekty A i B są to wiersze z tabel gdzie pola a, b, c to po prostu wartości kolumn. Obiekt A to wiersz z tabeli załóżmy lekarz a B pacjent itp.
Cała tabel to List tych obiektów.
Teraz sortuję w GUI tą tabelę po załóżmy pierwszej kolumnie i poprzez selenium mam obiekt : lista obiektów A
No i staram siię teraz określić czy w liście, w obiektach A , pola a są posortowane.
Pola mogą być stringiem lub Integer lub ewentualnie LocalDate ale przy tym ostatnim chyba nie zadziała moja metoda bo nie implementuje Comperable.
Na chwilę obecną mam taki prototyp:
Każda listę obiektów castuję:
List<A> r = getSearchResults();
List<Object> objectList = (List)r;
i wsadzam:
metoda by była taka:
private boolean isColumnSorted(List<Object> gridResult, int column, boolean reverse) {
List<Object> columnValues = new ArrayList<>();
for (Object x : gridResult) {
Class<?> clazz = x.getClass();
Field[] fields = clazz.getFields();
Object field = fields[column];
columnValues.add(field);
}
List tmp = new ArrayList(columnValues);
Collections.sort(tmp);
boolean sorted = tmp.equals(columnValues);
return sorted;
}
Jest lepszy sposób - bardziej uniwersalny - pozdrawiam
Shalom