From dd2edcf266d85b3a11e69d88ed4d319a8ae08b80 Mon Sep 17 00:00:00 2001 From: Julian Hochstetter <julian.hochstetter@mni.thm.de> Date: Tue, 16 Oct 2012 20:51:33 +0200 Subject: [PATCH] Task #4029: add optional sort paramter to /getSkillQuestions/{sessionkey}, by default sort by subject but if getSkillQuestions/{sessionkey}?sort=text the result will be sorted by subject and text --- .../java/de/thm/arsnova/SessionController.java | 5 +++-- src/main/java/de/thm/arsnova/dao/CouchDBDao.java | 14 +++++++++++--- src/main/java/de/thm/arsnova/dao/IDatabaseDao.java | 2 +- .../de/thm/arsnova/services/ISessionService.java | 2 +- .../de/thm/arsnova/services/SessionService.java | 4 ++-- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java index 605753daa..11383ca6f 100644 --- a/src/main/java/de/thm/arsnova/SessionController.java +++ b/src/main/java/de/thm/arsnova/SessionController.java @@ -35,6 +35,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import de.thm.arsnova.entities.Session; @@ -111,8 +112,8 @@ public class SessionController { @RequestMapping(value="/getSkillQuestions/{sessionkey}", method=RequestMethod.GET) @ResponseBody - public List<Question> getSkillQuestions(@PathVariable String sessionkey, HttpServletResponse response) { - List<Question> questions = sessionService.getSkillQuestions(sessionkey); + public List<Question> getSkillQuestions(@PathVariable String sessionkey, @RequestParam(value="sort", required=false) String sort, HttpServletResponse response) { + List<Question> questions = sessionService.getSkillQuestions(sessionkey, sort); if(questions == null || questions.isEmpty()) { response.setStatus(HttpStatus.NOT_FOUND.value()); return null; diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 6b34e07df..da671be68 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -186,14 +186,22 @@ public class CouchDBDao implements IDatabaseDao { } @Override - public List<Question> getSkillQuestions(String session) { + public List<Question> getSkillQuestions(String session, String sort) { + String viewName = ""; + if(sort != null && sort.equals("text")) { + viewName = "skill_question/by_session_sorted_by_subject_and_text"; + } else { + viewName = "skill_question/by_session"; + } try { - View view = new View("skill_question/by_session"); + View view = new View(viewName); view.setStartKey("[" + URLEncoder.encode("\"" + session + "\"", "UTF-8") + "]"); view.setEndKey("[" + URLEncoder.encode("\"" + session + "\",{}", "UTF-8") + "]"); ViewResults questions = this.getDatabase().view(view); - + if(questions == null || questions.isEmpty()) { + return null; + } List<Question> result = new ArrayList<Question>(); MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry(); diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index eed604f2c..8cd6eb1e0 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -37,5 +37,5 @@ public interface IDatabaseDao { public boolean sessionKeyAvailable(String keyword); public boolean saveQuestion(Session session, Question question); - List<Question> getSkillQuestions(String session); + List<Question> getSkillQuestions(String session, String sort); } \ No newline at end of file diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index c367f3756..d56b3051f 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -45,5 +45,5 @@ public interface ISessionService { public List<Session> getMySessions(String username); public boolean saveQuestion(Question question); - public List<Question> getSkillQuestions(String sessionkey); + public List<Question> getSkillQuestions(String sessionkey, String sort); } \ No newline at end of file diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 628590cca..4dfaf0c2a 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -77,8 +77,8 @@ public class SessionService implements ISessionService { } @Override - public List<Question> getSkillQuestions(String sessionkey) { - return databaseDao.getSkillQuestions(sessionkey); + public List<Question> getSkillQuestions(String sessionkey, String sort) { + return databaseDao.getSkillQuestions(sessionkey, sort); } @Override -- GitLab