/** * Finds the right index at which to insert a new data approval level. Returns -1 if the new data * approval level is a duplicate. * * @param dataApprovalLevels list of all levels. * @param newLevel new level to find the insertion point for. * @return index where the new approval level should be inserted, or -1 if the new level is a * duplicate. */ private int getInsertIndex( List<DataApprovalLevel> dataApprovalLevels, DataApprovalLevel newLevel) { int i = dataApprovalLevels.size() - 1; while (i >= 0) { DataApprovalLevel test = dataApprovalLevels.get(i); int orgLevelDifference = newLevel.getOrgUnitLevel() - test.getOrgUnitLevel(); if (orgLevelDifference > 0) { break; } if (orgLevelDifference == 0) { if (newLevel.levelEquals(test)) { return -1; } if (test.getCategoryOptionGroupSet() == null) { break; } } i--; } return i + 1; }
@Override public boolean dataApprovalLevelExists(DataApprovalLevel level) { List<DataApprovalLevel> dataApprovalLevels = getAllDataApprovalLevels(); for (DataApprovalLevel dataApprovalLevel : dataApprovalLevels) { if (level.levelEquals(dataApprovalLevel)) { return true; } } return false; }