Skip to content
Snippets Groups Projects
Commit 8d478876 authored by srosse's avatar srosse
Browse files

OO-1593: assessment entry for structure course element

parent db733b4a
No related branches found
No related tags found
No related merge requests found
...@@ -72,7 +72,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { ...@@ -72,7 +72,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
entry.setNumOfAssessedIdentities(numOfAssessedIdentites); entry.setNumOfAssessedIdentities(numOfAssessedIdentites);
//retrive statistcis about efficicency statements //retrive statistcis about efficicency statements
efficiencyStatementsStatistics(coach, params, entry); assessmentEntryStatistics(coach, params, entry);
//retrieve statistcs in user course infos //retrieve statistcs in user course infos
userCourseInfosStatistics(coach, params, entry); userCourseInfosStatistics(coach, params, entry);
...@@ -125,28 +125,35 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { ...@@ -125,28 +125,35 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
} }
} }
private void efficiencyStatementsStatistics(Identity coach, SearchAssessedIdentityParams params, CourseStatistics entry) { private void assessmentEntryStatistics(Identity coach, SearchAssessedIdentityParams params, CourseStatistics entry) {
RepositoryEntry courseEntry = params.getEntry(); RepositoryEntry courseEntry = params.getEntry();
try { try {
StringBuilder sf = new StringBuilder(); StringBuilder sf = new StringBuilder();
sf.append("select avg(statement.score) as scoreAverage, ") sf.append("select avg(aentry.score) as scoreAverage, ")
.append(" sum(case when statement.passed=true then 1 else 0 end) as numOfPassed,") .append(" sum(case when aentry.passed=true then 1 else 0 end) as numOfPassed,")
.append(" sum(case when statement.passed=false then 1 else 0 end) as numOfFailed,") .append(" sum(case when aentry.passed=false then 1 else 0 end) as numOfFailed,")
.append(" sum(case when statement.passed is null then 1 else 0 end) as numOfNotAttempted,") .append(" sum(case when aentry.passed is null then 1 else 0 end) as numOfNotAttempted,")
.append(" sum(statement.key) as numOfStatements,") .append(" sum(aentry.key) as numOfStatements,")
.append(" v.key as repoKey") .append(" v.key as repoKey")
.append(" from effstatementrepo as statement ") .append(" from assessmententry aentry ")
.append(" inner join statement.repositoryEntry v") .append(" inner join aentry.repositoryEntry v ")
.append(" where v.key=:repoEntryKey and (statement.identity in "); .append(" where v.key=:repoEntryKey and aentry.status is not null and not(aentry.status='").append(AssessmentEntryStatus.notStarted.name()).append("')");
if(params.getReferenceEntry() != null) {
sf.append(" and aentry.referenceEntry.key=:referenceKey");
}
if(params.getSubIdent() != null) {
sf.append(" and aentry.subIdent=:subIdent");
}
sf.append(" and (aentry.identity in");
if(params.isAdmin()) { if(params.isAdmin()) {
sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant") sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant")
.append(" where rel.entry.key=:repoEntryKey and rel.group=participant.group") .append(" where rel.entry.key=:repoEntryKey and rel.group=participant.group")
.append(" and participant.role='").append(GroupRoles.participant.name()).append("'") .append(" and participant.role='").append(GroupRoles.participant.name()).append("'")
.append(" )"); .append(" )");
if(params.isNonMembers()) { if(params.isNonMembers()) {
sf.append(" or not exists (select membership.identity from repoentrytogroup as rel, bgroupmember as membership") sf.append(" or aentry.identity not in (select membership.identity from repoentrytogroup as rel, bgroupmember as membership")
.append(" where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=statement.identity") .append(" where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.identity=aentry.identity")
.append(" )"); .append(" )");
} }
} else if(params.isBusinessGroupCoach() || params.isRepositoryEntryCoach()) { } else if(params.isBusinessGroupCoach() || params.isRepositoryEntryCoach()) {
sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach") sf.append(" (select participant.identity from repoentrytogroup as rel, bgroupmember as participant, bgroupmember as coach")
...@@ -156,14 +163,19 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { ...@@ -156,14 +163,19 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
.append(" )"); .append(" )");
} }
sf.append(" ) group by v.key"); sf.append(" ) group by v.key");
TypedQuery<Object[]> stats = dbInstance.getCurrentEntityManager() TypedQuery<Object[]> stats = dbInstance.getCurrentEntityManager()
.createQuery(sf.toString(), Object[].class) .createQuery(sf.toString(), Object[].class)
.setParameter("repoEntryKey", courseEntry.getKey()); .setParameter("repoEntryKey", courseEntry.getKey());
if(!params.isAdmin()) { if(!params.isAdmin()) {
stats.setParameter("identityKey", coach.getKey()); stats.setParameter("identityKey", coach.getKey());
} }
if(params.getReferenceEntry() != null) {
stats.setParameter("referenceKey", params.getReferenceEntry());
}
if(params.getSubIdent() != null) {
stats.setParameter("subIdent", params.getSubIdent());
}
List<Object[]> results = stats.getResultList(); List<Object[]> results = stats.getResultList();
if(results != null && results.size() > 0) { if(results != null && results.size() > 0) {
...@@ -229,9 +241,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { ...@@ -229,9 +241,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager {
Long identityKey = appendUserSearchByKey(sb, params.getSearchString()); Long identityKey = appendUserSearchByKey(sb, params.getSearchString());
String[] searchArr = appendUserSearchFull(sb, params.getSearchString()); String[] searchArr = appendUserSearchFull(sb, params.getSearchString());
System.out.println(sb.toString());
TypedQuery<T> query = dbInstance.getCurrentEntityManager() TypedQuery<T> query = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), classResult) .createQuery(sb.toString(), classResult)
.setParameter("repoEntryKey", params.getEntry().getKey()); .setParameter("repoEntryKey", params.getEntry().getKey());
......
...@@ -19,8 +19,8 @@ assessment.status.done=Bewertet ...@@ -19,8 +19,8 @@ assessment.status.done=Bewertet
assessment.tool.overview=Ubersicht assessment.tool.overview=Ubersicht
assessment.tool.numOfAssessedIdentities={0} bewertete Benutzer assessment.tool.numOfAssessedIdentities={0} bewertete Benutzer
assessment.tool.numOfAssessedGroups={0} Gruppe(n) assessment.tool.numOfAssessedGroups={0} Gruppe(n)
assessment.tool.numOfPassed={0} bestandend assessment.tool.numOfPassed={0} bestanden
assessment.tool.numOfFailed={0} nicht bestandend assessment.tool.numOfFailed={0} nicht bestanden
table.entries=Entries table.entries=Entries
waiting.review=Pending reviews waiting.review=Pending reviews
no.certificate=Kein Zertifikat vorhanden no.certificate=Kein Zertifikat vorhanden
......
...@@ -181,10 +181,10 @@ public class ScoreAccounting { ...@@ -181,10 +181,10 @@ public class ScoreAccounting {
Boolean passed = null; Boolean passed = null;
AssessmentEntryStatus assessmentStatus = AssessmentEntryStatus.inProgress; AssessmentEntryStatus assessmentStatus = AssessmentEntryStatus.inProgress;
ConditionInterpreter ci = userCourseEnvironment.getConditionInterpreter(); ConditionInterpreter ci = userCourseEnvironment.getConditionInterpreter();
if (scoreExpressionStr != null) { if (cNode.hasScoreConfigured() && scoreExpressionStr != null) {
score = new Float(ci.evaluateCalculation(scoreExpressionStr)); score = new Float(ci.evaluateCalculation(scoreExpressionStr));
} }
if (passedExpressionStr != null) { if (cNode.hasPassedConfigured() && passedExpressionStr != null) {
boolean hasPassed = ci.evaluateCondition(passedExpressionStr); boolean hasPassed = ci.evaluateCondition(passedExpressionStr);
if(hasPassed) { if(hasPassed) {
passed = Boolean.TRUE; passed = Boolean.TRUE;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment