@Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; if (withScore) { if (applyToAllEl.isAtLeastSelected(1)) { allOk &= validateScore(groupScoreEl); } else { List<AssessmentRow> rows = model.getObjects(); for (AssessmentRow row : rows) { allOk &= validateScore(row.getScoreEl()); } } } return allOk & super.validateFormLogic(ureq); }
private void applyChanges(boolean setAsDone) { List<AssessmentRow> rows = model.getObjects(); ICourse course = CourseFactory.loadCourse(courseEnv.getCourseResourceableId()); if (applyToAllEl.isAtLeastSelected(1)) { Float score = null; if (withScore) { String scoreValue = groupScoreEl.getValue(); if (StringHelper.containsNonWhitespace(scoreValue)) { score = Float.parseFloat(scoreValue); } } Boolean passed = null; if (withPassed) { if (cutValue == null) { passed = groupPassedEl.isSelected(0); } else if (score != null) { passed = (score.floatValue() >= cutValue.floatValue()) ? Boolean.TRUE : Boolean.FALSE; } } for (AssessmentRow row : rows) { UserCourseEnvironment userCourseEnv = row.getUserCourseEnvironment(course); ScoreEvaluation newScoreEval; if (setAsDone) { newScoreEval = new ScoreEvaluation(score, passed, AssessmentEntryStatus.done, true, null); } else { newScoreEval = new ScoreEvaluation(score, passed); } gtaNode.updateUserScoreEvaluation(newScoreEval, userCourseEnv, getIdentity(), false); } if (withComment) { String comment = groupCommentEl.getValue(); if (StringHelper.containsNonWhitespace(comment)) { for (AssessmentRow row : rows) { UserCourseEnvironment userCourseEnv = row.getUserCourseEnvironment(course); gtaNode.updateUserUserComment(comment, userCourseEnv, getIdentity()); } } } } else { for (AssessmentRow row : rows) { UserCourseEnvironment userCourseEnv = row.getUserCourseEnvironment(course); Float score = null; if (withScore) { String value = row.getScoreEl().getValue(); if (StringHelper.containsNonWhitespace(value)) { score = Float.parseFloat(value); } } Boolean passed = null; if (withPassed) { if (cutValue == null) { passed = row.getPassedEl().isSelected(0); } else if (score != null) { passed = (score.floatValue() >= cutValue.floatValue()) ? Boolean.TRUE : Boolean.FALSE; } } ScoreEvaluation newScoreEval; if (setAsDone) { newScoreEval = new ScoreEvaluation(score, passed, AssessmentEntryStatus.done, true, null); } else { newScoreEval = new ScoreEvaluation(score, passed); } gtaNode.updateUserScoreEvaluation(newScoreEval, userCourseEnv, getIdentity(), false); if (withComment) { String comment = row.getComment(); if (StringHelper.containsNonWhitespace(comment)) { gtaNode.updateUserUserComment(comment, userCourseEnv, getIdentity()); } } } } }
/** @return True if all results are the same */ private ModelInfos loadModel() { // load participants, load datas ICourse course = CourseFactory.loadCourse(courseEnv.getCourseResourceableId()); List<Identity> identities = businessGroupService.getMembers(assessedGroup, GroupRoles.participant.name()); Map<Identity, AssessmentEntry> identityToEntryMap = new HashMap<>(); List<AssessmentEntry> entries = course .getCourseEnvironment() .getAssessmentManager() .getAssessmentEntries(assessedGroup, gtaNode); for (AssessmentEntry entry : entries) { identityToEntryMap.put(entry.getIdentity(), entry); } int count = 0; boolean same = true; StringBuilder duplicateWarning = new StringBuilder(); Float scoreRef = null; Boolean passedRef = null; String commentRef = null; List<AssessmentRow> rows = new ArrayList<>(identities.size()); for (Identity identity : identities) { AssessmentEntry entry = identityToEntryMap.get(identity); ScoreEvaluation scoreEval = null; if (withScore || withPassed) { scoreEval = gtaNode.getUserScoreEvaluation(entry); if (scoreEval == null) { scoreEval = ScoreEvaluation.EMPTY_EVALUATION; } } String comment = null; if (withComment && entry != null) { comment = entry.getComment(); } boolean duplicate = duplicateMemberKeys.contains(identity.getKey()); if (duplicate) { if (duplicateWarning.length() > 0) duplicateWarning.append(", "); duplicateWarning.append(StringHelper.escapeHtml(userManager.getUserDisplayName(identity))); } AssessmentRow row = new AssessmentRow(identity, duplicate); rows.add(row); if (withScore) { Float score = scoreEval.getScore(); String pointVal = AssessmentHelper.getRoundedScore(score); TextElement pointEl = uifactory.addTextElement("point" + count, null, 5, pointVal, flc); pointEl.setDisplaySize(5); row.setScoreEl(pointEl); if (count == 0) { scoreRef = score; } else if (!same(scoreRef, score)) { same = false; } } if (withPassed && cutValue == null) { Boolean passed = scoreEval.getPassed(); MultipleSelectionElement passedEl = uifactory.addCheckboxesHorizontal("check" + count, null, flc, onKeys, onValues); if (passed != null && passed.booleanValue()) { passedEl.select(onKeys[0], passed.booleanValue()); } row.setPassedEl(passedEl); if (count == 0) { passedRef = passed; } else if (!same(passedRef, passed)) { same = false; } } if (withComment) { FormLink commentLink = uifactory.addFormLink( "comment-" + CodeHelper.getRAMUniqueID(), "comment", "comment", null, flc, Link.LINK); if (StringHelper.containsNonWhitespace(comment)) { commentLink.setIconLeftCSS("o_icon o_icon_comments"); } else { commentLink.setIconLeftCSS("o_icon o_icon_comments_none"); } commentLink.setUserObject(row); row.setComment(comment); row.setCommentEditLink(commentLink); if (count == 0) { commentRef = comment; } else if (!same(commentRef, comment)) { same = false; } } count++; } model.setObjects(rows); table.reset(); return new ModelInfos(same, scoreRef, passedRef, commentRef, duplicateWarning.toString()); }