From d3caa3da8418ae061edc78b69b8f1a18e24f1620 Mon Sep 17 00:00:00 2001
From: tekay <tom.kaesler@mni.thm.de>
Date: Sun, 14 Feb 2016 18:30:32 +0100
Subject: [PATCH] split up bulk save in a total of 4.

---
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java          | 8 ++++----
 .../arsnova/entities/transport/ImportExportSession.java   | 8 ++++++++
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 5b505a65f..ef13a43d5 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -2117,7 +2117,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 		List<Document> answers = new ArrayList<Document>();
 		// We can then push answers together with interposed questions in one large bulk request
 		List<Document> interposedQuestions = new ArrayList<Document>();
-		// Motds shouldn't be forgotten
+		// Motds shouldn't be forgotten, too
 		List<Document> motds = new ArrayList<Document>();
 		try {
 			// add session id to all questions and generate documents
@@ -2177,8 +2177,8 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 				motds.add(d);
 			}
 			List<Document> documents = new ArrayList<Document>(answers);
-			documents.addAll(interposedQuestions);
-			documents.addAll(motds);
+			database.bulkSaveDocuments(interposedQuestions.toArray(new Document[interposedQuestions.size()]));
+			database.bulkSaveDocuments(motds.toArray(new Document[motds.size()]));
 			database.bulkSaveDocuments(documents.toArray(new Document[documents.size()]));
 		} catch (IOException e) {
 			LOGGER.error("Could not import this session: {}", e.getMessage());
@@ -2186,7 +2186,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 			this.deleteSession(session);
 			return null;
 		}
-		return calculateSessionInfo(importSession, session);
+		return this.calculateSessionInfo(importSession, session);
 	}
 
 	@Override
diff --git a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
index 305ac0cf9..8a5bc310e 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
@@ -25,6 +25,7 @@ import de.thm.arsnova.entities.Motd;
 import de.thm.arsnova.entities.SessionInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.context.annotation.Import;
 
 import java.util.Date;
 import java.util.List;
@@ -48,6 +49,8 @@ public class ImportExportSession {
 	public ImportExportSession() {
 		questions = new ArrayList<ImportExportQuestion>();
 		feedbackQuestions = new ArrayList<InterposedQuestion>();
+		motds = new ArrayList<Motd>();
+		sessionInfo = null;
 	}
 
 	@ApiModelProperty(required = true, value = "used to display session")
@@ -107,6 +110,7 @@ public class ImportExportSession {
 	public void addQuestionWithAnswers(Question q, List<Answer> aL) {
 		ImportExportQuestion ieq = new ImportExportQuestion(q);
 		ieq.setAnswers(aL);
+		questions.add(ieq);
 	}
 
 	public Session generateSessionEntity(User user) {
@@ -144,6 +148,10 @@ public class ImportExportSession {
 
 		private List<Answer> answers;
 
+		public ImportExportQuestion() {
+
+		}
+
 		public ImportExportQuestion(Question q) {
 			setType(q.getType());
 			setQuestionType(q.getQuestionType());
-- 
GitLab