diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java index 8726b8259cf14d151559077b8a56959402a53c76..ac3e13dab442ded20e22c19aa03326ade0c188d0 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java @@ -31,6 +31,7 @@ import org.olat.basesecurity.BaseSecurityModule; import org.olat.basesecurity.Group; import org.olat.basesecurity.IdentityRef; import org.olat.basesecurity.model.IdentityRefImpl; +import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; @@ -131,9 +132,11 @@ public class IdentityListCourseNodeController extends FormBasicController private final List<UserPropertyHandler> userPropertyHandlers; protected final AssessmentToolSecurityCallback assessmentCallback; - private Link nextLink, previousLink; + private Link nextLink; + private Link previousLink; protected FlexiTableElement tableEl; - private FormLink bulkDoneButton, bulkVisibleButton; + private FormLink bulkDoneButton; + private FormLink bulkVisibleButton; protected final TooledStackedPanel stackPanel; private final AssessmentToolContainer toolContainer; protected IdentityListCourseNodeTableModel usersTableModel; @@ -145,6 +148,8 @@ public class IdentityListCourseNodeController extends FormBasicController private CloseableCalloutWindowController toolsCalloutCtrl; private ConfirmUserVisibilityController changeUserVisibilityCtrl; + @Autowired + private DB dbInstance; @Autowired private UserManager userManager; @Autowired @@ -848,6 +853,7 @@ public class IdentityListCourseNodeController extends FormBasicController scoreEval.getAssessmentStatus(), visibility, scoreEval.getFullyAssessed(), scoreEval.getCurrentRunCompletion(), scoreEval.getCurrentRunStatus(), scoreEval.getAssessmentID()); assessableCourseNode.updateUserScoreEvaluation(doneEval, assessedUserCourseEnv, getIdentity(), false, Role.coach); + dbInstance.commitAndCloseSession(); } loadModel(ureq); } @@ -870,6 +876,7 @@ public class IdentityListCourseNodeController extends FormBasicController for(AssessedIdentityElementRow row:rows) { Identity assessedIdentity = securityManager.loadIdentityByKey(row.getIdentityKey()); doSetDone(assessedIdentity, assessableCourseNode, course); + dbInstance.commitAndCloseSession(); } loadModel(ureq); } diff --git a/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java b/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java index 4e1a9654dc226b5923136045a14c5176037c77dd..66f461ab479e73a09f6442e7dfc746bf29433cdd 100644 --- a/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java +++ b/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java @@ -698,7 +698,7 @@ public class AssessmentTestSessionDAO { sb.append(" and membership.role='").append(GroupRoles.participant.name()).append("'"); } sb.append(" )"); - } else if(searchParams.getLimitToIdentities() != null) { + } else if(searchParams.getLimitToIdentities() != null && !searchParams.getLimitToIdentities().isEmpty()) { sb.append(" testSession.identity.key in (select membership.identity.key from bgroupmember as membership, repoentrytogroup as rel") .append(" where rel.entry.key=:repoEntryKey and rel.group.key=membership.group.key and membership.identity.key in (:limitIdentityKeys)") .append(" and membership.role='").append(GroupRoles.participant.name()).append("'") diff --git a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java index 73ff2bf9432f32bfafddac89c175098ad7c50721..ba27c05f3356150ad9aae01d09ae149655999f23 100644 --- a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java +++ b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java @@ -474,11 +474,8 @@ public class QTI21ArchiveFormat { AssessmentItemSession itemSession = response.getAssessmentItemSession(); sessionResponses.addResponse(itemSession, response); } - writeDataRow(i + 1, sessionResponses, exportSheet, workbook); - - if(i % 25 == 0) { - DBFactory.getInstance().commitAndCloseSession(); - } + writeDataRow(i + 1, sessionResponses, exportSheet, workbook); + DBFactory.getInstance().commitAndCloseSession(); } } diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java index ad50388337054ae5425d1c398de5f8a7838fb2d9..aad336ceadc6c3015d82ba51f0c23c25ad06e38d 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21ResetDataController.java @@ -31,6 +31,7 @@ import java.util.zip.ZipOutputStream; import org.olat.basesecurity.GroupRoles; import org.olat.core.commons.modules.bc.FolderConfig; +import org.olat.core.commons.persistence.DB; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; @@ -86,6 +87,8 @@ public class QTI21ResetDataController extends FormBasicController { private CourseEnvironment courseEnv; private RepositoryEntry assessedEntry; + @Autowired + private DB dbInstance; @Autowired private QTI21Service qtiService; @Autowired @@ -209,6 +212,7 @@ public class QTI21ResetDataController extends FormBasicController { UserCourseEnvironment uce = new UserCourseEnvironmentImpl(ienv, courseEnv); testCourseNode.updateUserScoreEvaluation(scoreEval, uce, getIdentity(), false, Role.coach); testCourseNode.updateCurrentCompletion(uce, getIdentity(), null, AssessmentRunStatus.notStarted, Role.coach); + dbInstance.commitAndCloseSession(); } } else if(assessedEntry != null) { archiveData(assessedEntry);