From 0fd98544b4cdf02c1da5ca2252a4ee73fc6c9b1d Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 29 Nov 2016 11:06:13 +0100 Subject: [PATCH] OO-2392: the assessment entry of a course element doesn't dependent of the reference entry --- .../course/assessment/AssessmentManager.java | 2 +- .../manager/CourseAssessmentManagerImpl.java | 17 +++++++++++++---- .../olat/course/nodes/BasicLTICourseNode.java | 4 ++-- .../olat/course/nodes/CheckListCourseNode.java | 2 +- .../org/olat/course/nodes/GTACourseNode.java | 2 +- .../olat/course/nodes/IQTESTCourseNode.java | 4 ++-- .../org/olat/course/nodes/MSCourseNode.java | 2 +- .../olat/course/nodes/PortfolioCourseNode.java | 2 +- .../course/nodes/ProjectBrokerCourseNode.java | 2 +- .../org/olat/course/nodes/ScormCourseNode.java | 5 +---- .../org/olat/course/nodes/TACourseNode.java | 2 +- .../run/preview/PreviewAssessmentManager.java | 2 +- .../modules/assessment/AssessmentEntry.java | 2 ++ .../modules/assessment/AssessmentService.java | 7 ++----- .../assessment/manager/AssessmentEntryDAO.java | 15 +-------------- .../manager/AssessmentServiceImpl.java | 8 -------- .../assessment/model/AssessmentEntryImpl.java | 2 +- .../manager/AssessmentEntryDAOTest.java | 18 ------------------ 18 files changed, 32 insertions(+), 66 deletions(-) diff --git a/src/main/java/org/olat/course/assessment/AssessmentManager.java b/src/main/java/org/olat/course/assessment/AssessmentManager.java index 1961a3a3a6f..9605ad14c3f 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentManager.java +++ b/src/main/java/org/olat/course/assessment/AssessmentManager.java @@ -194,7 +194,7 @@ public interface AssessmentManager { public Boolean getNodeFullyAssessed(CourseNode courseNode, Identity identity); - public AssessmentEntry getAssessmentEntry(CourseNode courseNode, Identity assessedIdentity, String referenceSoftKey); + public AssessmentEntry getAssessmentEntry(CourseNode courseNode, Identity assessedIdentity); public AssessmentEntry createAssessmentEntry(CourseNode courseNode, Identity assessedIdentity, ScoreEvaluation scoreEvaluation); diff --git a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java index b65a7e1d520..28d14c6ab48 100644 --- a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java @@ -84,6 +84,10 @@ public class CourseAssessmentManagerImpl implements AssessmentManager { private AssessmentEntry getOrCreate(Identity assessedIdentity, CourseNode courseNode) { return assessmentService.getOrCreateAssessmentEntry(assessedIdentity, null, cgm.getCourseEntry(), courseNode.getIdent(), courseNode.getReferencedRepositoryEntry()); } + + private AssessmentEntry getOrCreate(Identity assessedIdentity, String subIdent, RepositoryEntry referenceEntry) { + return assessmentService.getOrCreateAssessmentEntry(assessedIdentity, null, cgm.getCourseEntry(), subIdent, referenceEntry); + } @Override public List<AssessmentEntry> getAssessmentEntries(CourseNode courseNode) { @@ -91,8 +95,8 @@ public class CourseAssessmentManagerImpl implements AssessmentManager { } @Override - public AssessmentEntry getAssessmentEntry(CourseNode courseNode, Identity assessedIdentity, String referenceSoftKey) { - return assessmentService.loadAssessmentEntry(assessedIdentity, cgm.getCourseEntry(), courseNode.getIdent(), referenceSoftKey); + public AssessmentEntry getAssessmentEntry(CourseNode courseNode, Identity assessedIdentity) { + return assessmentService.loadAssessmentEntry(assessedIdentity, cgm.getCourseEntry(), courseNode.getIdent()); } @Override @@ -243,8 +247,13 @@ public class CourseAssessmentManagerImpl implements AssessmentManager { Float score = scoreEvaluation.getScore(); Boolean passed = scoreEvaluation.getPassed(); Long assessmentId = scoreEvaluation.getAssessmentID(); - - AssessmentEntry assessmentEntry = getOrCreate(assessedIdentity, courseNode); + + String subIdent = courseNode.getIdent(); + RepositoryEntry referenceEntry = courseNode.getReferencedRepositoryEntry(); + AssessmentEntry assessmentEntry = getOrCreate(assessedIdentity, subIdent, referenceEntry); + if(referenceEntry != null && !referenceEntry.equals(assessmentEntry.getReferenceEntry())) { + assessmentEntry.setReferenceEntry(referenceEntry); + } if(score == null) { assessmentEntry.setScore(null); } else { diff --git a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java index aa5fd6a488a..e902d0c1074 100644 --- a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java +++ b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java @@ -333,14 +333,14 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements @Override public AssessmentEntry getUserAssessmentEntry(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); - return am.getAssessmentEntry(this, userCourseEnv.getIdentityEnvironment().getIdentity(), null); + return am.getAssessmentEntry(this, userCourseEnv.getIdentityEnvironment().getIdentity()); } @Override public AssessmentEvaluation getUserScoreEvaluation(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - AssessmentEntry entry = am.getAssessmentEntry(this, mySelf, null); + AssessmentEntry entry = am.getAssessmentEntry(this, mySelf); return getUserScoreEvaluation(entry) ; } diff --git a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java index b766decab56..86339eecdc4 100644 --- a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java +++ b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java @@ -189,7 +189,7 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements public AssessmentEntry getUserAssessmentEntry(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - return am.getAssessmentEntry(this, mySelf, null); + return am.getAssessmentEntry(this, mySelf); } /** diff --git a/src/main/java/org/olat/course/nodes/GTACourseNode.java b/src/main/java/org/olat/course/nodes/GTACourseNode.java index a93bf15b684..1689d5de0d2 100644 --- a/src/main/java/org/olat/course/nodes/GTACourseNode.java +++ b/src/main/java/org/olat/course/nodes/GTACourseNode.java @@ -900,7 +900,7 @@ public class GTACourseNode extends AbstractAccessableCourseNode implements Persi public AssessmentEntry getUserAssessmentEntry(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - return am.getAssessmentEntry(this, mySelf, null); + return am.getAssessmentEntry(this, mySelf); } @Override diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java index 57515d61333..2aacca850d8 100644 --- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java +++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java @@ -366,7 +366,7 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe // read score from properties save score, passed and attempts information AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - AssessmentEntry entry = am.getAssessmentEntry(this, mySelf, getRepositoryEntrySoftKey()); + AssessmentEntry entry = am.getAssessmentEntry(this, mySelf); Boolean passed = null; Float score = null; @@ -405,7 +405,7 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); if(getRepositoryEntrySoftKey() != null) { - return am.getAssessmentEntry(this, mySelf, getRepositoryEntrySoftKey()); + return am.getAssessmentEntry(this, mySelf); } return null; } diff --git a/src/main/java/org/olat/course/nodes/MSCourseNode.java b/src/main/java/org/olat/course/nodes/MSCourseNode.java index 47219453d63..51e4a682b82 100644 --- a/src/main/java/org/olat/course/nodes/MSCourseNode.java +++ b/src/main/java/org/olat/course/nodes/MSCourseNode.java @@ -230,7 +230,7 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Persis public AssessmentEntry getUserAssessmentEntry(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - return am.getAssessmentEntry(this, mySelf, null); + return am.getAssessmentEntry(this, mySelf); } /** diff --git a/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java b/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java index 829117a0ca7..ea22bde3c4d 100644 --- a/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java +++ b/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java @@ -392,7 +392,7 @@ public class PortfolioCourseNode extends AbstractAccessableCourseNode implements } if(referenceSoftkey != null) { - return am.getAssessmentEntry(this, mySelf, referenceSoftkey); + return am.getAssessmentEntry(this, mySelf); } return null; } diff --git a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java index 9c87b6ce12c..15c82e36c27 100644 --- a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java +++ b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java @@ -481,7 +481,7 @@ public class ProjectBrokerCourseNode extends GenericCourseNode implements Persis public AssessmentEntry getUserAssessmentEntry(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - return am.getAssessmentEntry(this, mySelf, null); + return am.getAssessmentEntry(this, mySelf); } @Override diff --git a/src/main/java/org/olat/course/nodes/ScormCourseNode.java b/src/main/java/org/olat/course/nodes/ScormCourseNode.java index fbfc1f5568a..3f998bcec49 100644 --- a/src/main/java/org/olat/course/nodes/ScormCourseNode.java +++ b/src/main/java/org/olat/course/nodes/ScormCourseNode.java @@ -383,10 +383,7 @@ public class ScormCourseNode extends AbstractAccessableCourseNode implements Per public AssessmentEntry getUserAssessmentEntry(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - if(getReferencedRepositoryEntrySoftkey() != null) { - return am.getAssessmentEntry(this, mySelf, getReferencedRepositoryEntrySoftkey()); - } - return null; + return am.getAssessmentEntry(this, mySelf);//we want t } @Override diff --git a/src/main/java/org/olat/course/nodes/TACourseNode.java b/src/main/java/org/olat/course/nodes/TACourseNode.java index 7774e076a8c..f453e4436d5 100644 --- a/src/main/java/org/olat/course/nodes/TACourseNode.java +++ b/src/main/java/org/olat/course/nodes/TACourseNode.java @@ -503,7 +503,7 @@ public class TACourseNode extends GenericCourseNode implements PersistentAssessa public AssessmentEntry getUserAssessmentEntry(UserCourseEnvironment userCourseEnv) { AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity(); - return am.getAssessmentEntry(this, mySelf, null); + return am.getAssessmentEntry(this, mySelf); } /** diff --git a/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java b/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java index 236c96e6212..5761c3930bb 100644 --- a/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java +++ b/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java @@ -68,7 +68,7 @@ final class PreviewAssessmentManager extends BasicManager implements AssessmentM } @Override - public AssessmentEntry getAssessmentEntry(CourseNode courseNode, Identity assessedIdentity, String referenceSoftKey) { + public AssessmentEntry getAssessmentEntry(CourseNode courseNode, Identity assessedIdentity) { return null; } diff --git a/src/main/java/org/olat/modules/assessment/AssessmentEntry.java b/src/main/java/org/olat/modules/assessment/AssessmentEntry.java index 0b04b0802a9..63b3cc86178 100644 --- a/src/main/java/org/olat/modules/assessment/AssessmentEntry.java +++ b/src/main/java/org/olat/modules/assessment/AssessmentEntry.java @@ -92,6 +92,8 @@ public interface AssessmentEntry extends AssessmentEntryLight { */ public RepositoryEntry getReferenceEntry(); + public void setReferenceEntry(RepositoryEntry entry); + /** * @return The unique identifier for anonymous user (guest) */ diff --git a/src/main/java/org/olat/modules/assessment/AssessmentService.java b/src/main/java/org/olat/modules/assessment/AssessmentService.java index b31f70da7e2..c63a8518dc2 100644 --- a/src/main/java/org/olat/modules/assessment/AssessmentService.java +++ b/src/main/java/org/olat/modules/assessment/AssessmentService.java @@ -60,17 +60,14 @@ public interface AssessmentService { public AssessmentEntry getOrCreateAssessmentEntry(Identity assessedIdentity, String anonymousIdentifier, RepositoryEntry entry, String subIdent, RepositoryEntry referenceEntry); - public AssessmentEntry loadAssessmentEntry(Identity assessedIdentity, RepositoryEntry entry, String subIdent); - /** - * The search by the reference soft key is set not is null if the value is null. + * * @param assessedIdentity * @param entry * @param subIdent - * @param referenceSoftKey * @return */ - public AssessmentEntry loadAssessmentEntry(Identity assessedIdentity, RepositoryEntry entry, String subIdent, String referenceSoftKey); + public AssessmentEntry loadAssessmentEntry(Identity assessedIdentity, RepositoryEntry entry, String subIdent); /** * diff --git a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java index 12796aba036..27e497a7dd7 100644 --- a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java +++ b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java @@ -127,26 +127,16 @@ public class AssessmentEntryDAO { return entries.isEmpty() ? null : entries.get(0); } - public AssessmentEntry loadAssessmentEntry(IdentityRef assessedIdentity, RepositoryEntryRef entry, String subIdent, String referenceSoftKey) { + public AssessmentEntry loadAssessmentEntry(IdentityRef assessedIdentity, RepositoryEntryRef entry, String subIdent) { StringBuilder sb = new StringBuilder(); sb.append("select data from assessmententry data"); - if(referenceSoftKey != null) { - sb.append(" inner join data.referenceEntry referenceEntry"); - } - sb.append(" where data.repositoryEntry.key=:repositoryEntryKey and data.identity.key=:identityKey"); if(subIdent != null) { sb.append(" and data.subIdent=:subIdent"); } else { sb.append(" and data.subIdent is null"); } - - if(referenceSoftKey != null) { - sb.append(" and referenceEntry.softkey=:softkey"); - } else { - sb.append(" and data.referenceEntry is null"); - } TypedQuery<AssessmentEntry> query = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), AssessmentEntry.class) @@ -155,9 +145,6 @@ public class AssessmentEntryDAO { if(subIdent != null) { query.setParameter("subIdent", subIdent); } - if(referenceSoftKey != null) { - query.setParameter("softkey", referenceSoftKey); - } List<AssessmentEntry> entries = query.getResultList(); return entries.isEmpty() ? null : entries.get(0); } diff --git a/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java b/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java index 90b7ca288b9..c2c654dd74e 100644 --- a/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java +++ b/src/main/java/org/olat/modules/assessment/manager/AssessmentServiceImpl.java @@ -71,14 +71,6 @@ public class AssessmentServiceImpl implements AssessmentService { return assessmentEntryDao.loadAssessmentEntry(assessedIdentity, null, entry, subIdent); } - @Override - public AssessmentEntry loadAssessmentEntry(Identity assessedIdentity, RepositoryEntry entry, String subIdent, String referenceSoftKey) { - if(assessedIdentity == null || entry == null) return null; - return assessmentEntryDao.loadAssessmentEntry(assessedIdentity, entry, subIdent, referenceSoftKey); - } - - - @Override public AssessmentEntry loadAssessmentEntry(Identity assessedIdentity, RepositoryEntryRef entry, String subIdent, RepositoryEntryRef referenceEntry) { if(assessedIdentity == null || entry == null || referenceEntry == null) return null; diff --git a/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java b/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java index d86d6fc190c..91d90694fa4 100644 --- a/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java +++ b/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java @@ -108,7 +108,7 @@ public class AssessmentEntryImpl implements Persistable, ModifiedInfo, CreateInf private String subIdent; @ManyToOne(targetEntity=RepositoryEntry.class,fetch=FetchType.LAZY,optional=true) - @JoinColumn(name="fk_reference_entry", nullable=true, insertable=true, updatable=false) + @JoinColumn(name="fk_reference_entry", nullable=true, insertable=true, updatable=true) private RepositoryEntry referenceEntry; @Column(name="a_anon_identifier", nullable=true, insertable=true, updatable=false) diff --git a/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java b/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java index 8991294167e..a629588bc6c 100644 --- a/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java +++ b/src/test/java/org/olat/modules/assessment/manager/AssessmentEntryDAOTest.java @@ -148,24 +148,6 @@ public class AssessmentEntryDAOTest extends OlatTestCase { Assert.assertEquals(subIdent, reloadedAssessment.getSubIdent()); } - @Test - public void loadAssessmentEntry_withSoftkey() { - Identity assessedIdentity = JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-4"); - RepositoryEntry entry = JunitTestHelper.createAndPersistRepositoryEntry(); - String subIdent = UUID.randomUUID().toString(); - AssessmentEntry nodeAssessment = assessmentEntryDao - .createAssessmentEntry(assessedIdentity, null, entry, subIdent, entry); - dbInstance.commitAndCloseSession(); - - AssessmentEntry reloadedAssessment = assessmentEntryDao - .loadAssessmentEntry(assessedIdentity, entry, subIdent, entry.getSoftkey()); - Assert.assertEquals(nodeAssessment.getKey(), reloadedAssessment.getKey()); - Assert.assertEquals(nodeAssessment, reloadedAssessment); - Assert.assertEquals(assessedIdentity, reloadedAssessment.getIdentity()); - Assert.assertEquals(entry, reloadedAssessment.getRepositoryEntry()); - Assert.assertEquals(subIdent, reloadedAssessment.getSubIdent()); - } - @Test public void loadAssessmentEntry_specificTest() { Identity assessedIdentity = JunitTestHelper.createAndPersistIdentityAsRndUser("as-node-5"); -- GitLab