diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 00bb43d1a6a40f068b8bb3bd9e17848647c3d1ab..d7e2a3ac45e13a51a91d4b8e1c90f5fb670c4b1c 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -1,6 +1,6 @@ /* * Copyright (C) 2012 THM webMedia - * + * * This file is part of ARSnova. * * ARSnova is free software: you can redistribute it and/or modify @@ -20,8 +20,6 @@ package de.thm.arsnova.services; import java.util.List; -import java.util.Map; -import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,66 +29,63 @@ import de.thm.arsnova.dao.IDatabaseDao; import de.thm.arsnova.entities.LoggedIn; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; -import de.thm.arsnova.socket.ARSnovaSocketIOServer; @Service public class SessionService implements ISessionService { @Autowired - ARSnovaSocketIOServer server; - - @Autowired - IDatabaseDao databaseDao; + private IDatabaseDao databaseDao; @Autowired - IUserService userService; + private IUserService userService; - public void setDatabaseDao(IDatabaseDao databaseDao) { - this.databaseDao = databaseDao; + public void setDatabaseDao(final IDatabaseDao newDatabaseDao) { + this.databaseDao = newDatabaseDao; } @Override @Authenticated - public Session joinSession(String keyword) { + public final Session joinSession(final String keyword) { userService.addCurrentUserToSessionMap(keyword); return databaseDao.getSession(keyword); } @Override - public List<Session> getMySessions(String username) { + public final List<Session> getMySessions(final String username) { return databaseDao.getMySessions(username); } @Override @Authenticated - public Session saveSession(Session session) { + public final Session saveSession(final Session session) { return databaseDao.saveSession(session); } @Override - public boolean sessionKeyAvailable(String keyword) { + public final boolean sessionKeyAvailable(final String keyword) { return databaseDao.sessionKeyAvailable(keyword); } @Override - public String generateKeyword() { + public final String generateKeyword() { final int low = 10000000; final int high = 100000000; String keyword = String .valueOf((int) (Math.random() * (high - low) + low)); - if (this.sessionKeyAvailable(keyword)) + if (this.sessionKeyAvailable(keyword)) { return keyword; + } return generateKeyword(); } @Override @Authenticated - public LoggedIn registerAsOnlineUser(User user, String sessionkey) { + public final LoggedIn registerAsOnlineUser(final User user, final String sessionkey) { Session session = this.joinSession(sessionkey); - if (session == null) + if (session == null) { return null; - + } if (session.getCreator().equals(user.getUsername())) { databaseDao.updateSessionOwnerActivity(session); } diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java index 544874328872613cd5fd8a6f9926200fc9d46ec3..60902a5b0d099d59eb0a86a085f5c60b0ab22f96 100644 --- a/src/main/java/de/thm/arsnova/services/UserService.java +++ b/src/main/java/de/thm/arsnova/services/UserService.java @@ -38,7 +38,7 @@ import de.thm.arsnova.exceptions.UnauthorizedException; public class UserService implements IUserService, InitializingBean, DisposableBean { - public static final Logger logger = LoggerFactory.getLogger(UserService.class); + public static final Logger LOGGER = LoggerFactory.getLogger(UserService.class); private static final ConcurrentHashMap<UUID, User> socketid2user = new ConcurrentHashMap<UUID, User>(); private static final ConcurrentHashMap<String, String> user2session = new ConcurrentHashMap<String, String>(); @@ -150,15 +150,15 @@ public class UserService implements IUserService, InitializingBean, DisposableBe Map<UUID, User> s2u = (Map<UUID, User>) map.get("socketid2user"); Map<String, String> u2s = (Map<String, String>) map.get("user2session"); - logger.info("load from store: {}", map); + LOGGER.info("load from store: {}", map); socketid2user.putAll(s2u); user2session.putAll(u2s); } catch (IOException e) { - logger.error("IOException during restoring UserService", e); + LOGGER.error("IOException during restoring UserService", e); } catch (ClassNotFoundException e) { - logger.error("ClassNotFoundException during restoring UserService", e); + LOGGER.error("ClassNotFoundException during restoring UserService", e); } } @@ -173,7 +173,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe File store = new File(tmpDir, "arsnova.bin"); if (!store.exists()) { if (! store.createNewFile()) { - logger.info("Could not create store file"); + LOGGER.info("Could not create store file"); } } OutputStream file = new FileOutputStream(store); @@ -181,9 +181,9 @@ public class UserService implements IUserService, InitializingBean, DisposableBe objOut.writeObject(map); objOut.close(); file.close(); - logger.info("saved to store: {}", map); + LOGGER.info("saved to store: {}", map); } catch (IOException e) { - logger.error("IOException while saving UserService", e); + LOGGER.error("IOException while saving UserService", e); } } } diff --git a/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java b/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java index 8e79f54f4877d73f5c42d524d3eef57568990812..d0b4f25a21cdf7d4f39cb9008527df3b503793d4 100644 --- a/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java +++ b/src/test/java/de/thm/arsnova/controller/StatisticsControllerTest.java @@ -46,13 +46,13 @@ public class StatisticsControllerTest { } @Test - public final void testShouldNotGetUnknownSession() throws Exception { + public final void testShouldGetCurrentOnlineUsers() throws Exception { userService.setUserAuthenticated(true); request.setMethod("GET"); request.setRequestURI("/statistics/activeusercount"); handlerAdapter.handle(request, response, statisticsController); - assertEquals("0", response.getContentAsString()); + assertEquals("1", response.getContentAsString()); } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index c16ea9516aca46fdc6e4796ea5815a5c04c5a820..ac2264591672a4b66233c16285f7e4386576050a 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -1,7 +1,6 @@ package de.thm.arsnova.dao; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -26,6 +25,7 @@ public class StubDatabaseDao implements IDatabaseDao { private static Map<String, Session> stubSessions = new ConcurrentHashMap<String, Session>(); private static Map<String, Feedback> stubFeedbacks = new ConcurrentHashMap<String, Feedback>(); private static Map<String, List<Question>> stubQuestions = new ConcurrentHashMap<String, List<Question>>(); + private static Map<String, User> stubUsers = new ConcurrentHashMap<String, User>(); public StubDatabaseDao() { fillWithDummySessions(); @@ -167,8 +167,9 @@ public class StubDatabaseDao implements IDatabaseDao { @Override public LoggedIn registerAsOnlineUser(User u, Session s) { - // TODO Auto-generated method stub - return null; + stubUsers.put(s.getKeyword(), u); + System.out.println("X"); + return new LoggedIn(); } @Override @@ -227,8 +228,7 @@ public class StubDatabaseDao implements IDatabaseDao { @Override public int getActiveUsers(long since) { - // TODO Auto-generated method stub - return 0; + return stubUsers.size(); } } diff --git a/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java b/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java index 5638188f902093736a594ec1470867979540c409..077ad2db11c858ee58819403a08254c899a41a05 100644 --- a/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/StatisticsServiceTest.java @@ -8,6 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import de.thm.arsnova.dao.StubDatabaseDao; +import de.thm.arsnova.entities.Session; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { @@ -20,10 +22,25 @@ public class StatisticsServiceTest { @Autowired private IStatisticsService statisticsService; + @Autowired + private StubUserService userService; + + @Autowired + private StubDatabaseDao databaseDao; + @Test - public final void testShouldReturnCurrentActiveUsers() { + public final void testShouldReturnNoActiveUsers() { int actual = statisticsService.countActiveUsers(); - //assertEquals(0, actual); + assertEquals(0, actual); } + @Test + public final void testShouldReturnCurrentActiveUsers() { + Session session = new Session(); + session.setKeyword("1278127812"); + databaseDao.registerAsOnlineUser(userService.getCurrentUser(), session); + + int actual = statisticsService.countActiveUsers(); + assertEquals(1, actual); + } } diff --git a/src/test/java/de/thm/arsnova/services/StubUserService.java b/src/test/java/de/thm/arsnova/services/StubUserService.java index f12bf302597844620e42fefa44fa9cc16a3a63b7..169058a110f264220884fbade47e78ec91741587 100644 --- a/src/test/java/de/thm/arsnova/services/StubUserService.java +++ b/src/test/java/de/thm/arsnova/services/StubUserService.java @@ -1,7 +1,9 @@ package de.thm.arsnova.services; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import de.thm.arsnova.dao.StubDatabaseDao; import de.thm.arsnova.entities.User; public class StubUserService extends UserService {