private List getTypeEntries()

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;
    }