diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 9b647c513882f3cf9a7fd02f0ff18862d1a7136b..d09640cdb648e67f07d55e89e94233f3b7834d46 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -22,6 +22,7 @@ import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletResponse; @@ -192,10 +193,10 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/public_pool", method = RequestMethod.GET) - public final List<Session> getPublicPoolSessions( + public final Map<String, ArrayList<Session>> getPublicPoolSessions( final HttpServletResponse response ) { - List<Session> sessions; + Map<String, ArrayList<Session>> sessions; sessions = sessionService.getPublicPoolSessions(); if (sessions == null || sessions.isEmpty()) { diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 032e013ebc67acb5014b0fb072ea480a398c44f2..171c39d6ac53c17b4de04170a39e518009a7e59c 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -130,22 +130,22 @@ public class CouchDBDao implements IDatabaseDao { } @Override - public final List<Session> getPublicPoolSessions() { + public final Map<String, ArrayList<Session>> getPublicPoolSessions() { + Map<String, ArrayList<Session>> sessionMap = new HashMap<String, ArrayList<Session>>(); final NovaView view = new NovaView("session/public_pool_by_id"); - + view.setGroup(true); final ViewResults sessions = getDatabase().view(view); - final List<Session> result = new ArrayList<Session>(); - - for (final Document d : sessions.getResults()) { - final Session session = (Session) JSONObject.toBean( - d.getJSONObject().getJSONObject("value"), - Session.class - ); - //session.set_id(d.getId()); - result.add(session); + //final List<Session> result = new ArrayList<Session>(); + Collection<Session> result = null; + for (Document d : sessions.getResults()) { + final JSONArray jsonSessions = d.getJSONObject().getJSONArray("value"); + + sessionMap.put( + d.getJSONObject().getString("key"), + new ArrayList(JSONArray.toCollection(jsonSessions, Session.class))); } - return result; + return sessionMap; } @Override @@ -337,6 +337,7 @@ public class CouchDBDao implements IDatabaseDao { @Override public final Session saveSession(final User user, final Session session) { final Document sessionDocument = new Document(); + sessionDocument.put("type", "session"); sessionDocument.put("name", session.getName()); sessionDocument.put("shortName", session.getShortName()); diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 54083b3b21bbd7557910efe54b823fa767f0494e..bfb1502a7f560a7688b5ea07a0aea6e73ca3f5ca 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -20,7 +20,9 @@ package de.thm.arsnova.dao; import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.entities.Answer; @@ -40,7 +42,7 @@ public interface IDatabaseDao { List<Session> getMySessions(User user); - List<Session> getPublicPoolSessions(); + Map<String, ArrayList<Session>> getPublicPoolSessions(); Session saveSession(User user, Session session); diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 700e36786f463abdeff7d271da0808f01281d898..1cf5b978bfba5ce679cbea9aabac1706c7bdaa99 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -20,7 +20,9 @@ package de.thm.arsnova.services; import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.UUID; import de.thm.arsnova.connector.model.Course; @@ -38,7 +40,7 @@ public interface ISessionService { List<Session> getMySessions(); - List<Session> getPublicPoolSessions(); + Map<String, ArrayList<Session>> getPublicPoolSessions(); List<Session> getMyVisitedSessions(); diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index f3ee451aebdfce99444b5bd582c2ceb1b5051026..1f87b7db8a20594162bcf1f64373705b8cbb75d3 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -21,8 +21,10 @@ package de.thm.arsnova.services; import java.io.Serializable; import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Map; import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; @@ -156,7 +158,7 @@ public class SessionService implements ISessionService { @Override @PreAuthorize("isAuthenticated()") - public final List<Session> getPublicPoolSessions() { + public final Map<String, ArrayList<Session>> getPublicPoolSessions() { return databaseDao.getPublicPoolSessions(); } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index eec8823cd9f5b9dd486ac34cd3684ff6df72214d..08349c91922308d49e64b7391342d0dee955fdaf 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -195,7 +195,7 @@ public class StubDatabaseDao implements IDatabaseDao { } @Override - public List<Session> getPublicPoolSessions() { + public Map<String, ArrayList<Session>> getPublicPoolSessions() { // TODO Auto-generated method stub return null; }