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.
|
|
package de.fd.fh;
import de.fd.fh.server.access.AccessContextEventListener; import de.fd.fh.server.access.AccessRepository; import de.fd.fh.server.access.AccessService; import de.fd.fh.server.access.web.AccessController; import de.fd.fh.server.game.GameRepository; import de.fd.fh.server.game.GameService; import de.fd.fh.server.game.web.GameController; import de.fd.fh.server.user.UserContextEventListener; import de.fd.fh.server.user.web.UserController; import de.fd.fh.server.user.UserRepository; import de.fd.fh.server.user.UserService;
import java.util.HashSet; import java.util.Observable; import java.util.Observer; import java.util.Set;
import static spark.Spark.*;
public class ServerApp { private static AccessRepository accessRepository; private static UserRepository userRepository; private static GameRepository gameRepository;
private static AccessController accessController; private static UserController userController; private static GameController gameController;
private static final Set<Observer> listeners = new HashSet<>();
public static void main(String[] args) { initListeners();
if (accessController == null && userController == null) { initRepositories(); accessController = new AccessController((AccessService) addListeners(new AccessService(accessRepository))); userController = new UserController((UserService) addListeners(new UserService(userRepository))); gameController = new GameController(new GameService(gameRepository)); }
before("/*", (req, res) -> accessController.before(req)); post("/accounts/registrate", accessController::registrate); post("/accounts/login", accessController::login); post("/accounts/logout", accessController::logout); delete("/accounts/:player_id", accessController::deletePlayer);
post("/users", userController::updateUser); get("/users", userController::getCompleteUser); get("/users/:user_id", userController::getUser);
post("/games", gameController::createGame); get("/games/:game_id", gameController::findGameById); get("/games/findByUser/:user_id", gameController::findRunningGamesOfUser);
get("/hello", (req, res) -> "Hello World");
}
public static void initController( final AccessController accessController, final UserController userController, final GameController gameController ) { ServerApp.userController = userController; ServerApp.accessController = accessController; ServerApp.gameController = gameController; }
private static Object addListeners(Observable service) { listeners.forEach(service::addObserver);
return service; }
private static void initListeners() { listeners.add(new AccessContextEventListener(accessRepository)); listeners.add(new UserContextEventListener(userRepository)); }
private static void initRepositories() { accessRepository = new AccessRepository(); userRepository = new UserRepository(); gameRepository = new GameRepository(); } }
|