From 021899a5048e6bbff7b2bea53c021d3cc3c99154 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 11 Sep 2014 09:33:28 +0200 Subject: [PATCH] OO-1192: don't revalidate already validated import text, add commit and close session in different place of the bulk import --- .../org/olat/admin/user/imp/ImportStep00.java | 17 +++++++++++++++-- .../admin/user/imp/UserImportController.java | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/olat/admin/user/imp/ImportStep00.java b/src/main/java/org/olat/admin/user/imp/ImportStep00.java index ac443826051..c340fc5d841 100644 --- a/src/main/java/org/olat/admin/user/imp/ImportStep00.java +++ b/src/main/java/org/olat/admin/user/imp/ImportStep00.java @@ -34,6 +34,7 @@ import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.olat.basesecurity.BaseSecurityManager; +import org.olat.core.commons.persistence.DBFactory; import org.olat.core.dispatcher.mapper.Mapper; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.ValidationError; @@ -129,6 +130,8 @@ class ImportStep00 extends BasicStep { @Override protected void formOK(UserRequest ureq) { + String inp = textAreaElement.getValue(); + addToRunContext("inp", inp); addToRunContext("idents", idents); addToRunContext("newIdents", newIdents); addToRunContext("updateIdents", updateIdents); @@ -144,7 +147,13 @@ class ImportStep00 extends BasicStep { @Override protected boolean validateFormLogic(UserRequest ureq) { + Object validatedInp = getFromRunContext("inp"); String inp = textAreaElement.getValue(); + if(validatedInp != null && validatedInp.equals(inp)) { + //already validated + return true; + } + String defaultlang = I18nModule.getDefaultLocale().toString(); List<String> importedEmails = new ArrayList<String>(); @@ -167,6 +176,11 @@ class ImportStep00 extends BasicStep { Set<String> languages = I18nModule.getEnabledLanguageKeys(); String[] lines = inp.split("\r?\n"); for (int i = 0; i < lines.length; i++) { + if(i % 25 == 0) { + DBFactory.getInstance().commitAndCloseSession(); + } + + String line = lines[i]; if (line.equals("")) continue; @@ -441,5 +455,4 @@ class ImportStep00 extends BasicStep { } } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/admin/user/imp/UserImportController.java b/src/main/java/org/olat/admin/user/imp/UserImportController.java index bae0dfd4a27..6c665877a82 100644 --- a/src/main/java/org/olat/admin/user/imp/UserImportController.java +++ b/src/main/java/org/olat/admin/user/imp/UserImportController.java @@ -36,6 +36,7 @@ import org.olat.basesecurity.AuthHelper; import org.olat.basesecurity.Authentication; import org.olat.basesecurity.BaseSecurity; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; @@ -87,7 +88,8 @@ public class UserImportController extends BasicController { private final BaseSecurity securityManager; private final OLATAuthManager olatAuthManager; private final BusinessGroupService businessGroupService; - private final UserManager um ; + private final UserManager um; + private final DB dbInstance; /** * @param ureq @@ -98,6 +100,7 @@ public class UserImportController extends BasicController { public UserImportController(UserRequest ureq, WindowControl wControl, boolean canCreateOLATPassword) { super(ureq, wControl); um = UserManager.getInstance(); + dbInstance = CoreSpringFactory.getImpl(DB.class); securityManager = CoreSpringFactory.getImpl(BaseSecurity.class); olatAuthManager = CoreSpringFactory.getImpl(OLATAuthManager.class); businessGroupService = CoreSpringFactory.getImpl(BusinessGroupService.class); @@ -241,11 +244,17 @@ public class UserImportController extends BasicController { try { if (runContext.containsKey("validImport") && ((Boolean) runContext.get("validImport")).booleanValue()) { // create new users and persist + int count = 0; + @SuppressWarnings("unchecked") List<TransientIdentity> newIdents = (List<TransientIdentity>) runContext.get("newIdents"); for (TransientIdentity newIdent:newIdents) { doCreateAndPersistIdentity(newIdent, report); + if(++count % 10 == 0) { + dbInstance.commitAndCloseSession(); + } } + dbInstance.commitAndCloseSession(); Boolean updateUsers = (Boolean)runContext.get("updateUsers"); Boolean updatePasswords = (Boolean)runContext.get("updatePasswords"); @@ -253,7 +262,11 @@ public class UserImportController extends BasicController { List<UpdateIdentity> updateIdents = (List<UpdateIdentity>) runContext.get("updateIdents"); for (UpdateIdentity updateIdent:updateIdents) { doUpdateIdentity(updateIdent, updateUsers, updatePasswords, report); + if(++count % 10 == 0) { + dbInstance.commitAndCloseSession(); + } } + dbInstance.commitAndCloseSession(); @SuppressWarnings("unchecked") List<Long> ownGroups = (List<Long>) runContext.get("ownerGroups"); -- GitLab