public static SurveyRanking calculateRanking(SurveyResult surveyResult, SurveyPractice surveyPractice, List<SurveyLevel> levels, Map<Integer, SurveyAnswer> questionAnswers, Map<Integer, SurveyAnswer> assertionAnswers) { Iterator<SurveyLevel> levelIterator = levels.iterator(); boolean meetsLevel = true; int metLevel = 0; boolean isPlus = false; while (meetsLevel && levelIterator.hasNext()) { SurveyLevel level = levelIterator.next(); meetsLevel = doResultsMeetLevel(level.getNumber(), surveyPractice.getObjectivesMap() .get(level.getNumber()), questionAnswers, assertionAnswers); if (meetsLevel) { metLevel = level.getNumber(); } else { isPlus = isResultsPlusForLevel(level.getNumber(), surveyPractice.getObjectivesMap() .get(level.getNumber()), questionAnswers, assertionAnswers); } } SurveyRanking ranking = new SurveyRanking(); ranking.setLevel(metLevel); ranking.setPlus(isPlus); ranking.setSurveyPractice(surveyPractice); ranking.setSurveyResult(surveyResult); return ranking; }