in hollow-diff-ui/src/main/java/com/netflix/hollow/diff/ui/pages/DiffOverviewPage.java [43:110]
private List<HollowDiffOverviewTypeEntry> getTypeEntries(String sortBy) {
List<HollowDiffOverviewTypeEntry> overviewEntries = new ArrayList<>();
for(HollowTypeDiff diff : getDiff().getTypeDiffs()) {
long totalDiffScore = diff.getTotalDiffScore();
int unmatchedInFrom = diff.getUnmatchedOrdinalsInFrom().size();
int unmatchedInTo = diff.getUnmatchedOrdinalsInTo().size();
int fromCount = 0;
try {
fromCount = diff.getTotalItemsInFromState();
} catch (Exception ex) {
System.out.println("DIFF_ERROR: Unable to getTotalItemsInFromState for type=" + diff.getTypeName());
ex.printStackTrace();
}
int toCount = 0;
try {
toCount = diff.getTotalItemsInToState();
} catch (Exception ex) {
System.out.println("DIFF_ERROR: Unable to getTotalItemsInToState for type=" + diff.getTypeName());
ex.printStackTrace();
}
HollowTypeReadState fromTypeState = diff.getFromTypeState();
HollowTypeReadState toTypeState = diff.getToTypeState();
overviewEntries.add(new HollowDiffOverviewTypeEntry(diff.getTypeName(), diff.hasMatchPaths(), totalDiffScore, unmatchedInFrom, unmatchedInTo, fromCount, toCount,
fromTypeState==null ? 0:fromTypeState.getApproximateHeapFootprintInBytes(), toTypeState==null ? 0:toTypeState.getApproximateHeapFootprintInBytes(),
fromTypeState==null ? 0:fromTypeState.getApproximateHoleCostInBytes(), toTypeState==null ? 0:toTypeState.getApproximateHoleCostInBytes()));
}
if(sortBy == null || "diffs".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> {
int result = Comparator
.comparing(HollowDiffOverviewTypeEntry::getTotalDiffScore)
.thenComparing(HollowDiffOverviewTypeEntry::getDeltaSize)
.thenComparing(HollowDiffOverviewTypeEntry::hasData)
.thenComparing(HollowDiffOverviewTypeEntry::hasUnmatched)
.thenComparing(HollowDiffOverviewTypeEntry::hasUniqueKey)
.compare(o2, o1);
// Fallback to Type Name Ordering
if (result==0) {
return o1.getTypeName().compareTo(o2.getTypeName());
}
return result;
});
} else if("unmatchedFrom".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> o2.getUnmatchedInFrom() - o1.getUnmatchedInFrom());
} else if("unmatchedTo".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> o2.getUnmatchedInTo() - o1.getUnmatchedInTo());
} else if("fromCount".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> o2.getTotalInFrom() - o1.getTotalInFrom());
} else if("toCount".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> o2.getTotalInTo() - o1.getTotalInTo());
} else if("fromHeap".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> (int) (o2.getHeapInFrom() - o1.getHeapInFrom()));
} else if("toHeap".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> (int) (o2.getHeapInTo() - o1.getHeapInTo()));
} else if("fromHole".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> (int) (o2.getHoleInFrom() - o1.getHoleInFrom()));
} else if("toHole".equals(sortBy)) {
overviewEntries.sort((o1, o2) -> (int) (o2.getHoleInTo() - o1.getHoleInTo()));
}
return overviewEntries;
}