first simple version of leaderboard export as HTML

This commit is contained in:
fmittag
2013-01-31 20:36:22 +01:00
parent 94a962306e
commit ac09fe757b
6 changed files with 92 additions and 26 deletions
@@ -22,7 +22,10 @@ Require-Bundle: com.sap.sailing.domain,
javax.servlet;bundle-version="2.5.0",
com.sap.sailing.domain.common,
com.sap.sailing.udpconnector,
org.jdom;bundle-version="1.0.0"
org.jdom;bundle-version="1.0.0",
javax.servlet.jsp.jstl;bundle-version="1.2.0",
javax.servlet.jsp;bundle-version="2.1.0",
javax.el;bundle-version="2.1.0"
Bundle-ClassPath: .,
lib/rome-1.0.jar
Web-ContextPath: /sailingserver
@@ -0,0 +1,66 @@
<%@ page import="java.util.*" %>
<%@ page import="com.sap.sailing.domain.leaderboard.Leaderboard" %>
<%@ page import="com.sap.sailing.domain.base.*" %>
<%@ page import="com.sap.sailing.domain.base.impl.*" %>
<%@ page import="com.sap.sailing.domain.common.*" %>
<%@ page import="com.sap.sailing.domain.tracking.*" %>
<%@ page pageEncoding="UTF-8" %>
<html>
<head>
</head>
<body>
<%
TimePoint timePoint = MillisecondsTimePoint.now();
Leaderboard leaderboard = (Leaderboard) request.getAttribute("leaderboard");
// competitors are ordered according to total rank
List<Competitor> competitorsFromBestToWorst = leaderboard.getCompetitorsFromBestToWorst(timePoint);
Map<RaceColumn, List<Competitor>> rankedCompetitorsPerColumn = new HashMap<RaceColumn, List<Competitor>>();
Iterable<RaceColumn> raceColumns = leaderboard.getRaceColumns();
%>
<h3>Leaderboard: <%= leaderboard.getName() %></h3>
<table cellpadding="2" cellspacing="2" border="1">
<tr>
<td>Rank</td>
<td>Name</td>
<td>Country</td>
<% for (RaceColumn raceColumn : raceColumns) { %>
<td><%= raceColumn.getName() %></td>
<% } %>
</tr>
<% for (Competitor competitor : competitorsFromBestToWorst) {
int totalRank = competitorsFromBestToWorst.indexOf(competitor) + 1;
Nationality nationality = competitor.getTeam().getNationality();
%>
<tr>
<td><%= totalRank %></td>
<td><%= competitor.getName() %></td>
<td><%= nationality.getCountryCode().getTwoLetterISOCode() %></td>
<% for (RaceColumn raceColumn : raceColumns) {
List<Competitor> rankedCompetitorsForColumn = rankedCompetitorsPerColumn.get(raceColumn);
if (rankedCompetitorsForColumn == null) {
rankedCompetitorsForColumn = leaderboard.getCompetitorsFromBestToWorst(raceColumn, timePoint);
rankedCompetitorsPerColumn.put(raceColumn, rankedCompetitorsForColumn);
}
Fleet fleetOfCompetitor = raceColumn.getFleetOfCompetitor(competitor);
Double netPoints = leaderboard.getNetPoints(competitor, raceColumn, timePoint);
Double totalPoints = leaderboard.getTotalPoints(competitor, raceColumn, timePoint);
MaxPointsReason maxPointsReason = leaderboard.getMaxPointsReason(competitor, raceColumn, timePoint);
// jsonEntry.put("maxPointsReason", maxPointsReason != null ? maxPointsReason.toString(): null);
int rank = rankedCompetitorsForColumn.indexOf(competitor)+1;
TrackedRace trackedRace = raceColumn.getTrackedRace(competitor);
if (trackedRace != null) {
int raceRank = trackedRace.getRank(competitor, timePoint);
}
boolean isDiscarded = leaderboard.isDiscarded(competitor, raceColumn, timePoint);
boolean isCorrected = leaderboard.getScoreCorrection().isScoreCorrected(competitor, raceColumn);
String points = totalPoints != null ? totalPoints.toString() : "&nbsp;";
%>
<td><%= points %></td>
<% } %>
</tr>
<% } %>
</table>
</body>
</html>
@@ -1,19 +0,0 @@
<%@ page import="com.sap.sailing.server.RacingEventService" %>
<%@ page import="com.sap.sailing.domain.base.*" %>
<html>
<head>
</head>
<body>
<%="Hello RacingEventService... !"%>
<%
RacingEventService racingEventService = (RacingEventService) request.getAttribute("racingEventService");
for(Event event: racingEventService.getAllEvents()) {
%>
<h3><%= event.getName() %></h3>
<%
}
%>
</body>
</html>
@@ -68,7 +68,7 @@
<servlet-name>LiveRaceRankingAsRssFeedServlet</servlet-name>
<url-pattern>/rss/liveRaceRanking</url-pattern>
</servlet-mapping>
<servlet id="jsp">
<servlet-name>jspServet</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
@@ -87,19 +87,20 @@
<load-on-startup>0</load-on-startup>
</servlet>
<!--
<servlet-mapping>
<servlet-name>jspServet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
-->
<servlet>
<servlet-name>SimpleJspForwardServlet</servlet-name>
<servlet-class>com.sap.sailing.server.gateway.impl.SimpleJspForwardServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleJspForwardServlet</servlet-name>
<url-pattern>/events</url-pattern>
<url-pattern>/html/*</url-pattern>
</servlet-mapping>
</web-app>
@@ -5,4 +5,5 @@ bin.includes = META-INF/,\
WEB-INF/,\
html/,\
lib/,\
lib/rome-1.0.jar
lib/rome-1.0.jar,\
lib/com.sun.el_1.0.0.v201105211818.jar
@@ -8,19 +8,33 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.gateway.SailingServerHttpServlet;
public class SimpleJspForwardServlet extends SailingServerHttpServlet {
private static final long serialVersionUID = -1017961881555515288L;
private static final String PARAM_NAME_LEADERBOARDNAME = "leaderboardName";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RacingEventService racingEventService = getService();
if(racingEventService != null) {
String query = request.getPathInfo();
String jspPath = "/WEB-INF/jsp";
String jspFile = "error.jsp";
if(query.equals("/leaderboard")) {
String leaderboardName = request.getParameter(PARAM_NAME_LEADERBOARDNAME);
if (leaderboardName != null) {
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
request.setAttribute("leaderboard", leaderboard);
jspFile = "leaderboard.jsp";
}
}
request.setAttribute("racingEventService", racingEventService);
ServletContext sc = getServletContext();
RequestDispatcher requestDispatcher = sc.getRequestDispatcher("/WEB-INF/jsp/listEvents.jsp");
RequestDispatcher requestDispatcher = sc.getRequestDispatcher(jspPath + "/" + jspFile);
requestDispatcher.forward(request, response);
}
}