From 2a7221c2c6b1688fe390aa712abd030e349cd6bb Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 27 Jul 2018 17:11:50 +0200 Subject: [PATCH] started to move update handler classes to com.sap.sailing.domain bundle Change-Id: I821f633ee1e5f1db970017788473b4edcce8cbd8 --- .../impl/DomainFactoryImpl.java | 9 ++- .../TracTracCourseDesignUpdateHandler.java | 62 +-------------- .../META-INF/MANIFEST.MF | 7 ++ .../domain/base/impl/DomainFactoryImpl.java | 2 +- .../impl/CourseDesignUpdateHandler.java | 78 +++++++++++++++++++ .../impl/FinishTimeUpdateHandler.java} | 13 ++-- .../tracking/impl/RaceAbortedHandler.java} | 10 +-- .../tracking/impl/StartTimeResetHandler.java} | 10 +-- .../impl/StartTimeUpdateHandler.java} | 8 +- .../domain/tracking}/impl/UpdateHandler.java | 49 +++++++----- .../domain/tracking/impl}/UpdateResponse.java | 3 +- .../impl/UpdateResponseDeserializer.java | 3 +- .../tracking}/impl/UpdateResponseImpl.java | 4 +- 13 files changed, 147 insertions(+), 111 deletions(-) create mode 100755 java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseDesignUpdateHandler.java rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracFinishTimeUpdateHandler.java => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/FinishTimeUpdateHandler.java} (84%) rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceAbortedHandler.java => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceAbortedHandler.java} (78%) rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeResetHandler.java} (73%) rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeUpdateHandler.java} (93%) rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking}/impl/UpdateHandler.java (83%) rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl}/UpdateResponse.java (63%) rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking}/impl/UpdateResponseDeserializer.java (86%) rename java/{com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter => com.sap.sailing.domain/src/com/sap/sailing/domain/tracking}/impl/UpdateResponseImpl.java (78%) diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index 1d6ccf2ae2b..ed867cb4ed8 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -73,6 +73,9 @@ import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.TrackedRegattaRegistry; import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tracking.WindTrack; +import com.sap.sailing.domain.tracking.impl.FinishTimeUpdateHandler; +import com.sap.sailing.domain.tracking.impl.RaceAbortedHandler; +import com.sap.sailing.domain.tracking.impl.StartTimeUpdateHandler; import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.sap.sailing.domain.tractracadapter.JSONService; import com.sap.sailing.domain.tractracadapter.MetadataParser; @@ -678,15 +681,15 @@ public class DomainFactoryImpl implements DomainFactory { tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, raceDefinition.getId(), tractracRace, this); trackedRace.addCourseDesignChangedListener(courseDesignHandler); - TracTracStartTimeUpdateHandler startTimeHandler = new TracTracStartTimeUpdateHandler( + StartTimeUpdateHandler startTimeHandler = new StartTimeUpdateHandler( tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, raceDefinition.getId(), trackedRace.getTrackedRegatta().getRegatta()); trackedRace.addStartTimeChangedListener(startTimeHandler); - TracTracRaceAbortedHandler raceAbortedHandler = new TracTracRaceAbortedHandler( + RaceAbortedHandler raceAbortedHandler = new RaceAbortedHandler( tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, raceDefinition.getId()); trackedRace.addRaceAbortedListener(raceAbortedHandler); - trackedRace.addListener(new TracTracFinishTimeUpdateHandler(tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, + trackedRace.addListener(new FinishTimeUpdateHandler(tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, raceDefinition.getId(), trackedRace.getTrackedRegatta().getRegatta()).getListener()); } diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracCourseDesignUpdateHandler.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracCourseDesignUpdateHandler.java index c2167e8d888..18984574043 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracCourseDesignUpdateHandler.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracCourseDesignUpdateHandler.java @@ -1,86 +1,32 @@ package com.sap.sailing.domain.tractracadapter.impl; -import java.io.IOException; import java.io.Serializable; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; import java.net.URI; -import java.net.URL; import java.util.Iterator; -import java.util.logging.Logger; - -import org.json.simple.JSONObject; -import org.json.simple.parser.ParseException; import com.sap.sailing.domain.base.ControlPoint; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.base.impl.CourseDataImpl; -import com.sap.sailing.domain.tracking.CourseDesignChangedListener; +import com.sap.sailing.domain.tracking.impl.CourseDesignUpdateHandler; import com.sap.sailing.domain.tractracadapter.DomainFactory; -import com.sap.sailing.server.gateway.serialization.JsonSerializer; -import com.sap.sailing.server.gateway.serialization.coursedata.impl.ControlPointJsonSerializer; -import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer; -import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseJsonSerializer; -import com.sap.sailing.server.gateway.serialization.coursedata.impl.GateJsonSerializer; -import com.sap.sailing.server.gateway.serialization.coursedata.impl.MarkJsonSerializer; -import com.sap.sailing.server.gateway.serialization.coursedata.impl.WaypointJsonSerializer; import com.sap.sse.common.Util; import com.tractrac.model.lib.api.event.IRace; import com.tractrac.model.lib.api.route.IControl; -public class TracTracCourseDesignUpdateHandler extends UpdateHandler implements CourseDesignChangedListener { - - private final static String ACTION = "update_course"; - - private final static Logger logger = Logger.getLogger(TracTracCourseDesignUpdateHandler.class.getName()); - private final JsonSerializer courseSerializer; +public class TracTracCourseDesignUpdateHandler extends CourseDesignUpdateHandler { private final IRace tractracRace; private final DomainFactory domainFactory; public TracTracCourseDesignUpdateHandler(URI updateURI, String tracTracUsername, String tracTracPassword, Serializable tracTracEventId, Serializable raceId, IRace tractracRace, DomainFactory domainFactory) { - super(updateURI, ACTION, tracTracUsername, tracTracPassword, tracTracEventId, raceId); + super(updateURI, tracTracUsername, tracTracPassword, tracTracEventId, raceId); this.domainFactory = domainFactory; this.tractracRace = tractracRace; - this.courseSerializer = new CourseJsonSerializer( - new CourseBaseJsonSerializer( - new WaypointJsonSerializer( - new ControlPointJsonSerializer( - new MarkJsonSerializer(), - new GateJsonSerializer(new MarkJsonSerializer()))))); } @Override - public void courseDesignChanged(final CourseBase newCourseDesign) throws MalformedURLException, IOException { - if (!isActive()) { - logger.info("Not sending course update to TracTrac because no URL has been provided."); - return; - } - final CourseBase newCourseDesignWithExistingControlPoints = replaceControlPointsByMatchingExistingControlPoints(newCourseDesign); - JSONObject serializedCourseDesign = courseSerializer.serialize(newCourseDesignWithExistingControlPoints); - String payload = serializedCourseDesign.toJSONString(); - URL currentCourseDesignURL = buildUpdateURL(); - logger.info("Using " + currentCourseDesignURL.toString() + " for the course update!"); - logger.info("Payload is " + payload); - HttpURLConnection connection = (HttpURLConnection) currentCourseDesignURL.openConnection(); - try { - setConnectionPropertiesAndSendWithPayload(connection, payload); - try { - checkAndLogUpdateResponse(connection); - } catch (ParseException e) { - e.printStackTrace(); - } - } finally { - if (connection != null) { - connection.disconnect(); - } else { - logger.severe("Connection to TracTrac Course Update URL " + currentCourseDesignURL.toString() + " could not be established"); - } - } - } - - private CourseBase replaceControlPointsByMatchingExistingControlPoints(CourseBase courseDesign) { + protected CourseBase replaceControlPointsByMatchingExistingControlPoints(CourseBase courseDesign) { final Iterable candidates = domainFactory.getControlsForCourseArea(tractracRace.getEvent(), tractracRace.getCourseArea()); final CourseBase result = new CourseDataImpl(courseDesign.getName()); int zeroBasedPosition = 0; diff --git a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF index 6f6d9a68bbe..8d5cf1bb0a9 100755 --- a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF @@ -47,5 +47,12 @@ Require-Bundle: com.googlecode.java-diff-utils;bundle-version="1.3.0", com.sap.sse.shared.android, org.apache.commons.math, com.sap.sailing.declination, + com.sap.sailing.server.gateway.serialization.shared.android, com.sap.sse.datamining.annotations +Import-Package: org.apache.http, + org.apache.http.client;version="[4.2.5,4.3.0)", + org.apache.http.client.entity;version="[4.2.5,4.3.0)", + org.apache.http.client.methods;version="[4.2.5,4.3.0)", + org.apache.http.impl.client;version="[4.2.5,4.3.0)", + org.apache.http.message;version="[4.2.5,4.3.0)" Automatic-Module-Name: com.sap.sailing.domain diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java index 01e73aeacfe..1185b0861b4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/DomainFactoryImpl.java @@ -205,7 +205,7 @@ public class DomainFactoryImpl extends SharedDomainFactoryImpl implements Domain raceDTO.status.status = trackedRace.getStatus() == null ? null : trackedRace.getStatus().getStatus(); raceDTO.status.loadingProgress = trackedRace.getStatus() == null ? 0.0 : trackedRace.getStatus().getLoadingProgress(); } - + @Override public TrackedRaceDTO createTrackedRaceDTO(TrackedRace trackedRace) { TrackedRaceDTO trackedRaceDTO = new TrackedRaceDTO(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseDesignUpdateHandler.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseDesignUpdateHandler.java new file mode 100755 index 00000000000..1ad1a82c1c5 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CourseDesignUpdateHandler.java @@ -0,0 +1,78 @@ +package com.sap.sailing.domain.tracking.impl; + +import java.io.IOException; +import java.io.Serializable; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; +import java.util.logging.Logger; + +import org.json.simple.JSONObject; +import org.json.simple.parser.ParseException; + +import com.sap.sailing.domain.base.CourseBase; +import com.sap.sailing.domain.tracking.CourseDesignChangedListener; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sailing.server.gateway.serialization.coursedata.impl.ControlPointJsonSerializer; +import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer; +import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseJsonSerializer; +import com.sap.sailing.server.gateway.serialization.coursedata.impl.GateJsonSerializer; +import com.sap.sailing.server.gateway.serialization.coursedata.impl.MarkJsonSerializer; +import com.sap.sailing.server.gateway.serialization.coursedata.impl.WaypointJsonSerializer; + +public class CourseDesignUpdateHandler extends UpdateHandler implements CourseDesignChangedListener { + + private final static String ACTION = "update_course"; + + private final static Logger logger = Logger.getLogger(CourseDesignUpdateHandler.class.getName()); + private final JsonSerializer courseSerializer; + + public CourseDesignUpdateHandler(URI updateURI, String username, String password, Serializable eventId, Serializable raceId) { + super(updateURI, ACTION, username, password, eventId, raceId); + this.courseSerializer = new CourseJsonSerializer( + new CourseBaseJsonSerializer( + new WaypointJsonSerializer( + new ControlPointJsonSerializer( + new MarkJsonSerializer(), + new GateJsonSerializer(new MarkJsonSerializer()))))); + } + + @Override + public void courseDesignChanged(final CourseBase newCourseDesign) throws MalformedURLException, IOException { + if (!isActive()) { + logger.info("Not sending course update to TracTrac because no URL has been provided."); + return; + } + final CourseBase newCourseDesignWithExistingControlPoints = replaceControlPointsByMatchingExistingControlPoints(newCourseDesign); + JSONObject serializedCourseDesign = courseSerializer.serialize(newCourseDesignWithExistingControlPoints); + String payload = serializedCourseDesign.toJSONString(); + URL currentCourseDesignURL = buildUpdateURL(); + logger.info("Using " + currentCourseDesignURL.toString() + " for the course update!"); + logger.info("Payload is " + payload); + HttpURLConnection connection = (HttpURLConnection) currentCourseDesignURL.openConnection(); + try { + setConnectionPropertiesAndSendWithPayload(connection, payload); + try { + checkAndLogUpdateResponse(connection); + } catch (ParseException e) { + e.printStackTrace(); + } + } finally { + if (connection != null) { + connection.disconnect(); + } else { + logger.severe("Connection to TracTrac Course Update URL " + currentCourseDesignURL.toString() + " could not be established"); + } + } + } + + /** + * This default implementation returns the {@code courseDesign} unchanged. Subclasses have the possibility to + * override this method in order to replace individual course marks provided in a detailed course design, + * based on the actual course marks available. + */ + protected CourseBase replaceControlPointsByMatchingExistingControlPoints(CourseBase courseDesign) { + return courseDesign; + } +} diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracFinishTimeUpdateHandler.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/FinishTimeUpdateHandler.java similarity index 84% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracFinishTimeUpdateHandler.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/FinishTimeUpdateHandler.java index dfae3907cfa..e5c027ec562 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracFinishTimeUpdateHandler.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/FinishTimeUpdateHandler.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.tractracadapter.impl; +package com.sap.sailing.domain.tracking.impl; import java.io.BufferedReader; import java.io.IOException; @@ -20,12 +20,11 @@ import org.json.simple.parser.ParseException; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.tracking.TrackedRace; -import com.sap.sailing.domain.tracking.impl.AbstractRaceChangeListener; import com.sap.sse.common.TimePoint; import com.sap.sse.util.LaxRedirectStrategyForAllRedirectResponseCodes; -public class TracTracFinishTimeUpdateHandler extends UpdateHandler { - private final static Logger logger = Logger.getLogger(TracTracFinishTimeUpdateHandler.class.getName()); +public class FinishTimeUpdateHandler extends UpdateHandler { + private final static Logger logger = Logger.getLogger(FinishTimeUpdateHandler.class.getName()); private final static String ACTION_STOP_TRACKING = "end_tracking"; private final static String FIELD_TRACKING_END_TIME = "tracking_end_time"; @@ -36,9 +35,9 @@ public class TracTracFinishTimeUpdateHandler extends UpdateHandler { */ private final Regatta regatta; - public TracTracFinishTimeUpdateHandler(URI updateURI, String tracTracUsername, String tracTracPassword, - Serializable tracTracEventId, Serializable raceId, Regatta regatta) { - super(updateURI, ACTION_STOP_TRACKING, tracTracUsername, tracTracPassword, tracTracEventId, raceId); + public FinishTimeUpdateHandler(URI updateURI, String username, String password, + Serializable eventId, Serializable raceId, Regatta regatta) { + super(updateURI, ACTION_STOP_TRACKING, username, password, eventId, raceId); this.regatta = regatta; } diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceAbortedHandler.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceAbortedHandler.java similarity index 78% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceAbortedHandler.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceAbortedHandler.java index 1963e3f4dc5..50b723a4405 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceAbortedHandler.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/RaceAbortedHandler.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.tractracadapter.impl; +package com.sap.sailing.domain.tracking.impl; import java.io.IOException; import java.io.Serializable; @@ -15,14 +15,14 @@ import org.json.simple.parser.ParseException; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.tracking.RaceAbortedListener; -public class TracTracRaceAbortedHandler extends UpdateHandler implements RaceAbortedListener { +public class RaceAbortedHandler extends UpdateHandler implements RaceAbortedListener { private final static String ACTION = "update_race_status"; - private final static Logger logger = Logger.getLogger(TracTracRaceAbortedHandler.class.getName()); + private final static Logger logger = Logger.getLogger(RaceAbortedHandler.class.getName()); - public TracTracRaceAbortedHandler(URI updateURI, String tracTracUsername, String tracTracPassword, Serializable tracTracEventId, Serializable raceId) { - super(updateURI, ACTION, tracTracUsername, tracTracPassword, tracTracEventId, raceId); + public RaceAbortedHandler(URI updateURI, String username, String password, Serializable eventId, Serializable raceId) { + super(updateURI, ACTION, username, password, eventId, raceId); } @Override diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeResetHandler.java similarity index 73% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeResetHandler.java index dc46e1b23a9..941d74e20ee 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeResetHandler.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeResetHandler.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.tractracadapter.impl; +package com.sap.sailing.domain.tracking.impl; import java.io.IOException; import java.io.Serializable; @@ -13,14 +13,14 @@ import org.json.simple.parser.ParseException; import com.sap.sailing.domain.tracking.StartTimeChangedListener; import com.sap.sse.common.TimePoint; -public class TracTracStartTimeResetHandler extends UpdateHandler implements StartTimeChangedListener { +public class StartTimeResetHandler extends UpdateHandler implements StartTimeChangedListener { private static final String ACTION = "resetStartTime"; - private final static Logger logger = Logger.getLogger(TracTracStartTimeResetHandler.class.getName()); + private final static Logger logger = Logger.getLogger(StartTimeResetHandler.class.getName()); - public TracTracStartTimeResetHandler(URI updateURI, String tracTracUsername, String tracTracPassword, Serializable tracTracEventId, Serializable raceId) { - super(updateURI, ACTION, tracTracUsername, tracTracPassword, tracTracEventId, raceId); + public StartTimeResetHandler(URI updateURI, String username, String password, Serializable eventId, Serializable raceId) { + super(updateURI, ACTION, username, password, eventId, raceId); } @Override diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeUpdateHandler.java similarity index 93% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeUpdateHandler.java index eaef290e628..8dab411be13 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracStartTimeUpdateHandler.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/StartTimeUpdateHandler.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.tractracadapter.impl; +package com.sap.sailing.domain.tracking.impl; import java.io.BufferedReader; import java.io.IOException; @@ -28,8 +28,8 @@ import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.TimePoint; import com.sap.sse.util.LaxRedirectStrategyForAllRedirectResponseCodes; -public class TracTracStartTimeUpdateHandler extends UpdateHandler implements StartTimeChangedListener { - private final static Logger logger = Logger.getLogger(TracTracStartTimeUpdateHandler.class.getName()); +public class StartTimeUpdateHandler extends UpdateHandler implements StartTimeChangedListener { + private final static Logger logger = Logger.getLogger(StartTimeUpdateHandler.class.getName()); private final static String ACTION = "update_race_start_time"; private final static String ACTION_START_TRACKING = "start_tracking"; @@ -42,7 +42,7 @@ public class TracTracStartTimeUpdateHandler extends UpdateHandler implements Sta */ private final Regatta regatta; - public TracTracStartTimeUpdateHandler(URI updateURI, String tracTracUsername, String tracTracPassword, + public StartTimeUpdateHandler(URI updateURI, String tracTracUsername, String tracTracPassword, Serializable tracTracEventId, Serializable raceId, Regatta regatta) { super(updateURI, ACTION, tracTracUsername, tracTracPassword, tracTracEventId, raceId); this.regatta = regatta; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateHandler.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateHandler.java similarity index 83% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateHandler.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateHandler.java index f87d3c8a814..97cd7a4a61d 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateHandler.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateHandler.java @@ -1,4 +1,4 @@ -package com.sap.sailing.domain.tractracadapter.impl; +package com.sap.sailing.domain.tracking.impl; import java.io.BufferedReader; import java.io.DataOutputStream; @@ -25,21 +25,28 @@ import org.json.simple.JSONObject; import org.json.simple.JSONValue; import org.json.simple.parser.ParseException; -import com.sap.sailing.domain.tractracadapter.UpdateResponse; +import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.Helpers; import com.sap.sse.common.Duration; +/** + * An update handler can be registered as a listener on a {@link TrackedRace} and can then propagate information to + * an external service. This can, e.g., be a tracking partner's system that is interested in receiving race status + * updates such as new start times or postponements. + * + * @author Axel Uhl (d043530) + * + */ public class UpdateHandler { - private final static Logger logger = Logger.getLogger(UpdateHandler.class.getName()); private JsonDeserializer updateDeserializer; private final URI baseURI; - private final String tracTracUsername; - private final String tracTracPassword; - private final Serializable tracTracEventId; + private final String username; + private final String password; + private final Serializable eventId; private final Serializable raceId; private final String action; private final boolean active; @@ -53,16 +60,16 @@ public class UpdateHandler { private final static String ResponseCodeForFailure = "FAILURE"; private final static String UpdateUrlTemplate = "%s%s?eventid=%s&raceid=%s&username=%s&password=%s"; - public UpdateHandler(URI updateURI, String action, String tracTracUsername, String tracTracPassword, Serializable tracTracEventId, Serializable raceId) { + public UpdateHandler(URI updateURI, String action, String username, String password, Serializable eventId, Serializable raceId) { this.baseURI = updateURI; this.action = action; - this.tracTracUsername = tracTracUsername; - this.tracTracPassword = tracTracPassword; - this.tracTracEventId = tracTracEventId; + this.username = username; + this.password = password; + this.eventId = eventId; this.raceId = raceId; this.updateDeserializer = new UpdateResponseDeserializer(); if (updateURI != null && !updateURI.toString().equals("")) { - logger.info("Activating TracTrac update handler "+this+" for race with ID "+raceId); + logger.info("Activating update handler "+this+" for race with ID "+raceId); this.active = true; } else { this.active = false; @@ -87,10 +94,10 @@ public class UpdateHandler { */ protected List getDefaultParametersAsNewList() { final List result = new ArrayList<>(); - result.add(new BasicNameValuePair("eventid", tracTracEventId.toString())); + result.add(new BasicNameValuePair("eventid", eventId.toString())); result.add(new BasicNameValuePair("raceid", this.raceId.toString())); - result.add(new BasicNameValuePair("username", tracTracUsername)); - result.add(new BasicNameValuePair("password", tracTracPassword)); + result.add(new BasicNameValuePair("username", username)); + result.add(new BasicNameValuePair("password", password)); return result; } @@ -103,10 +110,10 @@ public class UpdateHandler { String url = String.format(UpdateUrlTemplate, serverUpdateURI.toString(), this.action, - URLEncoder.encode(this.tracTracEventId.toString(), EncodingUtf8), + URLEncoder.encode(this.eventId.toString(), EncodingUtf8), URLEncoder.encode(this.raceId.toString(), EncodingUtf8), - URLEncoder.encode(tracTracUsername, EncodingUtf8), - URLEncoder.encode(tracTracPassword, EncodingUtf8)); + URLEncoder.encode(username, EncodingUtf8), + URLEncoder.encode(password, EncodingUtf8)); for (Entry entry : additionalParameters.entrySet()) { url += String.format("&%s=%s", @@ -123,7 +130,7 @@ public class UpdateHandler { protected void checkAndLogUpdateResponse(HttpURLConnection connection) throws IOException, ParseException { connection.setConnectTimeout(10000/*milliseconds*/); connection.connect(); - BufferedReader reader = getResponseOnUpdateFromTracTrac(connection); + BufferedReader reader = getResponseOnUpdateFromProvider(connection); parseAndLogResponse(reader); } @@ -133,13 +140,13 @@ public class UpdateHandler { JSONObject responseObject = Helpers.toJSONObjectSafe(responseBody); UpdateResponse updateResponse = updateDeserializer.deserialize(responseObject); if (updateResponse.getStatus().equals(ResponseCodeForFailure)) { - logger.severe("Failed to send data to TracTrac, got following response: " + updateResponse.getMessage()); + logger.severe("Failed to send data to provider, got following response: " + updateResponse.getMessage()); } else { - logger.info("Successfully sent data to TracTrac with response: " + updateResponse.getMessage()); + logger.info("Successfully sent data to provider with response: " + updateResponse.getMessage()); } } - private BufferedReader getResponseOnUpdateFromTracTrac(HttpURLConnection connection) throws IOException { + private BufferedReader getResponseOnUpdateFromProvider(HttpURLConnection connection) throws IOException { InputStream inputStream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); return reader; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/UpdateResponse.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponse.java similarity index 63% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/UpdateResponse.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponse.java index 2a3a9193096..49ea7846f60 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/UpdateResponse.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponse.java @@ -1,7 +1,6 @@ -package com.sap.sailing.domain.tractracadapter; +package com.sap.sailing.domain.tracking.impl; public interface UpdateResponse { - String getStatus(); String getMessage(); diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateResponseDeserializer.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponseDeserializer.java similarity index 86% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateResponseDeserializer.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponseDeserializer.java index 496f22b4f09..75bd2dabe92 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateResponseDeserializer.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponseDeserializer.java @@ -1,8 +1,7 @@ -package com.sap.sailing.domain.tractracadapter.impl; +package com.sap.sailing.domain.tracking.impl; import org.json.simple.JSONObject; -import com.sap.sailing.domain.tractracadapter.UpdateResponse; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateResponseImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponseImpl.java similarity index 78% rename from java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateResponseImpl.java rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponseImpl.java index 9c1eef86ce1..109414350ec 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateResponseImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/UpdateResponseImpl.java @@ -1,6 +1,4 @@ -package com.sap.sailing.domain.tractracadapter.impl; - -import com.sap.sailing.domain.tractracadapter.UpdateResponse; +package com.sap.sailing.domain.tracking.impl; public class UpdateResponseImpl implements UpdateResponse {