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