added .csv export for ESS40

added details parameter for html export of overall leaderboards
This commit is contained in:
fmittag committed 2013-02-07 14:55:51 +01:00
1 parent 833b3abd7d
commit 5c4fa62df7
10 files changed
+266 -63

No files matched your search

@@ -0,0 +1,45 @@
package com.sap.sailing.server.gateway;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
/**
* Base servlet for CSV (comma separated file) exports
* @author Frank
*/
@SuppressWarnings("serial")
public abstract class AbstractCSVHttpServlet extends SailingServerHttpServlet {
protected void setCSVResponseHeader(HttpServletResponse resp, String filename) {
resp.setContentType("text/csv");
resp.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
resp.setCharacterEncoding("UTF-8");
}
protected <T> void writeCsv (List<List<T>> csv, char separator, boolean quoteStrings, OutputStream output) throws IOException {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8"));
for (List<T> row : csv) {
StringBuilder line = new StringBuilder();
for (Iterator<T> iter = row.iterator(); iter.hasNext();) {
T fieldObject = iter.next();
String field = String.valueOf(fieldObject).replace("\"", "\"\"");
if(fieldObject instanceof String && quoteStrings) {
field = '"' + field + '"';
}
line.append(field);
if (iter.hasNext()) {
line.append(separator);
}
}
writer.write(line.toString());
writer.newLine();
}
writer.flush();
}
}
@@ -2,9 +2,12 @@ package com.sap.sailing.server.gateway;
import javax.servlet.http.HttpServletResponse;
public abstract class JsonExportServlet extends SailingServerHttpServlet {
private static final long serialVersionUID = 7007196727805110847L;
/**
* Base servlet for json exports
* @author Frank
*/
@SuppressWarnings("serial")
public abstract class AbstractJsonHttpServlet extends SailingServerHttpServlet {
protected void setJsonResponseHeader(HttpServletResponse resp) {
// to allow access to the json document directly from a client side javascript
@@ -22,9 +22,9 @@ import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.gateway.JsonExportServlet;
import com.sap.sailing.server.gateway.AbstractJsonHttpServlet;
public class LeaderboardGroupJsonExportServlet extends JsonExportServlet {
public class LeaderboardGroupJsonExportServlet extends AbstractJsonHttpServlet {
private static final long serialVersionUID = 1351616646322956825L;
private static final String PARAM_NAME_LEADERBOARDGROUPNAME = "leaderboardGroupName";
@@ -23,9 +23,9 @@ import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.server.gateway.JsonExportServlet;
import com.sap.sailing.server.gateway.AbstractJsonHttpServlet;
public class LeaderboardJsonExportServlet extends JsonExportServlet {
public class LeaderboardJsonExportServlet extends AbstractJsonHttpServlet {
private static final long serialVersionUID = -2460691283231361152L;
private static final String PARAM_NAME_LEADERBOARDNAME = "leaderboardName";
@@ -10,9 +10,9 @@ import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONArray;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.server.gateway.JsonExportServlet;
import com.sap.sailing.server.gateway.AbstractJsonHttpServlet;
public class LeaderboardsJsonExportServlet extends JsonExportServlet {
public class LeaderboardsJsonExportServlet extends AbstractJsonHttpServlet {
private static final long serialVersionUID = -2193421590275280102L;
@Override
@@ -34,10 +34,10 @@ import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.Wind;
import com.sap.sailing.server.gateway.JsonExportServlet;
import com.sap.sailing.server.gateway.AbstractJsonHttpServlet;
import com.sap.sailing.util.InvalidDateException;
public class RegattaAndRaceDataJsonExportServlet extends JsonExportServlet {
public class RegattaAndRaceDataJsonExportServlet extends AbstractJsonHttpServlet {
private static final Logger logger = Logger.getLogger(RegattaAndRaceDataJsonExportServlet.class.getName());
private static final long serialVersionUID = 1333207389294903999L;