diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java index 605753daa1c655c98ea7c4dd51075709f715767d..11383ca6f4bdb18f281999f7e963634332bb5401 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 6b34e07df976402e324bcbd7d57ff1f7d621da41..da671be685df26d48b15c23f08517d2e06ec65c6 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 eed604f2c602c8ecfc3c3f9ac510f8448e2e9948..8cd6eb1e05e7c0b4bd48bcfef6e9471ce4e40255 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 c367f37560c1cdf8f478d50cb6870004354d7bff..d56b3051ff2595a75b9439e4363228b00583ed56 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 628590cca68458f304da8a3906f3b4adc40a1196..4dfaf0c2a9ce456b485c6954ddab1116c85c4b69 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