You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.2 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. package de.fd.fh;
  2. import de.fd.fh.server.access.AccessContextEventListener;
  3. import de.fd.fh.server.access.AccessRepository;
  4. import de.fd.fh.server.access.AccessService;
  5. import de.fd.fh.server.access.web.AccessController;
  6. import de.fd.fh.server.game.GameRepository;
  7. import de.fd.fh.server.game.GameService;
  8. import de.fd.fh.server.game.web.GameController;
  9. import de.fd.fh.server.user.UserContextEventListener;
  10. import de.fd.fh.server.user.web.UserController;
  11. import de.fd.fh.server.user.UserRepository;
  12. import de.fd.fh.server.user.UserService;
  13. import java.util.HashSet;
  14. import java.util.Observable;
  15. import java.util.Observer;
  16. import java.util.Set;
  17. import static spark.Spark.*;
  18. public class ServerApp
  19. {
  20. private static AccessRepository accessRepository;
  21. private static UserRepository userRepository;
  22. private static GameRepository gameRepository;
  23. private static AccessController accessController;
  24. private static UserController userController;
  25. private static GameController gameController;
  26. private static final Set<Observer> listeners = new HashSet<>();
  27. public static void main(String[] args)
  28. {
  29. initListeners();
  30. if (accessController == null && userController == null)
  31. {
  32. initRepositories();
  33. accessController = new AccessController((AccessService)
  34. addListeners(new AccessService(accessRepository)));
  35. userController = new UserController((UserService)
  36. addListeners(new UserService(userRepository)));
  37. gameController = new GameController(new GameService(gameRepository));
  38. }
  39. before("/*", (req, res) -> accessController.before(req));
  40. post("/accounts/registrate", accessController::registrate);
  41. post("/accounts/login", accessController::login);
  42. post("/accounts/logout", accessController::logout);
  43. delete("/accounts/:player_id", accessController::deletePlayer);
  44. post("/users", userController::updateUser);
  45. get("/users", userController::getCompleteUser);
  46. get("/users/:user_id", userController::getUser);
  47. post("/games", gameController::createGame);
  48. get("/games/:game_id", gameController::findGameById);
  49. get("/games/findByUser/:user_id", gameController::findRunningGamesOfUser);
  50. get("/hello", (req, res) -> "Hello World");
  51. }
  52. public static void initController(
  53. final AccessController accessController,
  54. final UserController userController,
  55. final GameController gameController
  56. )
  57. {
  58. ServerApp.userController = userController;
  59. ServerApp.accessController = accessController;
  60. ServerApp.gameController = gameController;
  61. }
  62. private static Object addListeners(Observable service)
  63. {
  64. listeners.forEach(service::addObserver);
  65. return service;
  66. }
  67. private static void initListeners()
  68. {
  69. listeners.add(new AccessContextEventListener(accessRepository));
  70. listeners.add(new UserContextEventListener(userRepository));
  71. }
  72. private static void initRepositories()
  73. {
  74. accessRepository = new AccessRepository();
  75. userRepository = new UserRepository();
  76. gameRepository = new GameRepository();
  77. }
  78. }