private void createResponse(Contact c, Assessment a, int questionNumber, boolean correct) { AssessmentMessage am = null; for (AssessmentMessage m : a.getMessages()) { if (m.getTopicItem() instanceof Question) { if (--questionNumber < 0) { am = m; break; } } } if (am == null) throw new RuntimeException("Could not find question #" + questionNumber); Question q = (Question) am.getTopicItem(); int answer = correct ? q.getCorrectAnswer() : q.getCorrectAnswer() + 1 % q.getAnswers().length; AssessmentMessageResponse r = new AssessmentMessageResponse(); r.setStudent(c); r.setAnswer(answer); r.setAssessmentMessage(am); r.setCorrect(correct); assessmentMessageResponseDao.save(r); }