From 1714007569ef7857d326e7864415e38ef981e777 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 19 Apr 2012 14:31:47 +0000 Subject: [PATCH] Improving the list of leagues to allow for further planning. --- .../gempukku/lotro/server/LeagueResource.java | 110 ++++++---- .../main/webapp/js/gemp-003/communication.js | 13 ++ .../webapp/js/gemp-003/leagueResultsUi.js | 189 ++++++++++-------- 3 files changed, 199 insertions(+), 113 deletions(-) diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/LeagueResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/LeagueResource.java index f00f7953a..b2797d081 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/LeagueResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/LeagueResource.java @@ -48,15 +48,13 @@ public class LeagueResource extends AbstractResource { } @GET - public Document getLeagueInformation( + public Document getNonExpiresLeagues( @QueryParam("participantId") String participantId, @Context HttpServletRequest request, @Context HttpServletResponse response) throws ParserConfigurationException { DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); - Player resourceOwner = getResourceOwnerSafely(request, participantId); - Document doc = documentBuilder.newDocument(); Element leagues = doc.createElement("leagues"); @@ -67,43 +65,12 @@ public class LeagueResource extends AbstractResource { int end = series.get(series.size() - 1).getEnd(); Element leagueElem = doc.createElement("league"); - boolean inLeague = _leagueService.isPlayerInLeague(league, resourceOwner); - leagueElem.setAttribute("member", String.valueOf(inLeague)); - leagueElem.setAttribute("joinable", String.valueOf(!inLeague && end >= DateUtils.getCurrentDate())); leagueElem.setAttribute("type", league.getType()); leagueElem.setAttribute("name", league.getName()); - leagueElem.setAttribute("cost", String.valueOf(league.getCost())); 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())); - - final List standings = _leagueService.getLeagueSerieStandings(league, serie); - for (LeagueStanding standing : standings) { - Element standingElem = doc.createElement("standing"); - setStandingAttributes(standing, standingElem); - serieElem.appendChild(standingElem); - } - - leagueElem.appendChild(serieElem); - } - - List leagueStandings = _leagueService.getLeagueStandings(league); - for (LeagueStanding standing : leagueStandings) { - Element standingElem = doc.createElement("leagueStanding"); - setStandingAttributes(standing, standingElem); - leagueElem.appendChild(standingElem); - } - leagues.appendChild(leagueElem); } @@ -112,6 +79,81 @@ public class LeagueResource extends AbstractResource { return doc; } + @Path("/{leagueType}") + @GET + public Document getLeagueInformation( + @PathParam("leagueType") String leagueType, + @QueryParam("participantId") String participantId, + @Context HttpServletRequest request, + @Context HttpServletResponse response) throws ParserConfigurationException { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + + Player resourceOwner = getResourceOwnerSafely(request, participantId); + + Document doc = documentBuilder.newDocument(); + + League league = getLeagueByType(leagueType); + + if (league == null) + sendError(Response.Status.NOT_FOUND); + + final LeagueData leagueData = league.getLeagueData(); + final List series = leagueData.getSeries(); + + int end = series.get(series.size() - 1).getEnd(); + + Element leagueElem = doc.createElement("league"); + boolean inLeague = _leagueService.isPlayerInLeague(league, resourceOwner); + + leagueElem.setAttribute("member", String.valueOf(inLeague)); + leagueElem.setAttribute("joinable", String.valueOf(!inLeague && end >= DateUtils.getCurrentDate())); + leagueElem.setAttribute("type", league.getType()); + leagueElem.setAttribute("name", league.getName()); + leagueElem.setAttribute("cost", String.valueOf(league.getCost())); + 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())); + + final List standings = _leagueService.getLeagueSerieStandings(league, serie); + for (LeagueStanding standing : standings) { + Element standingElem = doc.createElement("standing"); + setStandingAttributes(standing, standingElem); + serieElem.appendChild(standingElem); + } + + leagueElem.appendChild(serieElem); + } + + List leagueStandings = _leagueService.getLeagueStandings(league); + for (LeagueStanding standing : leagueStandings) { + Element standingElem = doc.createElement("leagueStanding"); + setStandingAttributes(standing, standingElem); + leagueElem.appendChild(standingElem); + } + + doc.appendChild(leagueElem); + + return doc; + } + + public League getLeagueByType(String type) { + for (League league : _leagueService.getActiveLeagues()) { + if (league.getType().equals(type)) + return league; + } + return null; + } + private void setStandingAttributes(LeagueStanding standing, Element standingElem) { standingElem.setAttribute("player", standing.getPlayerName()); standingElem.setAttribute("standing", String.valueOf(standing.getStanding())); diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/communication.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/communication.js index 5f624b76a..8937e99a0 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/communication.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/communication.js @@ -81,6 +81,19 @@ var GempLotrCommunication = Class.extend({ }); }, + getLeague: function(type, callback, errorMap) { + $.ajax({ + type: "GET", + url: this.url + "/league/" + type, + cache: false, + data: { + participanId: getUrlParam("participantId") }, + success: this.deliveryCheck(callback), + error: this.errorCheck(errorMap), + dataType: "xml" + }); + }, + joinLeague: function(code, callback, errorMap) { $.ajax({ type: "POST", diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/leagueResultsUi.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/leagueResultsUi.js index ff414f93f..1789c4778 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/leagueResultsUi.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-003/leagueResultsUi.js @@ -31,6 +31,103 @@ var LeagueResultsUI = Class.extend({ return date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8); }, + loadedLeague: function(xml) { + var that = this; + log(xml); + var root = xml.documentElement; + if (root.tagName == 'league') { + var league = root; + + var leagueName = league.getAttribute("name"); + var leagueType = league.getAttribute("type"); + var cost = parseInt(league.getAttribute("cost")); + var start = league.getAttribute("start"); + var end = league.getAttribute("end"); + var member = league.getAttribute("member"); + var joinable = league.getAttribute("joinable"); + + var leagueText = leagueName; + $("#leagueExtraInfo").append("
" + leagueText + "
"); + + var costStr = formatPrice(cost); + $("#leagueExtraInfo").append("
Cost: " + costStr + "
"); + + if (member == "true") + $("#leagueExtraInfo").append("
You are already a member of this league.
"); + else if (joinable == "true") { + var joinBut = $("").button(); + + var joinFunc = (function(leagueCode, costString) { + return function() { + that.displayBuyAction("Do you want to join the league by paying " + costString + "?", + function() { + that.communication.joinLeague(leagueCode, function() { + that.loadResults(); + }, { + "409": function() { + alert("You don't have enough funds to join this league."); + } + }); + }); + }; + })(leagueType, costStr); + + joinBut.click(joinFunc); + var joinDiv = $("
You're not a member of this league.
"); + joinDiv.append(joinBut); + $("#leagueExtraInfo").append(joinDiv); + } + + var tabDiv = $("
"); + var tabNavigation = $("
    "); + tabDiv.append(tabNavigation); + + // Overall tab + var tabContent = $("
    "); + + var standings = league.getElementsByTagName("leagueStanding"); + if (standings.length > 0) + tabContent.append(this.createStandingsTable(standings)); + tabDiv.append(tabContent); + + tabNavigation.append("
  • Overall results
  • "); + + var series = league.getElementsByTagName("serie"); + for (var j = 0; j < series.length; j++) { + + var tabContent = $("
    "); + + var serie = series[j]; + var serieName = serie.getAttribute("type"); + var serieStart = serie.getAttribute("start"); + var serieEnd = serie.getAttribute("end"); + var maxMatches = serie.getAttribute("maxMatches"); + var format = serie.getAttribute("format"); + var collection = serie.getAttribute("collection"); + var limited = serie.getAttribute("limited"); + + var serieText = serieName + " - " + this.getDateString(serieStart) + " to " + this.getDateString(serieEnd); + $("#leagueExtraInfo").append("
    " + serieText + "
    "); + + $("#leagueExtraInfo").append("
    Format: " + ((limited == "true") ? "Limited" : "Constructed") + " " + format + "
    "); + $("#leagueExtraInfo").append("
    Collection: " + collection + "
    "); + + tabContent.append("
    Maximum ranked matches in serie: " + maxMatches + "
    "); + + var standings = serie.getElementsByTagName("standing"); + if (standings.length > 0) + tabContent.append(this.createStandingsTable(standings)); + tabDiv.append(tabContent); + + tabNavigation.append("
  • Serie " + (j + 1) + "
  • "); + } + + tabDiv.tabs(); + + $("#leagueExtraInfo").append(tabDiv); + } + }, + loadedLeagueResults: function(xml) { var that = this; log(xml); @@ -43,94 +140,28 @@ var LeagueResultsUI = Class.extend({ var league = leagues[i]; var leagueName = league.getAttribute("name"); var leagueType = league.getAttribute("type"); - var cost = parseInt(league.getAttribute("cost")); var start = league.getAttribute("start"); var end = league.getAttribute("end"); - var member = league.getAttribute("member"); - var joinable = league.getAttribute("joinable"); - var leagueText = leagueName; - $("#leagueResults").append("
    " + leagueText + "
    "); - - var costStr = formatPrice(cost); - $("#leagueResults").append("
    Cost: " + costStr + "
    "); + $("#leagueResults").append("
    " + leagueName + "
    "); var duration = this.getDateString(start) + " to " + this.getDateString(end); $("#leagueResults").append("
    Duration (GMT+0): " + duration + "
    "); - if (member == "true") - $("#leagueResults").append("
    You are already a member of this league.
    "); - else if (joinable == "true") { - var joinBut = $("").button(); - var joinFunc = (function(leagueCode, costString) { - return function() { - that.displayBuyAction("Do you want to join the league by paying " + costString + "?", - function() { - that.communication.joinLeague(leagueCode, function() { - that.loadResults(); - }, { - "409": function() { - alert("You don't have enough funds to join this league."); - } + var detailsBut = $("").button(); + detailsBut.click( + (function(type) { + return function() { + that.communication.getLeague(type, + function(xml) { + that.loadedLeague(xml); }); - }); - }; - })(leagueType, costStr); - - joinBut.click(joinFunc); - var joinDiv = $("
    You're not a member of this league.
    "); - joinDiv.append(joinBut); - $("#leagueResults").append(joinDiv); - } - - var tabDiv = $("
    "); - var tabNavigation = $("
      "); - tabDiv.append(tabNavigation); - - // Overall tab - var tabContent = $("
      "); - - var standings = league.getElementsByTagName("leagueStanding"); - if (standings.length > 0) - tabContent.append(this.createStandingsTable(standings)); - tabDiv.append(tabContent); - - tabNavigation.append("
    • Overall results
    • "); - - var series = league.getElementsByTagName("serie"); - for (var j = 0; j < series.length; j++) { - - var tabContent = $("
      "); - - var serie = series[j]; - var serieName = serie.getAttribute("type"); - var serieStart = serie.getAttribute("start"); - var serieEnd = serie.getAttribute("end"); - var maxMatches = serie.getAttribute("maxMatches"); - var format = serie.getAttribute("format"); - var collection = serie.getAttribute("collection"); - var limited = serie.getAttribute("limited"); - - var serieText = serieName + " - " + this.getDateString(serieStart) + " to " + this.getDateString(serieEnd); - $("#leagueResults").append("
      " + serieText + "
      "); - - $("#leagueResults").append("
      Format: " + ((limited == "true") ? "Limited" : "Constructed") + " " + format + "
      "); - $("#leagueResults").append("
      Collection: " + collection + "
      "); - - tabContent.append("
      Maximum ranked matches in serie: " + maxMatches + "
      "); - - var standings = serie.getElementsByTagName("standing"); - if (standings.length > 0) - tabContent.append(this.createStandingsTable(standings)); - tabDiv.append(tabContent); - - tabNavigation.append("
    • Serie " + (j + 1) + "
    • "); - } - - tabDiv.tabs(); - - $("#leagueResults").append(tabDiv); + }; + })(leagueType)); + $("#leagueResults").append(detailsBut); } + + $("#leagueResults").append("
      "); } },