Merge branch 'master' into tracapi

This commit is contained in:
Axel Uhl committed 2014-06-05 00:42:27 +02:00
commit 7111ff7921
20 files changed
+523 -64

No files matched your search

@@ -1,10 +0,0 @@
package com.sap.sailing.server;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sse.common.search.Hit;
public interface LeaderboardSearchResult extends Hit {
Regatta getRegatta();
Leaderboard getLeaderboard();
}
@@ -21,6 +21,7 @@ import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.EventBase;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.LeaderboardSearchResult;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.Regatta;
@@ -1,29 +0,0 @@
package com.sap.sailing.server.impl;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
import com.sap.sailing.server.LeaderboardSearchResult;
public class LeaderboardSearchResultImpl implements LeaderboardSearchResult {
private final Leaderboard leaderboard;
public LeaderboardSearchResultImpl(Leaderboard leaderboard) {
this.leaderboard = leaderboard;
}
public Regatta getRegatta() {
final Regatta regatta;
if (leaderboard instanceof RegattaLeaderboard) {
regatta = ((RegattaLeaderboard) leaderboard).getRegatta();
} else {
regatta = null;
}
return regatta;
}
@Override
public Leaderboard getLeaderboard() {
return leaderboard;
}
}
@@ -39,6 +39,7 @@ import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.EventBase;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.LeaderboardSearchResult;
import com.sap.sailing.domain.base.Mark;
import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.RaceColumnInSeries;
@@ -133,7 +134,6 @@ import com.sap.sailing.operationaltransformation.Operation;
import com.sap.sailing.server.OperationExecutionListener;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.RacingEventServiceOperation;
import com.sap.sailing.server.LeaderboardSearchResult;
import com.sap.sailing.server.Replicator;
import com.sap.sailing.server.masterdata.DataImportLockWithProgress;
import com.sap.sailing.server.operationaltransformation.AddCourseArea;
@@ -1,15 +1,19 @@
package com.sap.sailing.server.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.LeaderboardSearchResult;
import com.sap.sailing.domain.base.impl.LeaderboardSearchResultImpl;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.server.LeaderboardSearchResult;
import com.sap.sailing.server.RacingEventService;
import com.sap.sse.common.Util;
import com.sap.sse.common.filter.AbstractListFilter;
@@ -30,9 +34,12 @@ import com.sap.sse.common.search.ResultImpl;
public class RegattaByKeywordSearchService {
Result<LeaderboardSearchResult> search(final RacingEventService racingEventService, KeywordQuery query) {
ResultImpl<LeaderboardSearchResult> result = new ResultImpl<>(query, new RegattaSearchResultRanker(racingEventService));
final Map<Leaderboard, Event> eventForLeaderboard = new HashMap<>();
final Map<Leaderboard, Set<LeaderboardGroup>> leaderboardGroupsForLeaderboard = new HashMap<>();
AbstractListFilter<Leaderboard> leaderboardFilter = new AbstractListFilter<Leaderboard>() {
@Override
public Iterable<String> getStrings(Leaderboard leaderboard) {
// TODO allow recording which part of the leaderboard was matched by the keywords by returning "annotated strings" that the matcher can understand
List<String> leaderboardStrings = new ArrayList<>();
leaderboardStrings.add(leaderboard.getName());
leaderboardStrings.add(leaderboard.getDisplayName());
@@ -49,16 +56,23 @@ public class RegattaByKeywordSearchService {
for (LeaderboardGroup leaderboardGroup : leaderboardGroupsHostingLeaderboard) {
leaderboardStrings.add(leaderboardGroup.getName());
leaderboardStrings.add(leaderboardGroup.getDescription());
Set<LeaderboardGroup> leaderboardGroups = leaderboardGroupsForLeaderboard.get(leaderboard);
if (leaderboardGroups == null) {
leaderboardGroups = new HashSet<>();
leaderboardGroupsForLeaderboard.put(leaderboard, leaderboardGroups);
}
leaderboardGroups.add(leaderboardGroup);
}
for (Event event : getEventsHostingLeaderboard(leaderboard, racingEventService, leaderboardGroupsHostingLeaderboard)) {
leaderboardStrings.add(event.getName());
leaderboardStrings.add(event.getVenue().getName());
eventForLeaderboard.put(leaderboard, event);
}
return leaderboardStrings;
}
};
for (Leaderboard matchingLeaderboard : leaderboardFilter.applyFilter(query.getKeywords(), racingEventService.getLeaderboards().values())) {
result.addHit(new LeaderboardSearchResultImpl(matchingLeaderboard));
result.addHit(new LeaderboardSearchResultImpl(matchingLeaderboard, eventForLeaderboard.get(matchingLeaderboard), leaderboardGroupsForLeaderboard.get(matchingLeaderboard)));
}
return result;
}
@@ -5,13 +5,13 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.sap.sailing.domain.base.LeaderboardSearchResult;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.TrackedRegatta;
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.LeaderboardSearchResult;
import com.sap.sse.common.Util;
public class RegattaSearchResultRanker implements Comparator<LeaderboardSearchResult> {