diff --git a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF index 8178cffa459..9cf71074041 100755 --- a/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.swisstimingadapter.test/META-INF/MANIFEST.MF @@ -13,7 +13,8 @@ Require-Bundle: com.sap.sailing.domain.swisstimingadapter.persistence, com.mongodb.driver;bundle-version="2.6.2", com.sap.sailing.mongodb, com.googlecode.java-diff-utils;bundle-version="1.3.0", - com.sap.sailing.server + com.sap.sailing.server, + com.sap.sailing.server.api Bundle-ClassPath: resources/, . Import-Package: com.sap.sailing.server diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java index 9bf6a5d5b11..6f8e2e924f8 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java @@ -314,13 +314,17 @@ public class MockedTrackedRace implements DynamicTrackedRace { @Override public void addRace(RaceDefinition race) { // TODO Auto-generated method stub - } @Override public void removeRace(RaceDefinition raceDefinition) { // TODO Auto-generated method stub - + } + + @Override + public RaceDefinition getRaceByName(String raceName) { + // TODO Auto-generated method stub + return null; } }; } diff --git a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF index e2de89fa22a..d154782f435 100755 --- a/java/com.sap.sailing.domain/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain/META-INF/MANIFEST.MF @@ -10,7 +10,6 @@ Export-Package: com.sap.sailing.domain.base, com.sap.sailing.domain.base.impl, com.sap.sailing.domain.leaderboard, com.sap.sailing.domain.leaderboard.impl, - com.sap.sailing.domain.standings, com.sap.sailing.domain.tracking, com.sap.sailing.domain.tracking.impl, com.sap.sailing.util diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Event.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Event.java index eaeb266dd18..c2f756273e4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Event.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Event.java @@ -11,6 +11,12 @@ package com.sap.sailing.domain.base; public interface Event extends Named { Iterable getAllRaces(); + /** + * @return null, if this event does not contain a race (see {@link #getAllRaces}) whose + * {@link RaceDefinition#getName()} equals raceName + */ + RaceDefinition getRaceByName(String raceName); + BoatClass getBoatClass(); Iterable getCompetitors(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java index 38d756cf051..1a04f787a8a 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/EventImpl.java @@ -23,6 +23,16 @@ public class EventImpl extends NamedImpl implements Event { return races; } + @Override + public RaceDefinition getRaceByName(String raceName) { + for (RaceDefinition r : getAllRaces()) { + if (r.getName().equals(raceName)) { + return r; + } + } + return null; + } + @Override public void addRace(RaceDefinition race) { if (getBoatClass() != null && race.getBoatClass() != getBoatClass()) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index f46fc237892..f24bca7c83f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -448,13 +448,10 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS private RaceDefinition getRaceByName(Event event, String raceName) { if (event != null) { - for (RaceDefinition r : event.getAllRaces()) { - if (r.getName().equals(raceName)) { - return r; - } - } + return event.getRaceByName(raceName); + } else { + return null; } - return null; } @Override diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java index 5b911269166..3e630389fff 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java @@ -26,6 +26,8 @@ import com.sap.sailing.domain.tracking.WindStore; import com.sap.sailing.domain.tractracadapter.DomainFactory; import com.sap.sailing.domain.tractracadapter.RaceRecord; import com.sap.sailing.domain.tractracadapter.TracTracRaceTracker; +import com.sap.sailing.server.api.EventIdentifier; +import com.sap.sailing.server.api.RaceIdentifier; import com.sap.sailing.util.Util.Pair; import com.sap.sailing.util.Util.Triple; @@ -51,6 +53,19 @@ public interface RacingEventService extends TrackedEventRegistry { Iterable getAllEvents(); Event getEventByName(String name); + + Event getEvent(EventIdentifier eventIdentifier); + + TrackedRace getTrackedRace(Event event, RaceDefinition r); + + TrackedRace getTrackedRace(RaceIdentifier raceIdentifier); + + /** + * Obtains an unmodifiable map of the leaderboard configured in this service keyed by their names. + */ + Map getLeaderboards(); + + Leaderboard getLeaderboardByName(String name); /** * Defines the event and for each race listed in the JSON document that is not already being tracked by this service @@ -169,8 +184,6 @@ public interface RacingEventService extends TrackedEventRegistry { boolean isRaceBeingTracked(RaceDefinition r); - TrackedRace getTrackedRace(Event event, RaceDefinition r); - /** * Creates a new leaderboard with the name specified. * @@ -185,13 +198,6 @@ public interface RacingEventService extends TrackedEventRegistry { void removeLeaderboard(String leaderboardName); - Leaderboard getLeaderboardByName(String name); - - /** - * Obtains an unmodifiable map of the leaderboard configured in this service keyed by their names. - */ - Map getLeaderboards(); - /** * Renames a leaderboard. If a leaderboard by the name oldName does not exist in {@link #getLeaderboards()}, * or if a leaderboard with the name newName already exists, an {@link IllegalArgumentException} is thrown. @@ -217,4 +223,6 @@ public interface RacingEventService extends TrackedEventRegistry { void removeEvent(Event event) throws MalformedURLException, IOException, InterruptedException; + TrackedRace getExistingTrackedRace(RaceIdentifier raceIdentifier); + } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 843039fd502..cb4b88c1ecc 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -56,11 +56,17 @@ import com.sap.sailing.domain.tractracadapter.RaceRecord; import com.sap.sailing.domain.tractracadapter.Receiver; import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory; import com.sap.sailing.server.RacingEventService; +import com.sap.sailing.server.api.EventFetcher; +import com.sap.sailing.server.api.EventIdentifier; +import com.sap.sailing.server.api.EventNameAndRaceName; +import com.sap.sailing.server.api.LeaderboardNameAndRaceColumnName; +import com.sap.sailing.server.api.RaceFetcher; +import com.sap.sailing.server.api.RaceIdentifier; import com.sap.sailing.util.Util; import com.sap.sailing.util.Util.Pair; import com.sap.sailing.util.Util.Triple; -public class RacingEventServiceImpl implements RacingEventService { +public class RacingEventServiceImpl implements RacingEventService, EventFetcher, RaceFetcher { private static final Logger logger = Logger.getLogger(RacingEventServiceImpl.class.getName()); /** @@ -164,7 +170,6 @@ public class RacingEventServiceImpl implements RacingEventService { @Override public void updateStoredLeaderboard(Leaderboard leaderboard) { - // TODO this is very brute force; consider updating more fine-grained mongoObjectFactory.storeLeaderboard(leaderboard); } @@ -594,4 +599,65 @@ public class RacingEventServiceImpl implements RacingEventService { } } + @Override + public Event getEvent(EventIdentifier eventIdentifier) { + return (Event) eventIdentifier.getEvent(this); + } + + @Override + public TrackedRace getTrackedRace(RaceIdentifier raceIdentifier) { + return (TrackedRace) raceIdentifier.getTrackedRace(this); + } + + @Override + public TrackedRace getExistingTrackedRace(RaceIdentifier raceIdentifier) { + return (TrackedRace) raceIdentifier.getExistingTrackedRace(this); + } + + @Override + public RaceDefinition getRace(EventNameAndRaceName eventNameAndRaceName) { + RaceDefinition result = null; + Event event = getEvent(eventNameAndRaceName); + if (event != null) { + result = event.getRaceByName(eventNameAndRaceName.getRaceName()); + } + return result; + } + + @Override + public TrackedRace getTrackedRace(EventNameAndRaceName eventNameAndRaceName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public RaceDefinition getRace(LeaderboardNameAndRaceColumnName leaderboardNameAndRaceColumnName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public TrackedRace getTrackedRace(LeaderboardNameAndRaceColumnName leaderboardNameAndRaceColumnName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public TrackedRace getExistingTrackedRace(LeaderboardNameAndRaceColumnName leaderboardNameAndRaceColumnName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public TrackedRace getExistingTrackedRace(EventNameAndRaceName eventNameAndRaceName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Event getEvent(EventNameAndRaceName eventIdentifier) { + // TODO Auto-generated method stub + return null; + } + }