From 3658e88b444f8b261f141e0440ffc726612e1812 Mon Sep 17 00:00:00 2001
From: tekay <tom.kaesler@mni.thm.de>
Date: Thu, 5 Mar 2015 23:29:32 +0100
Subject: [PATCH] #14886 edited the lecture/preparation view to use new
 sort_question-views, saveOrder is not checking whether there is already a
 list

---
 .../LecturerQuestionController.java           | 12 ++++
 .../java/de/thm/arsnova/dao/CouchDBDao.java   | 55 ++++++++++++++++---
 .../java/de/thm/arsnova/dao/IDatabaseDao.java |  4 ++
 .../java/de/thm/arsnova/entities/Session.java | 19 -------
 4 files changed, 63 insertions(+), 27 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
index 07f17995a..758d94865 100644
--- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java
@@ -121,6 +121,18 @@ public class LecturerQuestionController extends AbstractController {
 		}
 	}
 
+	@RequestMapping(value = "/sort", method = RequestMethod.POST)
+	public void publishQuestion(
+			@PathVariable final String questionId,
+			@RequestParam(required = false) final Boolean publish,
+			@RequestBody final Question question
+			) {
+		if (publish != null) {
+			question.setActive(publish);
+		}
+		questionService.update(question);
+	}
+
 	@RequestMapping(value = "/{questionId}/publishstatistics", method = RequestMethod.POST)
 	public void publishStatistics(
 			@PathVariable final String questionId,
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 671e69db2..0ec989191 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -1381,14 +1381,24 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 	@Cacheable("lecturequestions")
 	@Override
 	public List<Question> getLectureQuestionsForUsers(final Session session) {
-		String viewName = "skill_question/lecture_question_by_session_for_all";
-		return getQuestions(new NovaView(viewName), session);
+		String viewName = "question_sort/lecture_question_by_session_sorted_for_all";
+		List<Question> result = getQuestions(new NovaView(viewName), session);
+        if(result == null) {
+            String viewName = "skill_question/lecture_question_by_session_for_all";
+            result = getQuestions(new NovaView(viewName), session);
+        }
+        return result;
 	}
 
 	@Override
 	public List<Question> getLectureQuestionsForTeachers(final Session session) {
-		String viewName = "skill_question/lecture_question_by_session";
-		return getQuestions(new NovaView(viewName), session);
+		String viewName = "question_sort/lecture_question_by_session_sorted";
+		List<Question> result = getQuestions(new NovaView(viewName), session);
+        if (result == null) {
+            String viewName = "skill_question/lecture_question_by_session";
+            result = getQuestions(new NovaView(viewName), session);
+        }
+        return result;
 	}
 
 	@Cacheable("flashcardquestions")
@@ -1407,14 +1417,24 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 	@Cacheable("preparationquestions")
 	@Override
 	public List<Question> getPreparationQuestionsForUsers(final Session session) {
-		String viewName = "skill_question/preparation_question_by_session_for_all";
-		return getQuestions(new NovaView(viewName), session);
+		String viewName = "question_sort/preparation_question_by_session_sorted_for_all";
+		List<Question> result = getQuestions(new NovaView(viewName), session);
+        if (result == null) {
+            String viewName = "skill_question/preparation_question_by_session_for_all";
+            result = getQuestions(new NovaView(viewName), session);
+        }
+        return result;
 	}
 
 	@Override
 	public List<Question> getPreparationQuestionsForTeachers(final Session session) {
-		String viewName = "skill_question/preparation_question_by_session";
-		return getQuestions(new NovaView(viewName), session);
+        String viewName = "question_sort/preparation_question_by_session_sorted";
+		List<Question> result = getQuestions(new NovaView(viewName), session);
+        if (result == null) {
+            String viewName = "skill_question/preparation_question_by_session";
+            result = getQuestions(new NovaView(viewName), session);
+        }
+        return result;
 	}
 
 	private List<Question> getQuestions(final NovaView view, final Session session) {
@@ -1909,4 +1929,23 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 		info.setNumUnredInterposed(unreadInterposed);
 		return info;
 	}
+    
+    @OVerride
+    String getSaveOrderId(Session session) {
+        String view = "question_sort/get_id";    
+    }
+    
+    @Override
+    String saveQuestionSort(Session session, final String[] sortOrder) {
+		final Document a = new Document();
+		a.put("type", "question_sort");
+		a.put("sessionId", session.getSessionId());
+        a.put("sortOrder", sortOrder);
+		try {
+			database.saveDocument(a);
+		} catch (final IOException e) {
+			return null;
+		}
+        return sortOrder;
+    }
 }
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index c60e1e296..eb38f6fab 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -196,4 +196,8 @@ public interface IDatabaseDao {
 	SessionInfo importSession(User user, ImportExportSession importSession);
 
 	Statistics getStatistics();
+    
+    String getSaveOrderId(Session session);
+    
+    String saveQuestionSort(Session session, final String[] sortOrder);
 }
diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java
index 7a5cca22d..a5df967d5 100644
--- a/src/main/java/de/thm/arsnova/entities/Session.java
+++ b/src/main/java/de/thm/arsnova/entities/Session.java
@@ -49,9 +49,6 @@ public class Session implements Serializable {
 	private String ppFaculty;
 	private String ppLevel;
 	private String sessionType;
-    
-    private boolean sortPreparationQuestions;
-    private boolean sortLectureQuestions;
 
 	private String _id;
 	private String _rev;
@@ -291,22 +288,6 @@ public class Session implements Serializable {
 	public void setSessionType(final String sessionType) {
 		this.sessionType = sessionType;
 	}
-    
-    public boolean getSortPreparationQuestions() {
-        return sortIndexPreparation;
-    }
-    
-    public void setSortPreparationQuestions(final boolean SortPreparationQuestions) {
-        this.sortIndexPreparation = sortIndexPreparation;
-    }
-    
-    public boolean getSortPreparationQuestions() {
-        return sortIndexPreparation;
-    }
-    
-    public void setSortLectureQuestions(final boolean SortLectureQuestions) {
-        this.sortIndexLecture = sortIndexLecture;
-    }
 
 	@Override
 	public String toString() {
-- 
GitLab