adjusted use of swiss timing replay adapter to the same pattern used for the tractrac and swisstiming live tracking

This commit is contained in:
Axel Uhl
2013-10-25 13:30:24 +02:00
parent 4e22cee4d7
commit 497f4a75c6
14 changed files with 52 additions and 87 deletions
@@ -17,6 +17,7 @@ import java.util.Map;
import org.junit.Ignore;
import org.junit.Test;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayRace;
import com.sap.sailing.domain.swisstimingreplayadapter.impl.SwissTimingRaceConfig;
import com.sap.sailing.domain.swisstimingreplayadapter.impl.SwissTimingReplayServiceImpl;
@@ -29,13 +30,13 @@ public class SwissTimingRaceConfigurationTest {
@Test
public void testLoadConfigurations() throws IOException, ParseException, org.json.simple.parser.ParseException {
InputStream inputStream = getClass().getResourceAsStream(JSON_URL);
List<SwissTimingReplayRace> races = new SwissTimingReplayServiceImpl().parseJSONObject(inputStream , JSON_URL);
List<SwissTimingReplayRace> races = new SwissTimingReplayServiceImpl(DomainFactory.INSTANCE).parseJSONObject(inputStream , JSON_URL);
Map<String, SwissTimingRaceConfig> configsById = new HashMap<String, SwissTimingRaceConfig>();
for (SwissTimingReplayRace race : races) {
URL configFileURL = new URL(MessageFormat.format(SwissTimingReplayServiceImpl.RACE_CONFIG_URL_TEMPLATE, race.getRaceId()));
URLConnection connection = configFileURL.openConnection();
InputStream configDataStream = connection.getInputStream();
SwissTimingRaceConfig raceConfig = new SwissTimingReplayServiceImpl().loadRaceConfig(configDataStream);
SwissTimingRaceConfig raceConfig = new SwissTimingReplayServiceImpl(DomainFactory.INSTANCE).loadRaceConfig(configDataStream);
configsById.put(race.getRaceId(), raceConfig);
}
}
@@ -45,7 +46,7 @@ public class SwissTimingRaceConfigurationTest {
URL configFileURL = new URL(MessageFormat.format(SwissTimingReplayServiceImpl.RACE_CONFIG_URL_TEMPLATE, "446483"));
URLConnection connection = configFileURL.openConnection();
InputStream configDataStream = connection.getInputStream();
SwissTimingRaceConfig config_446483 = new SwissTimingReplayServiceImpl().loadRaceConfig(configDataStream);
SwissTimingRaceConfig config_446483 = new SwissTimingReplayServiceImpl(DomainFactory.INSTANCE).loadRaceConfig(configDataStream);
assertNotNull(config_446483);
assertEquals("GB", config_446483.country_code);
assertNull(config_446483.event_name);
@@ -62,7 +63,7 @@ public class SwissTimingRaceConfigurationTest {
URL configFileURL = new URL(MessageFormat.format(SwissTimingReplayServiceImpl.RACE_CONFIG_URL_TEMPLATE, "6260"));
URLConnection connection = configFileURL.openConnection();
InputStream configDataStream = connection.getInputStream();
SwissTimingRaceConfig config_446483 = new SwissTimingReplayServiceImpl().loadRaceConfig(configDataStream);
SwissTimingRaceConfig config_446483 = new SwissTimingReplayServiceImpl(DomainFactory.INSTANCE).loadRaceConfig(configDataStream);
assertNotNull(config_446483);
assertEquals("GB", config_446483.country_code);
assertEquals("London 2012 Olympic Games", config_446483.event_name);
@@ -32,7 +32,7 @@ public class SwissTimingReplayAdapterServiceTest {
public void testLoadRaceJson() throws Exception {
String swissTimingUrlText = "/2012_OSG.json";
InputStream inputStream = getClass().getResourceAsStream(swissTimingUrlText);
final SwissTimingReplayServiceImpl swissTimingReplayService = new SwissTimingReplayServiceImpl();
final SwissTimingReplayServiceImpl swissTimingReplayService = new SwissTimingReplayServiceImpl(DomainFactory.INSTANCE);
List<SwissTimingReplayRace> races = swissTimingReplayService.parseJSONObject(inputStream , swissTimingUrlText);
assertEquals(201, races.size());
assertEquals("446483", races.get(0).getRaceId());
@@ -1,5 +0,0 @@
package com.sap.sailing.domain.swisstimingreplayadapter;
public interface SwissTimingReplayAdapter {
}
@@ -1,7 +0,0 @@
package com.sap.sailing.domain.swisstimingreplayadapter;
import com.sap.sailing.domain.base.DomainFactory;
public interface SwissTimingReplayAdapterFactory {
SwissTimingReplayAdapter createSwissTimingReplayAdapter(DomainFactory baseDomainFactory);
}
@@ -7,7 +7,6 @@ import java.text.ParseException;
import java.util.List;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.impl.SwissTimingRaceConfig;
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
@@ -41,6 +40,6 @@ public interface SwissTimingReplayService {
* the regatta to which the race shall be added; if <code>null</code>, a default regatta will be
* created/used
*/
void loadRaceData(String link, DomainFactory domainFactory, Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry);
void loadRaceData(String link, Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry);
}
@@ -1,9 +1,10 @@
package com.sap.sailing.domain.swisstimingreplayadapter;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.impl.SwissTimingReplayServiceFactoryImpl;
public interface SwissTimingReplayServiceFactory {
static SwissTimingReplayServiceFactory INSTANCE = new SwissTimingReplayServiceFactoryImpl();
SwissTimingReplayService createSwissTimingReplayService();
SwissTimingReplayService createSwissTimingReplayService(DomainFactory domainFactory);
}
@@ -6,21 +6,21 @@ import java.util.logging.Logger;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayAdapterFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayServiceFactory;
public class Activator implements BundleActivator {
private static final Logger logger = Logger.getLogger(Activator.class.getName());
private final SwissTimingReplayAdapterFactory swissTimingReplayAdapterFactory;
private final SwissTimingReplayServiceFactory swissTimingReplayServiceFactory;
public Activator() {
// there is exactly one instance of the racingEventService in the whole server
swissTimingReplayAdapterFactory = new SwissTimingReplayAdapterFactoryImpl();
swissTimingReplayServiceFactory = new SwissTimingReplayServiceFactoryImpl();
}
public void start(BundleContext context) throws Exception {
// register the racing service in the OSGi registry
context.registerService(SwissTimingReplayAdapterFactory.class.getName(), swissTimingReplayAdapterFactory, null);
context.registerService(SwissTimingReplayServiceFactory.class.getName(), swissTimingReplayServiceFactory, null);
logger.log(Level.INFO, "Started "+context.getBundle().getSymbolicName());
}
@@ -1,27 +0,0 @@
package com.sap.sailing.domain.swisstimingreplayadapter.impl;
import java.util.HashMap;
import java.util.Map;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayAdapter;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayAdapterFactory;
public class SwissTimingReplayAdapterFactoryImpl implements SwissTimingReplayAdapterFactory {
private final Map<DomainFactory, SwissTimingReplayAdapter> adaptersForBaseDomainFactories;
public SwissTimingReplayAdapterFactoryImpl() {
adaptersForBaseDomainFactories = new HashMap<>();
}
@Override
public SwissTimingReplayAdapter createSwissTimingReplayAdapter(DomainFactory baseDomainFactory) {
SwissTimingReplayAdapter result = adaptersForBaseDomainFactories.get(baseDomainFactory);
if (result == null) {
result = new SwissTimingReplayAdapterImpl(baseDomainFactory);
adaptersForBaseDomainFactories.put(baseDomainFactory, result);
}
return result;
}
}
@@ -1,12 +0,0 @@
package com.sap.sailing.domain.swisstimingreplayadapter.impl;
import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayAdapter;
public class SwissTimingReplayAdapterImpl implements SwissTimingReplayAdapter {
public SwissTimingReplayAdapterImpl(DomainFactory baseDomainFactory) {
// TODO Auto-generated constructor stub
}
}
@@ -1,13 +1,26 @@
package com.sap.sailing.domain.swisstimingreplayadapter.impl;
import java.util.HashMap;
import java.util.Map;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayService;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayServiceFactory;
public class SwissTimingReplayServiceFactoryImpl implements SwissTimingReplayServiceFactory {
@Override
public SwissTimingReplayService createSwissTimingReplayService() {
return new SwissTimingReplayServiceImpl();
private final Map<DomainFactory, SwissTimingReplayService> servicesForDomainFactories;
public SwissTimingReplayServiceFactoryImpl() {
servicesForDomainFactories = new HashMap<>();
}
@Override
public SwissTimingReplayService createSwissTimingReplayService(DomainFactory domainFactory) {
SwissTimingReplayService result = servicesForDomainFactories.get(domainFactory);
if (result == null) {
result = new SwissTimingReplayServiceImpl(domainFactory);
servicesForDomainFactories.put(domainFactory, result);
}
return result;
}
}
@@ -33,6 +33,12 @@ public class SwissTimingReplayServiceImpl implements SwissTimingReplayService {
private static final String SWISSTIMING_DATEFORMAT_PATTERN = "dd.MM.yyyy HH:mm";
private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getTimeZone("GMT");
private final DomainFactory domainFactory;
public SwissTimingReplayServiceImpl(DomainFactory domainFactory) {
this.domainFactory = domainFactory;
}
@Override
public List<SwissTimingReplayRace> listReplayRaces(String swissTimingUrlText) {
URL raceListUrl;
@@ -143,7 +149,7 @@ public class SwissTimingReplayServiceImpl implements SwissTimingReplayService {
}
@Override
public void loadRaceData(String link, DomainFactory domainFactory, Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry) {
public void loadRaceData(String link, Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry) {
SwissTimingReplayListener listener = new SwissTimingReplayToDomainAdapter(regatta, domainFactory, trackedRegattaRegistry);
loadRaceData(link, listener);
}
@@ -44,7 +44,7 @@ import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.domain.common.impl.WindSourceImpl;
import com.sap.sailing.domain.common.impl.WindSteppingWithMaxDistance;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingAdapterFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayAdapterFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayServiceFactory;
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
import com.sap.sailing.domain.tracking.GPSFixMoving;
@@ -139,7 +139,7 @@ public class PolarSheetGenerationServiceTest {
}
@Override
protected ServiceTracker<SwissTimingReplayAdapterFactory, SwissTimingReplayAdapterFactory> createAndOpenSwissTimingReplayAdapterTracker(
protected ServiceTracker<SwissTimingReplayServiceFactory, SwissTimingReplayServiceFactory> createAndOpenSwissTimingReplayServiceTracker(
BundleContext context) {
return null;
}
@@ -161,8 +161,6 @@ import com.sap.sailing.domain.swisstimingadapter.SwissTimingArchiveConfiguration
import com.sap.sailing.domain.swisstimingadapter.SwissTimingConfiguration;
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
import com.sap.sailing.domain.swisstimingadapter.persistence.SwissTimingAdapterPersistence;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayAdapter;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayAdapterFactory;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayRace;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayService;
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayServiceFactory;
@@ -343,7 +341,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
private final SwissTimingAdapter swissTimingAdapter;
private final SwissTimingReplayAdapter swissTimingReplayAdapter;
private final SwissTimingReplayService swissTimingReplayService;
public SailingServiceImpl() {
BundleContext context = Activator.getDefault();
@@ -355,7 +353,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
tracTracAdapter = createAndOpenTracTracAdapterTracker(context).getService().getOrCreateTracTracAdapter(baseDomainFactory);
swissTimingAdapterPersistence = SwissTimingAdapterPersistence.INSTANCE;
swissTimingAdapter = createAndOpenSwissTimingAdapterTracker(context).getService().getOrCreateSwissTimingAdapter(baseDomainFactory, swissTimingAdapterPersistence);
swissTimingReplayAdapter = createAndOpenSwissTimingReplayAdapterTracker(context).getService().createSwissTimingReplayAdapter(baseDomainFactory);
swissTimingReplayService = createAndOpenSwissTimingReplayServiceTracker(context).getService().createSwissTimingReplayService(swissTimingAdapter.getSwissTimingDomainFactory());
scoreCorrectionProviderServiceTracker = createAndOpenScoreCorrectionProviderServiceTracker(context);
tractracDomainObjectFactory = com.sap.sailing.domain.tractracadapter.persistence.DomainObjectFactory.INSTANCE;
tractracMongoObjectFactory = com.sap.sailing.domain.tractracadapter.persistence.MongoObjectFactory.INSTANCE;
@@ -400,10 +398,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
return result;
}
protected ServiceTracker<SwissTimingReplayAdapterFactory, SwissTimingReplayAdapterFactory> createAndOpenSwissTimingReplayAdapterTracker(
protected ServiceTracker<SwissTimingReplayServiceFactory, SwissTimingReplayServiceFactory> createAndOpenSwissTimingReplayServiceTracker(
BundleContext context) {
ServiceTracker<SwissTimingReplayAdapterFactory, SwissTimingReplayAdapterFactory> result = new ServiceTracker<SwissTimingReplayAdapterFactory, SwissTimingReplayAdapterFactory>(
context, SwissTimingReplayAdapterFactory.class.getName(), null);
ServiceTracker<SwissTimingReplayServiceFactory, SwissTimingReplayServiceFactory> result = new ServiceTracker<SwissTimingReplayServiceFactory, SwissTimingReplayServiceFactory>(
context, SwissTimingReplayServiceFactory.class.getName(), null);
result.open();
return result;
}
@@ -877,6 +875,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
private SwissTimingAdapter getSwissTimingAdapter() {
return swissTimingAdapter;
}
private SwissTimingReplayService getSwissTimingReplayService() {
return swissTimingReplayService;
}
@Override
public List<TracTracConfigurationDTO> getPreviousTracTracConfigurations() throws Exception {
@@ -2116,8 +2118,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
@Override
public List<SwissTimingReplayRaceDTO> listSwissTiminigReplayRaces(String swissTimingUrl) {
List<SwissTimingReplayRace> replayRaces = SwissTimingReplayServiceFactory.INSTANCE
.createSwissTimingReplayService().listReplayRaces(swissTimingUrl);
List<SwissTimingReplayRace> replayRaces = getSwissTimingReplayService().listReplayRaces(swissTimingUrl);
List<SwissTimingReplayRaceDTO> result = new ArrayList<SwissTimingReplayRaceDTO>(replayRaces.size());
for (SwissTimingReplayRace replayRace : replayRaces) {
result.add(new SwissTimingReplayRaceDTO(replayRace.getFlightNumber(), replayRace.getRaceId(), replayRace.getRsc(), replayRace.getName(), replayRace.getBoatClass(), replayRace.getStartTime(), replayRace.getLink()));
@@ -2156,10 +2157,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
} else {
regatta = getService().getRegatta(regattaIdentifier);
}
SwissTimingReplayService replayService = SwissTimingReplayServiceFactory.INSTANCE
.createSwissTimingReplayService();
replayService.loadRaceData(replayRaceDTO.link, getSwissTimingAdapter().getSwissTimingDomainFactory(), regatta,
getService());
getSwissTimingReplayService().loadRaceData(replayRaceDTO.link, regatta, getService());
}
}
@@ -18,14 +18,12 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sailing.expeditionconnector,
com.sap.sailing.declination,
com.sap.sailing.mongodb,
com.sap.sailing.domain.swisstimingadapter,
com.sap.sailing.domain.persistence,
com.sap.sailing.domain.swisstimingadapter.persistence,
com.sap.sailing.domain.common,
com.sap.sailing.udpconnector,
com.sap.sailing.operationaltransformation,
com.sap.sailing.domain.shared.android;bundle-version="1.0.0",
com.sap.sailing.server.gateway.serialization;bundle-version="1.0.0"
com.sap.sailing.domain.shared.android,
com.sap.sailing.server.gateway.serialization
Bundle-ClassPath: .
Export-Package: com.sap.sailing.server,
com.sap.sailing.server.impl;