Adding races affected by wind import to servlet response.

This commit is contained in:
Jens Rommel committed 2013-09-18 09:01:32 +02:00
1 parent eb047e4c9e
commit 56e398a943
1 file changed
+55 -2
@@ -17,6 +17,8 @@ import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.RegattaIdentifier;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.common.WindSourceType;
import com.sap.sailing.domain.common.impl.WindSourceImpl;
@@ -26,11 +28,56 @@ import com.sap.sailing.domain.tracking.Wind;
import com.sap.sailing.server.gateway.SailingServerHttpServlet;
public class WindImportServlet extends SailingServerHttpServlet {
private static final long serialVersionUID = 1L;
private static final WindSource EXPEDITION_WIND_SOURCE = new WindSourceImpl(WindSourceType.EXPEDITION);
static class WindImportResult {
private final RegattaIdentifier regattaIdentifier;
private final RegattaAndRaceIdentifier raceIdentifier;
private int count;
private Wind firstWind;
private Wind lastWind;
public void update(Wind newWind) {
count++;
if (firstWind == null || newWind.getTimePoint().before(firstWind.getTimePoint())) {
firstWind = newWind;
}
if (lastWind == null || newWind.getTimePoint().after(lastWind.getTimePoint())) {
lastWind = newWind;
}
}
public RegattaIdentifier getRegattaIdentifier() {
return regattaIdentifier;
}
public RegattaAndRaceIdentifier getRaceIdentifier() {
return raceIdentifier;
}
public WindImportResult(RegattaIdentifier regattaIdentifier, RegattaAndRaceIdentifier raceIdentifier) {
this.regattaIdentifier = regattaIdentifier;
this.raceIdentifier = raceIdentifier;
}
public int getCount() {
return count;
}
public Wind getFirstWind() {
return firstWind;
}
public Wind getLastWind() {
return lastWind;
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if (!ServletFileUpload.isMultipartContent(req)) {
@@ -41,6 +88,8 @@ public class WindImportServlet extends SailingServerHttpServlet {
try {
List<WindImportResult> windImportResults = new ArrayList<WindImportResult>();
Iterable<Regatta> allRegattas = getService().getAllRegattas();
Collection<FileItem> files = readInput(req);
@@ -51,8 +100,12 @@ public class WindImportServlet extends SailingServerHttpServlet {
Iterable<RaceDefinition> allRaceDefinitions = regatta.getAllRaces();
for (RaceDefinition raceDefinition : allRaceDefinitions) {
DynamicTrackedRace trackedRace = trackedRegatta.getTrackedRace(raceDefinition);
WindImportResult windImportResult = new WindImportResult(regatta.getRegattaIdentifier(), trackedRace.getRaceIdentifier());
windImportResults.add(windImportResult);
for (Wind wind : windFixes) {
trackedRace.recordWind(wind, EXPEDITION_WIND_SOURCE);
if (trackedRace.recordWind(wind, EXPEDITION_WIND_SOURCE)) {
windImportResult.update(wind);
}
}
}
}