diff --git a/src/main/java/org/olat/course/assessment/AssessmentModeManager.java b/src/main/java/org/olat/course/assessment/AssessmentModeManager.java index d9df8ceb9c8dae6157e83f01f4ecc191d771cb55..381fd2c49dd63845534746d3e1a23450e8c69902 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentModeManager.java +++ b/src/main/java/org/olat/course/assessment/AssessmentModeManager.java @@ -28,7 +28,6 @@ import javax.servlet.http.HttpServletRequest; import org.olat.basesecurity.IdentityRef; import org.olat.course.assessment.model.SearchAssessmentModeParams; import org.olat.group.BusinessGroup; -import org.olat.group.BusinessGroupRef; import org.olat.group.area.BGArea; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryRef; @@ -52,7 +51,6 @@ public interface AssessmentModeManager { public AssessmentModeToGroup createAssessmentModeToGroup(AssessmentMode mode, BusinessGroup group); - public void deleteAssessmentModesToGroup(BusinessGroupRef group); public AssessmentModeToArea createAssessmentModeToArea(AssessmentMode mode, BGArea area); @@ -74,21 +72,6 @@ public interface AssessmentModeManager { */ public void delete(AssessmentMode assessmentMode); - /** - * Delete all assessment modes of a course. - * - * @param entry - */ - public void delete(RepositoryEntryRef entry); - - /** - * Delete the relations between assessment mode and group for the specified business group and course. - * @param businessGroup - * @param entry - */ - public void delete(BusinessGroupRef businessGroup, RepositoryEntryRef entry); - - public AssessmentMode getAssessmentModeById(Long key); /** diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeDAO.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..b5a44abf23dfe9f2947acd0b9a2881b9a268e405 --- /dev/null +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeDAO.java @@ -0,0 +1,257 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.assessment.manager; + +import static org.olat.core.commons.persistence.PersistenceHelper.appendAnd; +import static org.olat.core.commons.persistence.PersistenceHelper.appendFuzzyLike; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.List; + +import javax.persistence.TemporalType; +import javax.persistence.TypedQuery; + +import org.olat.basesecurity.GroupRoles; +import org.olat.basesecurity.IdentityRef; +import org.olat.core.commons.persistence.DB; +import org.olat.core.commons.persistence.PersistenceHelper; +import org.olat.core.util.StringHelper; +import org.olat.course.assessment.AssessmentMode; +import org.olat.course.assessment.AssessmentMode.Status; +import org.olat.course.assessment.model.AssessmentModeImpl; +import org.olat.course.assessment.model.SearchAssessmentModeParams; +import org.olat.group.BusinessGroupImpl; +import org.olat.group.BusinessGroupRef; +import org.olat.group.area.BGtoAreaRelationImpl; +import org.olat.repository.RepositoryEntryRef; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * + * Initial date: 20.04.2015<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +@Service +public class AssessmentModeDAO { + + @Autowired + private DB dbInstance; + + public AssessmentMode getAssessmentModeById(Long key) { + List<AssessmentMode> modes = dbInstance.getCurrentEntityManager() + .createNamedQuery("assessmentModeById", AssessmentMode.class) + .setParameter("modeKey", key) + .getResultList(); + + return modes == null || modes.isEmpty() ? null : modes.get(0); + } + + public List<AssessmentMode> findAssessmentMode(SearchAssessmentModeParams params) { + StringBuilder sb = new StringBuilder(); + sb.append("select mode from courseassessmentmode mode") + .append(" inner join fetch mode.repositoryEntry v") + .append(" inner join fetch v.olatResource res"); + + boolean where = false; + + Date date = params.getDate(); + if(date != null) { + where = appendAnd(sb, where); + sb.append(":date between mode.beginWithLeadTime and mode.endWithFollowupTime"); + } + + String name = params.getName(); + if(StringHelper.containsNonWhitespace(name)) { + name = PersistenceHelper.makeFuzzyQueryString(name); + where = appendAnd(sb, where); + sb.append("("); + appendFuzzyLike(sb, "v.displayname", "name", dbInstance.getDbVendor()); + sb.append(" or "); + appendFuzzyLike(sb, "mode.name", "name", dbInstance.getDbVendor()); + sb.append(")"); + } + + Long id = null; + String refs = null; + String fuzzyRefs = null; + if(StringHelper.containsNonWhitespace(params.getIdAndRefs())) { + refs = params.getIdAndRefs(); + fuzzyRefs = PersistenceHelper.makeFuzzyQueryString(refs); + where = appendAnd(sb, where); + sb.append(" (v.externalId=:ref or "); + PersistenceHelper.appendFuzzyLike(sb, "v.externalRef", "fuzzyRefs", dbInstance.getDbVendor()); + sb.append(" or v.softkey=:ref"); + if(StringHelper.isLong(refs)) { + try { + id = Long.parseLong(refs); + sb.append(" or v.key=:vKey or res.resId=:vKey"); + } catch (NumberFormatException e) { + // + } + } + sb.append(")"); + } + + sb.append(" order by mode.beginWithLeadTime desc "); + + TypedQuery<AssessmentMode> query = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), AssessmentMode.class); + if(StringHelper.containsNonWhitespace(params.getName())) { + query.setParameter("name", name); + } + if(id != null) { + query.setParameter("vKey", id); + } + if(refs != null) { + query.setParameter("ref", refs); + } + if(fuzzyRefs != null) { + query.setParameter("fuzzyRefs", fuzzyRefs); + } + if(date != null) { + query.setParameter("date", date, TemporalType.TIMESTAMP); + } + return query.getResultList(); + } + + public List<AssessmentMode> getAssessmentModeFor(RepositoryEntryRef entry) { + return dbInstance.getCurrentEntityManager() + .createNamedQuery("assessmentModeByRepoEntry", AssessmentMode.class) + .setParameter("entryKey", entry.getKey()) + .getResultList(); + } + + public List<AssessmentMode> getAssessmentModes(Date now) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.MILLISECOND, 0); + cal.set(Calendar.SECOND, 0); + + StringBuilder sb = new StringBuilder(); + sb.append("select mode from courseassessmentmode mode where ") + .append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now and mode.manualBeginEnd=false)") + .append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','") + .append(Status.assessment.name()).append("','").append(Status.followup.name()).append("')"); + + return dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), AssessmentMode.class) + .setParameter("now", now) + .getResultList(); + } + + public boolean isInAssessmentMode(RepositoryEntryRef entry, Date date) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.MILLISECOND, 0); + cal.set(Calendar.SECOND, 0); + + StringBuilder sb = new StringBuilder(); + sb.append("select count(mode) from courseassessmentmode mode where ") + .append(" mode.repositoryEntry.key=:repoKey and (") + .append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now and mode.manualBeginEnd=false)") + .append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','") + .append(Status.assessment.name()).append("','").append(Status.followup.name()).append("'))"); + + List<Number> count = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), Number.class) + .setParameter("now", date) + .setParameter("repoKey", entry.getKey()) + .getResultList(); + return count != null && count.size() > 0 && count.get(0).intValue() > 0; + } + + protected List<AssessmentMode> loadAssessmentModeFor(IdentityRef identity, List<AssessmentMode> currentModes) { + StringBuilder sb = new StringBuilder(1500); + sb.append("select mode from courseassessmentmode mode ") + .append(" inner join fetch mode.repositoryEntry entry") + .append(" left join mode.groups as modeToGroup") + .append(" left join mode.areas as modeToArea") + .append(" where mode.key in (:modeKeys)") + .append(" and ((mode.targetAudienceString in ('").append(AssessmentMode.Target.courseAndGroups.name()).append("','").append(AssessmentMode.Target.groups.name()).append("')") + .append(" and (exists (select businessGroup from ").append(BusinessGroupImpl.class.getName()).append(" as businessGroup, bgroupmember as membership") + .append(" where modeToGroup.businessGroup=businessGroup and membership.group=businessGroup.baseGroup and membership.identity.key=:identityKey") + .append(" and (membership.role='").append(GroupRoles.participant.name()).append("' or ") + .append(" (mode.applySettingsForCoach=true and membership.role='").append(GroupRoles.coach.name()).append("'))") + .append(" ) or exists (select areaToGroup from ").append(BGtoAreaRelationImpl.class.getName()).append(" as areaToGroup,").append(BusinessGroupImpl.class.getName()).append(" as businessGroupArea, bgroupmember as membership") + .append(" where modeToArea.area=areaToGroup.groupArea and areaToGroup.businessGroup=businessGroupArea and membership.group=businessGroupArea.baseGroup and membership.identity.key=:identityKey") + .append(" and (membership.role='").append(GroupRoles.participant.name()).append("' or ") + .append(" (mode.applySettingsForCoach=true and membership.role='").append(GroupRoles.coach.name()).append("'))") + .append(" ))) or (mode.targetAudienceString in ('").append(AssessmentMode.Target.courseAndGroups.name()).append("','").append(AssessmentMode.Target.course.name()).append("')") + .append(" and exists (select rel from repoentrytogroup as rel, bgroupmember as membership ") + .append(" where mode.repositoryEntry=rel.entry and membership.group=rel.group and rel.defaultGroup=true and membership.identity.key=:identityKey") + .append(" and (membership.role='").append(GroupRoles.participant.name()).append("' or ") + .append(" (mode.applySettingsForCoach=true and membership.role='").append(GroupRoles.coach.name()).append("'))") + .append(" ))") + .append(" )"); + + List<Long> modeKeys = new ArrayList<>(currentModes.size()); + for(AssessmentMode mode:currentModes) { + modeKeys.add(mode.getKey()); + } + List<AssessmentMode> modeList = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), AssessmentMode.class) + .setParameter("identityKey", identity.getKey()) + .setParameter("modeKeys", modeKeys) + .getResultList(); + //quicker than distinct + return new ArrayList<AssessmentMode>(new HashSet<AssessmentMode>(modeList)); + } + + public void delete(AssessmentMode assessmentMode) { + AssessmentModeImpl refMode = dbInstance.getCurrentEntityManager() + .getReference(AssessmentModeImpl.class, assessmentMode.getKey()); + dbInstance.getCurrentEntityManager().remove(refMode); + } + + /** + * Delete all assessment modes of a course. + * + * @param entry The course + */ + public void delete(RepositoryEntryRef entry) { + for(AssessmentMode mode: getAssessmentModeFor(entry)) { + delete(mode); + } + } + + public void deleteAssessmentModesToGroup(BusinessGroupRef businessGroup) { + String q = "delete from courseassessmentmodetogroup as modegrrel where modegrrel.businessGroup.key=:groupKey"; + dbInstance.getCurrentEntityManager().createQuery(q) + .setParameter("groupKey", businessGroup.getKey()) + .executeUpdate(); + } + + /** + * Delete the relations between assessment mode and group for the specified business group and course. + * @param businessGroup + * @param entry + */ + public void delete(BusinessGroupRef businessGroup, RepositoryEntryRef entry) { + String q = "delete from courseassessmentmodetogroup as modegrrel where modegrrel.businessGroup.key=:groupKey and modegrrel.assessmentMode.key in (select amode.key from courseassessmentmode amode where amode.repositoryEntry.key=:repoKey)"; + dbInstance.getCurrentEntityManager().createQuery(q) + .setParameter("groupKey", businessGroup.getKey()) + .setParameter("repoKey", entry.getKey()) + .executeUpdate(); + } + +} diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java index 1e5b7ba890e20f2ce20bdd7b78aaa30b570c67d5..ed47a6e2d76831e39299718e7a30ee06e61b677e 100644 --- a/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeManagerImpl.java @@ -19,9 +19,6 @@ */ package org.olat.course.assessment.manager; -import static org.olat.core.commons.persistence.PersistenceHelper.appendAnd; -import static org.olat.core.commons.persistence.PersistenceHelper.appendFuzzyLike; - import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -31,14 +28,11 @@ import java.util.List; import java.util.Set; import java.util.StringTokenizer; -import javax.persistence.TemporalType; -import javax.persistence.TypedQuery; import javax.servlet.http.HttpServletRequest; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.IdentityRef; import org.olat.core.commons.persistence.DB; -import org.olat.core.commons.persistence.PersistenceHelper; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.Encoder; @@ -55,11 +49,8 @@ import org.olat.course.assessment.model.AssessmentModeToAreaImpl; import org.olat.course.assessment.model.AssessmentModeToGroupImpl; import org.olat.course.assessment.model.SearchAssessmentModeParams; import org.olat.group.BusinessGroup; -import org.olat.group.BusinessGroupImpl; -import org.olat.group.BusinessGroupRef; import org.olat.group.area.BGArea; import org.olat.group.area.BGAreaManager; -import org.olat.group.area.BGtoAreaRelationImpl; import org.olat.group.manager.BusinessGroupRelationDAO; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryRef; @@ -84,6 +75,8 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { @Autowired private BGAreaManager areaMgr; @Autowired + private AssessmentModeDAO assessmentModeDao; + @Autowired private BusinessGroupRelationDAO businessGroupRelationDao; @Autowired private RepositoryEntryRelationDAO repositoryEntryRelationDao; @@ -172,103 +165,22 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { @Override public void delete(AssessmentMode assessmentMode) { - AssessmentModeImpl refMode = dbInstance.getCurrentEntityManager() - .getReference(AssessmentModeImpl.class, assessmentMode.getKey()); - dbInstance.getCurrentEntityManager().remove(refMode); - } - - @Override - public void delete(RepositoryEntryRef entry) { - for(AssessmentMode mode: getAssessmentModeFor(entry)) { - delete(mode); - } + assessmentModeDao.delete(assessmentMode); } @Override public AssessmentMode getAssessmentModeById(Long key) { - List<AssessmentMode> modes = dbInstance.getCurrentEntityManager() - .createNamedQuery("assessmentModeById", AssessmentMode.class) - .setParameter("modeKey", key) - .getResultList(); - - return modes == null || modes.isEmpty() ? null : modes.get(0); + return assessmentModeDao.getAssessmentModeById(key); } @Override public List<AssessmentMode> findAssessmentMode(SearchAssessmentModeParams params) { - StringBuilder sb = new StringBuilder(); - sb.append("select mode from courseassessmentmode mode") - .append(" inner join fetch mode.repositoryEntry v") - .append(" inner join fetch v.olatResource res"); - - boolean where = false; - - Date date = params.getDate(); - if(date != null) { - where = appendAnd(sb, where); - sb.append(":date between mode.beginWithLeadTime and mode.endWithFollowupTime"); - } - - String name = params.getName(); - if(StringHelper.containsNonWhitespace(name)) { - name = PersistenceHelper.makeFuzzyQueryString(name); - where = appendAnd(sb, where); - sb.append("("); - appendFuzzyLike(sb, "v.displayname", "name", dbInstance.getDbVendor()); - sb.append(" or "); - appendFuzzyLike(sb, "mode.name", "name", dbInstance.getDbVendor()); - sb.append(")"); - } - - Long id = null; - String refs = null; - String fuzzyRefs = null; - if(StringHelper.containsNonWhitespace(params.getIdAndRefs())) { - refs = params.getIdAndRefs(); - fuzzyRefs = PersistenceHelper.makeFuzzyQueryString(refs); - where = appendAnd(sb, where); - sb.append(" (v.externalId=:ref or "); - PersistenceHelper.appendFuzzyLike(sb, "v.externalRef", "fuzzyRefs", dbInstance.getDbVendor()); - sb.append(" or v.softkey=:ref"); - if(StringHelper.isLong(refs)) { - try { - id = Long.parseLong(refs); - sb.append(" or v.key=:vKey or res.resId=:vKey"); - } catch (NumberFormatException e) { - // - } - } - sb.append(")"); - } - - sb.append(" order by mode.beginWithLeadTime desc "); - - TypedQuery<AssessmentMode> query = dbInstance.getCurrentEntityManager() - .createQuery(sb.toString(), AssessmentMode.class); - if(StringHelper.containsNonWhitespace(params.getName())) { - query.setParameter("name", name); - } - if(id != null) { - query.setParameter("vKey", id); - } - if(refs != null) { - query.setParameter("ref", refs); - } - if(fuzzyRefs != null) { - query.setParameter("fuzzyRefs", fuzzyRefs); - } - if(date != null) { - query.setParameter("date", date, TemporalType.TIMESTAMP); - } - return query.getResultList(); + return assessmentModeDao.findAssessmentMode(params); } @Override public List<AssessmentMode> getAssessmentModeFor(RepositoryEntryRef entry) { - return dbInstance.getCurrentEntityManager() - .createNamedQuery("assessmentModeByRepoEntry", AssessmentMode.class) - .setParameter("entryKey", entry.getKey()) - .getResultList(); + return assessmentModeDao.getAssessmentModeFor(entry); } @Override @@ -277,47 +189,10 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { List<AssessmentMode> myModes = null; if(currentModes.size() > 0) { //check permissions, groups, areas, course - myModes = loadAssessmentModeFor(identity, currentModes); + myModes = assessmentModeDao.loadAssessmentModeFor(identity, currentModes); } return myModes == null ? Collections.<AssessmentMode>emptyList() : myModes; } - - private List<AssessmentMode> loadAssessmentModeFor(IdentityRef identity, List<AssessmentMode> currentModes) { - StringBuilder sb = new StringBuilder(1500); - sb.append("select mode from courseassessmentmode mode ") - .append(" inner join fetch mode.repositoryEntry entry") - .append(" left join mode.groups as modeToGroup") - .append(" left join mode.areas as modeToArea") - .append(" where mode.key in (:modeKeys)") - .append(" and ((mode.targetAudienceString in ('").append(AssessmentMode.Target.courseAndGroups.name()).append("','").append(AssessmentMode.Target.groups.name()).append("')") - .append(" and (exists (select businessGroup from ").append(BusinessGroupImpl.class.getName()).append(" as businessGroup, bgroupmember as membership") - .append(" where modeToGroup.businessGroup=businessGroup and membership.group=businessGroup.baseGroup and membership.identity.key=:identityKey") - .append(" and (membership.role='").append(GroupRoles.participant.name()).append("' or ") - .append(" (mode.applySettingsForCoach=true and membership.role='").append(GroupRoles.coach.name()).append("'))") - .append(" ) or exists (select areaToGroup from ").append(BGtoAreaRelationImpl.class.getName()).append(" as areaToGroup,").append(BusinessGroupImpl.class.getName()).append(" as businessGroupArea, bgroupmember as membership") - .append(" where modeToArea.area=areaToGroup.groupArea and areaToGroup.businessGroup=businessGroupArea and membership.group=businessGroupArea.baseGroup and membership.identity.key=:identityKey") - .append(" and (membership.role='").append(GroupRoles.participant.name()).append("' or ") - .append(" (mode.applySettingsForCoach=true and membership.role='").append(GroupRoles.coach.name()).append("'))") - .append(" ))) or (mode.targetAudienceString in ('").append(AssessmentMode.Target.courseAndGroups.name()).append("','").append(AssessmentMode.Target.course.name()).append("')") - .append(" and exists (select rel from repoentrytogroup as rel, bgroupmember as membership ") - .append(" where mode.repositoryEntry=rel.entry and membership.group=rel.group and rel.defaultGroup=true and membership.identity.key=:identityKey") - .append(" and (membership.role='").append(GroupRoles.participant.name()).append("' or ") - .append(" (mode.applySettingsForCoach=true and membership.role='").append(GroupRoles.coach.name()).append("'))") - .append(" ))") - .append(" )"); - - List<Long> modeKeys = new ArrayList<>(currentModes.size()); - for(AssessmentMode mode:currentModes) { - modeKeys.add(mode.getKey()); - } - List<AssessmentMode> modeList = dbInstance.getCurrentEntityManager() - .createQuery(sb.toString(), AssessmentMode.class) - .setParameter("identityKey", identity.getKey()) - .setParameter("modeKeys", modeKeys) - .getResultList(); - //quicker than distinct - return new ArrayList<AssessmentMode>(new HashSet<AssessmentMode>(modeList)); - } @Override public Set<Long> getAssessedIdentityKeys(AssessmentMode assessmentMode) { @@ -363,41 +238,12 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { @Override public List<AssessmentMode> getAssessmentModes(Date now) { - Calendar cal = Calendar.getInstance(); - cal.set(Calendar.MILLISECOND, 0); - cal.set(Calendar.SECOND, 0); - - StringBuilder sb = new StringBuilder(); - sb.append("select mode from courseassessmentmode mode where ") - .append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now and mode.manualBeginEnd=false)") - .append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','") - .append(Status.assessment.name()).append("','").append(Status.followup.name()).append("')"); - - return dbInstance.getCurrentEntityManager() - .createQuery(sb.toString(), AssessmentMode.class) - .setParameter("now", now) - .getResultList(); + return assessmentModeDao.getAssessmentModes(now); } @Override public boolean isInAssessmentMode(RepositoryEntryRef entry, Date date) { - Calendar cal = Calendar.getInstance(); - cal.set(Calendar.MILLISECOND, 0); - cal.set(Calendar.SECOND, 0); - - StringBuilder sb = new StringBuilder(); - sb.append("select count(mode) from courseassessmentmode mode where ") - .append(" mode.repositoryEntry.key=:repoKey and (") - .append(" (mode.beginWithLeadTime<=:now and mode.endWithFollowupTime>=:now and mode.manualBeginEnd=false)") - .append(" or mode.statusString in ('").append(Status.leadtime.name()).append("','") - .append(Status.assessment.name()).append("','").append(Status.followup.name()).append("'))"); - - List<Number> count = dbInstance.getCurrentEntityManager() - .createQuery(sb.toString(), Number.class) - .setParameter("now", date) - .setParameter("repoKey", entry.getKey()) - .getResultList(); - return count != null && count.size() > 0 && count.get(0).intValue() > 0; + return assessmentModeDao.isInAssessmentMode(entry, date); } @Override @@ -409,23 +255,6 @@ public class AssessmentModeManagerImpl implements AssessmentModeManager { return modeToGroup; } - @Override - public void deleteAssessmentModesToGroup(BusinessGroupRef businessGroup) { - String q = "delete from courseassessmentmodetogroup as modegrrel where modegrrel.businessGroup.key=:groupKey"; - dbInstance.getCurrentEntityManager().createQuery(q) - .setParameter("groupKey", businessGroup.getKey()) - .executeUpdate(); - } - - @Override - public void delete(BusinessGroupRef businessGroup, RepositoryEntryRef entry) { - String q = "delete from courseassessmentmodetogroup as modegrrel where modegrrel.businessGroup.key=:groupKey and modegrrel.assessmentMode.key in (select amode.key from courseassessmentmode amode where amode.repositoryEntry.key=:repoKey)"; - dbInstance.getCurrentEntityManager().createQuery(q) - .setParameter("groupKey", businessGroup.getKey()) - .setParameter("repoKey", entry.getKey()) - .executeUpdate(); - } - @Override public AssessmentModeToArea createAssessmentModeToArea(AssessmentMode mode, BGArea area) { AssessmentModeToAreaImpl modeToArea = new AssessmentModeToAreaImpl(); diff --git a/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java b/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java index e009a6411797a3c10497290e5b5735c8912d6dfd..ffed87984854c147f7f43edc77162ec690382289 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupRelationDAO.java @@ -40,7 +40,7 @@ import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.PersistenceHelper; import org.olat.core.id.Identity; import org.olat.core.util.StringHelper; -import org.olat.course.assessment.AssessmentModeManager; +import org.olat.course.assessment.manager.AssessmentModeDAO; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupImpl; import org.olat.group.BusinessGroupRef; @@ -67,7 +67,7 @@ public class BusinessGroupRelationDAO { @Autowired private GroupDAO groupDao; @Autowired - private AssessmentModeManager assessmentModeMgr; + private AssessmentModeDAO assessmentModeDao; @Autowired private RepositoryEntryRelationDAO repositoryEntryRelationDao; @@ -372,7 +372,7 @@ public class BusinessGroupRelationDAO { } public void deleteRelation(BusinessGroup group, RepositoryEntryRef entry) { - assessmentModeMgr.delete(group, entry); + assessmentModeDao.delete(group, entry); repositoryEntryRelationDao.removeRelation(group.getBaseGroup(), entry); } diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java index 59fcf59e3ab656025cb7f651b52c6c2dc4948569..26232e480a405ec8f7c8a8bdc8ed258da79d3026 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java @@ -68,7 +68,7 @@ import org.olat.core.util.mail.MailTemplate; import org.olat.core.util.mail.MailerResult; import org.olat.core.util.resource.OLATResourceableJustBeforeDeletedEvent; import org.olat.core.util.resource.OresHelper; -import org.olat.course.assessment.AssessmentModeManager; +import org.olat.course.assessment.manager.AssessmentModeDAO; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupAddResponse; import org.olat.group.BusinessGroupManagedFlag; @@ -148,7 +148,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD @Autowired private ContactDAO contactDao; @Autowired - private AssessmentModeManager assessmentModeMgr; + private AssessmentModeDAO assessmentModeDao; @Autowired private BusinessGroupRelationDAO businessGroupRelationDAO; @Autowired @@ -750,7 +750,7 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD areaManager.deleteBGtoAreaRelations(group); // 3) Delete the relations businessGroupRelationDAO.deleteRelationsToRepositoryEntry(group); - assessmentModeMgr.deleteAssessmentModesToGroup(group); + assessmentModeDao.deleteAssessmentModesToGroup(group); // 4) delete properties propertyManager.deleteProperties(null, group, null, null, null); propertyManager.deleteProperties(null, null, group, null, null); diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java index 8fea6e25bf641ba7e59b9216b5f91448bf5f9e3a..8aaa4288bb276117df47a5926fa6bb90bba0122f 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java +++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java @@ -52,7 +52,7 @@ import org.olat.core.util.vfs.LocalFolderImpl; import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSLeaf; -import org.olat.course.assessment.AssessmentModeManager; +import org.olat.course.assessment.manager.AssessmentModeDAO; import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.certificate.CertificatesManager; import org.olat.repository.ErrorList; @@ -117,7 +117,7 @@ public class RepositoryServiceImpl implements RepositoryService { @Autowired private UserCourseInformationsManager userCourseInformationsManager; @Autowired - private AssessmentModeManager assessmentModeMgr; + private AssessmentModeDAO assessmentModeDao; @Autowired private LifeFullIndexer lifeIndexer; @@ -309,7 +309,7 @@ public class RepositoryServiceImpl implements RepositoryService { // delete all catalog entries referencing deleted entry catalogManager.resourceableDeleted(entry); // delete assessment modes - assessmentModeMgr.delete(entry); + assessmentModeDao.delete(entry); //delete all policies securityManager.deletePolicies(resource);