From d9eb5409ca96470ae383fe7ab321f9f74478c1be Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sat, 10 Dec 2011 19:11:15 +0000 Subject: [PATCH] Admin page. --- .../java/com/gempukku/lotro/db/LeagueDAO.java | 6 ++ .../lotro/server/AbstractResource.java | 2 +- .../gempukku/lotro/server/AdminResource.java | 72 +++++++++++++++++++ .../lotro/server/CollectionResource.java | 23 +----- .../lotro/server/PacksStorageProvider.java | 63 ++++++++++++++++ .../gempukku/lotro/server/ServerResource.java | 21 ------ .../gemp-lotr-web/src/main/webapp/admin.html | 19 +++++ 7 files changed, 162 insertions(+), 44 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java create mode 100644 gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/PacksStorageProvider.java create mode 100644 gemp-lotr/gemp-lotr-web/src/main/webapp/admin.html diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LeagueDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LeagueDAO.java index 514201900..722fb5fbc 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LeagueDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LeagueDAO.java @@ -29,6 +29,11 @@ public class LeagueDAO { _serializer = new CollectionSerializer(_library); } + public void clearCache() { + _dateLoaded = 0; + _activeLeagues = null; + } + public void addLeague(String name, String type, CardCollection collection, int startTime, int endTime) throws SQLException, IOException { Connection conn = _dbAccess.getDataSource().getConnection(); try { @@ -98,6 +103,7 @@ public class LeagueDAO { int currentDate = getCurrentDate(); if (currentDate != _dateLoaded) { try { + _activeLeagues.clear(); loadActiveLeagues(currentDate); _dateLoaded = currentDate; } catch (SQLException e) { diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java index d99be4ab9..f79f2c881 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java @@ -20,7 +20,7 @@ public abstract class AbstractResource { protected final Player getResourceOwnerSafely(HttpServletRequest request, String participantId) { String loggedUser = getLoggedUser(request); - if (_test) + if (_test && loggedUser == null) loggedUser = participantId; if (loggedUser == null) diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java new file mode 100644 index 000000000..a25daa886 --- /dev/null +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java @@ -0,0 +1,72 @@ +package com.gempukku.lotro.server; + +import com.gempukku.lotro.db.CollectionDAO; +import com.gempukku.lotro.db.DeckDAO; +import com.gempukku.lotro.db.LeagueDAO; +import com.gempukku.lotro.db.vo.Player; +import com.gempukku.lotro.game.DefaultCardCollection; +import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.sun.jersey.spi.resource.Singleton; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; + +@Singleton +@Path("/admin") +public class AdminResource extends AbstractResource { + @Context + private CollectionDAO _collectionDao; + @Context + private DeckDAO _deckDao; + @Context + private LeagueDAO _leagueDao; + @Context + private LotroCardBlueprintLibrary _library; + + @Path("/clearCache") + @GET + public String clearCache(@Context HttpServletRequest request) throws Exception { + validateAdmin(request); + + _playerDao.clearCache(); + _collectionDao.clearCache(); + _deckDao.clearCache(); + _leagueDao.clearCache(); + + return "OK"; + } + + @Path("/addLeague") + @POST + public String addLeague( + @FormParam("name") String name, + @FormParam("type") String type, + @FormParam("start") int start, + @FormParam("end") int end, + @FormParam("packCollection") String packCollection, + @Context HttpServletRequest request) throws Exception { + validateAdmin(request); + + DefaultCardCollection collection = new DefaultCardCollection(_library); + String[] packs = packCollection.split("\n"); + for (String pack : packs) + collection.addPacks(pack, 1); + collection.finishedReading(); + + _leagueDao.addLeague(name, type, collection, start, end); + + return "OK"; + } + + private void validateAdmin(HttpServletRequest request) { + Player player = getResourceOwnerSafely(request, null); + + if (!player.getType().equals("a")) + sendError(Response.Status.FORBIDDEN); + } +} diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java index 87be70236..5f0e66bdb 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java @@ -9,10 +9,7 @@ import com.gempukku.lotro.game.LotroCardBlueprintLibrary; import com.gempukku.lotro.game.LotroServer; import com.gempukku.lotro.game.MutableCardCollection; import com.gempukku.lotro.league.LeagueService; -import com.gempukku.lotro.packs.FixedPackBox; -import com.gempukku.lotro.packs.LeagueStarterBox; import com.gempukku.lotro.packs.PacksStorage; -import com.gempukku.lotro.packs.RarityPackBox; import com.sun.jersey.spi.resource.Singleton; import org.apache.log4j.Logger; import org.w3c.dom.Document; @@ -26,7 +23,6 @@ import javax.ws.rs.core.Response; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import java.io.IOException; import java.util.List; @Singleton @@ -42,26 +38,9 @@ public class CollectionResource extends AbstractResource { private LotroCardBlueprintLibrary _library; @Context private LeagueService _leagueService; - + @Context private PacksStorage _packStorage; - public CollectionResource() { - try { - _packStorage = new PacksStorage(); - _packStorage.addPackBox("FotR - League Starter", new LeagueStarterBox()); - _packStorage.addPackBox("FotR - Gandalf Starter", new FixedPackBox(_library, "FotR - Gandalf Starter")); - _packStorage.addPackBox("FotR - Aragorn Starter", new FixedPackBox(_library, "FotR - Aragorn Starter")); - _packStorage.addPackBox("FotR - Booster", new RarityPackBox(_library, 1)); - - } catch (IOException exp) { - _logger.error("Error while creating resource", exp); - exp.printStackTrace(); - } catch (RuntimeException exp) { - _logger.error("Error while creating resource", exp); - exp.printStackTrace(); - } - } - @Path("/{collectionType}") @GET @Produces(MediaType.APPLICATION_XML) diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/PacksStorageProvider.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/PacksStorageProvider.java new file mode 100644 index 000000000..3ec15fdf8 --- /dev/null +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/PacksStorageProvider.java @@ -0,0 +1,63 @@ +package com.gempukku.lotro.server; + +import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.gempukku.lotro.packs.FixedPackBox; +import com.gempukku.lotro.packs.LeagueStarterBox; +import com.gempukku.lotro.packs.PacksStorage; +import com.gempukku.lotro.packs.RarityPackBox; +import com.sun.jersey.core.spi.component.ComponentContext; +import com.sun.jersey.core.spi.component.ComponentScope; +import com.sun.jersey.spi.inject.Injectable; +import com.sun.jersey.spi.inject.InjectableProvider; +import org.apache.log4j.Logger; + +import javax.ws.rs.core.Context; +import javax.ws.rs.ext.Provider; +import java.io.IOException; +import java.lang.reflect.Type; + +@Provider +public class PacksStorageProvider implements Injectable, InjectableProvider { + private static final Logger _logger = Logger.getLogger(PacksStorageProvider.class); + private PacksStorage _packsStorage; + + @Context + private LotroCardBlueprintLibrary _library; + + @Override + public Injectable getInjectable(ComponentContext ic, Context context, Type type) { + if (type.equals(PacksStorage.class)) + return this; + return null; + } + + @Override + public ComponentScope getScope() { + return ComponentScope.Singleton; + } + + private PacksStorage createPacksStorage() { + try { + PacksStorage packStorage = new PacksStorage(); + packStorage.addPackBox("FotR - League Starter", new LeagueStarterBox()); + packStorage.addPackBox("FotR - Gandalf Starter", new FixedPackBox(_library, "FotR - Gandalf Starter")); + packStorage.addPackBox("FotR - Aragorn Starter", new FixedPackBox(_library, "FotR - Aragorn Starter")); + packStorage.addPackBox("FotR - Booster", new RarityPackBox(_library, 1)); + return packStorage; + } catch (IOException exp) { + _logger.error("Error while creating resource", exp); + exp.printStackTrace(); + } catch (RuntimeException exp) { + _logger.error("Error while creating resource", exp); + exp.printStackTrace(); + } + return null; + } + + @Override + public synchronized PacksStorage getValue() { + if (_packsStorage == null) + _packsStorage = createPacksStorage(); + return _packsStorage; + } +} diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java index 66635124c..fd9dcce38 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java @@ -2,8 +2,6 @@ package com.gempukku.lotro.server; import com.gempukku.lotro.chat.ChatServer; import com.gempukku.lotro.common.ApplicationRoot; -import com.gempukku.lotro.db.CollectionDAO; -import com.gempukku.lotro.db.DeckDAO; import com.gempukku.lotro.db.GameHistoryDAO; import com.gempukku.lotro.db.vo.GameHistoryEntry; import com.gempukku.lotro.db.vo.Player; @@ -45,10 +43,6 @@ public class ServerResource extends AbstractResource { @Context private ChatServer _chatServer; @Context - private CollectionDAO _collectionDao; - @Context - private DeckDAO _deckDao; - @Context private GameHistoryDAO _gameHistoryDao; public ServerResource() { @@ -62,21 +56,6 @@ public class ServerResource extends AbstractResource { _logger.debug("Resource created"); } - @Path("/clearCache") - @GET - public String clearCache(@Context HttpServletRequest request) throws Exception { - Player player = getResourceOwnerSafely(request, null); - - if (!player.getType().equals("a")) - sendError(Response.Status.FORBIDDEN); - - _playerDao.clearCache(); - _collectionDao.clearCache(); - _deckDao.clearCache(); - - return "OK"; - } - @Path("/login") @POST @Produces("text/html") diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/admin.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/admin.html new file mode 100644 index 000000000..5476a5234 --- /dev/null +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/admin.html @@ -0,0 +1,19 @@ + + +

Cache

+Clear cache + +

League

+ +

Add league

+ +
+ Name:
+ Type:
+ Start:
+ End:
+ Packs: + +
+ + \ No newline at end of file