diff --git a/src/main/java/org/breedinginsight/brapi/v2/services/BrAPITrialService.java b/src/main/java/org/breedinginsight/brapi/v2/services/BrAPITrialService.java index 9ca961920..9f5a93410 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/services/BrAPITrialService.java +++ b/src/main/java/org/breedinginsight/brapi/v2/services/BrAPITrialService.java @@ -935,8 +935,16 @@ private boolean isSubEntityDataset(List ous){ private void sortDefaultForObservationUnit(List ous) { Comparator studyNameComparator = Comparator.comparing(BrAPIObservationUnit::getStudyName, new IntOrderComparator()); - Comparator ouNameComparator = Comparator.comparing(BrAPIObservationUnit::getObservationUnitName, new IntOrderComparator()); - ous.sort( (studyNameComparator).thenComparing(ouNameComparator)); + + if (isSubEntityDataset(ous)) { + Comparator subUnitComparator = Comparator.comparing(BrAPIObservationUnit::getObservationUnitName, new IntOrderComparator()); + Comparator ouNameComparator = Comparator.comparing(row -> (row.getAdditionalInfo().get(BrAPIAdditionalInfoFields.EXP_UNIT_ID).toString()), new IntOrderComparator()); + ous.sort((studyNameComparator).thenComparing(ouNameComparator).thenComparing(subUnitComparator)); + } + else { + Comparator ouNameComparator = Comparator.comparing(BrAPIObservationUnit::getObservationUnitName, new IntOrderComparator()); + ous.sort((studyNameComparator).thenComparing(ouNameComparator)); + } } private void sortDefaultForExportRows(@NotNull List> exportRows) {