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; }
@Transient public Map<Integer, SurveyRanking> getPracticeRankings() { if (practiceRankings == null) { practiceRankings = new HashMap<Integer, SurveyRanking>(); for (SurveyRanking ranking : getSurveyRankings()) { practiceRankings.put(ranking.getSurveyPractice().getId(), ranking); } } return practiceRankings; }
@Override public void setId(Integer id) { // TODO There is probably a better way to do this super.setId(id); for (SurveyAnswer answer : answers) { answer.setSurveyResult(this); } for (SurveyRanking ranking : rankings) { ranking.setSurveyResult(this); } }
public void calculateRankings() { rankings.clear(); for (SurveySection section : getSurvey().getSurveySections()) { for (SurveyPractice practice : section.getSurveyPractices()) { rankings.add(SurveyRanking.calculateRanking(this, practice, getSurvey() .getSurveyLevels(), getQuestionAnswers(), getAssertionAnswers())); } } practiceRankings = null; }