Working on adding leagues by league admins.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package com.gempukku.lotro.league;
|
||||
|
||||
import com.gempukku.lotro.DateUtils;
|
||||
import com.gempukku.lotro.collection.CollectionsManager;
|
||||
import com.gempukku.lotro.db.vo.CollectionType;
|
||||
import com.gempukku.lotro.game.CardCollection;
|
||||
import com.gempukku.lotro.game.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class NewConstructedLeagueData implements LeagueData {
|
||||
private List<LeagueSerieData> _series = new ArrayList<LeagueSerieData>();
|
||||
|
||||
private CollectionType _prizeCollectionType = new CollectionType("permanent", "My cards");
|
||||
private LeaguePrizes _leaguePrizes = new NewLeaguePrizes();
|
||||
private float _prizeMultiplier;
|
||||
|
||||
public NewConstructedLeagueData(String parameters) {
|
||||
String[] params = parameters.split(",");
|
||||
int start = Integer.parseInt(params[0]);
|
||||
CollectionType collectionType;
|
||||
if (params[1].equals("default"))
|
||||
collectionType = new CollectionType("default", "All cards");
|
||||
else if (params[1].equals("permanent"))
|
||||
collectionType = new CollectionType("permanent", "My cards");
|
||||
else
|
||||
throw new IllegalArgumentException("Unkown collection type");
|
||||
_prizeMultiplier = Float.parseFloat(params[2]);
|
||||
int series = Integer.parseInt(params[3]);
|
||||
|
||||
int serieStart = start;
|
||||
for (int i = 0; i < series; i++) {
|
||||
String format = params[4 + i * 3];
|
||||
int duration = Integer.parseInt(params[5 + i * 3]);
|
||||
int maxMatches = Integer.parseInt(params[6 + i * 3]);
|
||||
_series.add(new DefaultLeagueSerieData(_leaguePrizes, false, "Week " + (i + 1),
|
||||
serieStart, DateUtils.offsetDate(serieStart, duration - 1),
|
||||
maxMatches, format, null, collectionType));
|
||||
|
||||
serieStart = DateUtils.offsetDate(serieStart, duration);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LeagueSerieData> getSeries() {
|
||||
return Collections.unmodifiableList(_series);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CardCollection joinLeague(CollectionsManager collecionsManager, Player player, int currentTime) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int process(CollectionsManager collectionsManager, List<LeagueStanding> leagueStandings, int oldStatus, int currentTime) {
|
||||
int status = oldStatus;
|
||||
if (status == 0) {
|
||||
LeagueSerieData lastSerie = _series.get(_series.size() - 1);
|
||||
if (currentTime > DateUtils.offsetDate(lastSerie.getEnd(), 1)) {
|
||||
for (LeagueStanding leagueStanding : leagueStandings) {
|
||||
CardCollection leaguePrize = _leaguePrizes.getPrizeForLeague(leagueStanding.getStanding(), leagueStandings.size(), _prizeMultiplier, null);
|
||||
if (leaguePrize != null)
|
||||
collectionsManager.addItemsToPlayerCollection(leagueStanding.getPlayerName(), _prizeCollectionType, leaguePrize.getAll());
|
||||
}
|
||||
status++;
|
||||
}
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@@ -10,16 +10,20 @@ import com.gempukku.lotro.game.DefaultCardCollection;
|
||||
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
|
||||
import com.gempukku.lotro.game.LotroServer;
|
||||
import com.gempukku.lotro.game.Player;
|
||||
import com.gempukku.lotro.game.formats.LotroFormatLibrary;
|
||||
import com.gempukku.lotro.hall.HallServer;
|
||||
import com.gempukku.lotro.league.LeagueSerieData;
|
||||
import com.gempukku.lotro.league.LeagueService;
|
||||
import com.gempukku.lotro.league.NewSealedLeagueData;
|
||||
import com.gempukku.lotro.league.*;
|
||||
import com.sun.jersey.spi.resource.Singleton;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@@ -45,6 +49,9 @@ public class AdminResource extends AbstractResource {
|
||||
@Context
|
||||
private LotroServer _lotroServer;
|
||||
|
||||
@Context
|
||||
private LotroFormatLibrary _formatLibrary;
|
||||
|
||||
@Path("/clearCache")
|
||||
@GET
|
||||
public String clearCache(@Context HttpServletRequest request) throws Exception {
|
||||
@@ -83,6 +90,58 @@ public class AdminResource extends AbstractResource {
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@Path("/previewSealedLeague")
|
||||
@POST
|
||||
@Produces(MediaType.APPLICATION_XML)
|
||||
public Document previewSealedLeague(
|
||||
@FormParam("cost") int cost,
|
||||
@FormParam("format") String format,
|
||||
@FormParam("name") String name,
|
||||
@FormParam("start") String start,
|
||||
@FormParam("serieDuration") int serieDuration,
|
||||
@FormParam("maxMatches") int maxMatches,
|
||||
@Context HttpServletRequest request) throws Exception {
|
||||
validateLeagueAdmin(request);
|
||||
|
||||
String code = String.valueOf(System.currentTimeMillis());
|
||||
|
||||
String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name;
|
||||
LeagueData leagueData = new NewSealedLeagueData(parameters);
|
||||
|
||||
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
|
||||
|
||||
Document doc = documentBuilder.newDocument();
|
||||
|
||||
final List<LeagueSerieData> series = leagueData.getSeries();
|
||||
|
||||
int end = series.get(series.size() - 1).getEnd();
|
||||
|
||||
Element leagueElem = doc.createElement("league");
|
||||
|
||||
leagueElem.setAttribute("name", name);
|
||||
leagueElem.setAttribute("cost", String.valueOf(cost));
|
||||
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
|
||||
leagueElem.setAttribute("end", String.valueOf(end));
|
||||
|
||||
for (LeagueSerieData serie : series) {
|
||||
Element serieElem = doc.createElement("serie");
|
||||
serieElem.setAttribute("type", serie.getName());
|
||||
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
|
||||
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
|
||||
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
|
||||
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
|
||||
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
|
||||
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
|
||||
|
||||
leagueElem.appendChild(serieElem);
|
||||
}
|
||||
|
||||
doc.appendChild(leagueElem);
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
||||
@Path("/addSealedLeague")
|
||||
@POST
|
||||
public String addSealedLeague(
|
||||
@@ -98,11 +157,103 @@ public class AdminResource extends AbstractResource {
|
||||
String code = String.valueOf(System.currentTimeMillis());
|
||||
|
||||
String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name;
|
||||
NewSealedLeagueData leagueData = new NewSealedLeagueData(parameters);
|
||||
LeagueData leagueData = new NewSealedLeagueData(parameters);
|
||||
List<LeagueSerieData> series = leagueData.getSeries();
|
||||
int leagueStart = series.get(0).getStart();
|
||||
int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2);
|
||||
|
||||
_leagueDao.addLeague(cost, name, String.valueOf(System.currentTimeMillis()), NewSealedLeagueData.class.getName(), parameters, DateUtils.getCurrentDate(), displayEnd);
|
||||
_leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd);
|
||||
|
||||
_leagueService.clearCache();
|
||||
|
||||
return "OK";
|
||||
}
|
||||
|
||||
@Path("/previewConstructedLeague")
|
||||
@POST
|
||||
@Produces(MediaType.APPLICATION_XML)
|
||||
public Document previewConstructedLeague(
|
||||
@FormParam("cost") int cost,
|
||||
@FormParam("name") String name,
|
||||
@FormParam("start") String start,
|
||||
@FormParam("prizeMultiplier") float prizeMultiplier,
|
||||
@FormParam("collectionType") String collectionType,
|
||||
@FormParam("format") String[] formats,
|
||||
@FormParam("serieDuration") int[] serieDurations,
|
||||
@FormParam("maxMatches") int[] maxMatches,
|
||||
@Context HttpServletRequest request) throws Exception {
|
||||
validateLeagueAdmin(request);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.length);
|
||||
for (int i = 0; i < formats.length; i++)
|
||||
sb.append("," + formats[i] + "," + serieDurations[i] + "," + maxMatches[i]);
|
||||
|
||||
String parameters = sb.toString();
|
||||
LeagueData leagueData = new NewConstructedLeagueData(parameters);
|
||||
|
||||
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
|
||||
|
||||
Document doc = documentBuilder.newDocument();
|
||||
|
||||
final List<LeagueSerieData> series = leagueData.getSeries();
|
||||
|
||||
int end = series.get(series.size() - 1).getEnd();
|
||||
|
||||
Element leagueElem = doc.createElement("league");
|
||||
|
||||
leagueElem.setAttribute("name", name);
|
||||
leagueElem.setAttribute("cost", String.valueOf(cost));
|
||||
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
|
||||
leagueElem.setAttribute("end", String.valueOf(end));
|
||||
|
||||
for (LeagueSerieData serie : series) {
|
||||
Element serieElem = doc.createElement("serie");
|
||||
serieElem.setAttribute("type", serie.getName());
|
||||
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
|
||||
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
|
||||
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
|
||||
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
|
||||
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
|
||||
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
|
||||
|
||||
leagueElem.appendChild(serieElem);
|
||||
}
|
||||
|
||||
doc.appendChild(leagueElem);
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
||||
@Path("/addConstructedLeague")
|
||||
@POST
|
||||
public String addConstructedLeague(
|
||||
@FormParam("cost") int cost,
|
||||
@FormParam("name") String name,
|
||||
@FormParam("start") String start,
|
||||
@FormParam("prizeMultiplier") float prizeMultiplier,
|
||||
@FormParam("collectionType") String collectionType,
|
||||
@FormParam("format") String[] formats,
|
||||
@FormParam("serieDuration") int[] serieDurations,
|
||||
@FormParam("maxMatches") int[] maxMatches,
|
||||
@Context HttpServletRequest request) throws Exception {
|
||||
validateLeagueAdmin(request);
|
||||
|
||||
String code = String.valueOf(System.currentTimeMillis());
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.length);
|
||||
for (int i = 0; i < formats.length; i++)
|
||||
sb.append("," + formats[i] + "," + serieDurations[i] + "," + maxMatches[i]);
|
||||
|
||||
String parameters = sb.toString();
|
||||
LeagueData leagueData = new NewConstructedLeagueData(parameters);
|
||||
List<LeagueSerieData> series = leagueData.getSeries();
|
||||
int leagueStart = series.get(0).getStart();
|
||||
int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2);
|
||||
|
||||
_leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd);
|
||||
|
||||
_leagueService.clearCache();
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.*;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
@@ -81,6 +82,7 @@ public class LeagueResource extends AbstractResource {
|
||||
|
||||
@Path("/{leagueType}")
|
||||
@GET
|
||||
@Produces(MediaType.APPLICATION_XML)
|
||||
public Document getLeagueInformation(
|
||||
@PathParam("leagueType") String leagueType,
|
||||
@QueryParam("participantId") String participantId,
|
||||
|
||||
Reference in New Issue
Block a user