mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-01 09:53:58 +00:00
suppress button works, but no persistence yet
This commit is contained in:
1 parent
78bca31e18
commit
cdde8abe7c
19 files changed
+103
-14
No files matched your search
+1
@@ -199,6 +199,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
*/
|
||||
private Leaderboard loadLeaderboard(DBObject dbLeaderboard, RegattaRegistry regattaRegistry, LeaderboardRegistry leaderboardRegistry,
|
||||
LeaderboardGroup groupForMetaLeaderboard) {
|
||||
// TODO load suppressed competitors
|
||||
Leaderboard result = null;
|
||||
String leaderboardName = (String) dbLeaderboard.get(FieldNames.LEADERBOARD_NAME.name());
|
||||
if (leaderboardRegistry != null) {
|
||||
|
||||
+1
@@ -129,6 +129,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
|
||||
@Override
|
||||
public void storeLeaderboard(Leaderboard leaderboard) {
|
||||
// TODO store suppressed competitors
|
||||
DBCollection leaderboardCollection = database.getCollection(CollectionNames.LEADERBOARDS.name());
|
||||
try {
|
||||
leaderboardCollection.ensureIndex(FieldNames.LEADERBOARD_NAME.name());
|
||||
|
||||
+2
@@ -10,4 +10,6 @@ public interface ScoreCorrectionListener {
|
||||
void maxPointsReasonChanced(Competitor competitor, MaxPointsReason oldMaxPointsReason, MaxPointsReason newMaxPointsReason);
|
||||
|
||||
void carriedPointsChanged(Competitor competitor, Double oldCarriedPoints, Double newCarriedPoints);
|
||||
|
||||
void isSuppressedChanged(Competitor competitor, boolean newIsSuppressed);
|
||||
}
|
||||
+2
@@ -42,4 +42,6 @@ public interface SettableScoreCorrection extends ScoreCorrection {
|
||||
void setComment(String scoreCorrectionComment);
|
||||
|
||||
void notifyListenersAboutCarriedPointsChange(Competitor competitor, Double oldCarriedPoints, Double newCarriedPoints);
|
||||
|
||||
void notifyListenersAboutIsSuppressedChange(Competitor competitor, boolean suppressed);
|
||||
}
|
||||
+1
-1
@@ -90,7 +90,7 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI
|
||||
|
||||
@Override
|
||||
public Competitor getCompetitorByIdAsString(String idAsString) {
|
||||
for (Competitor competitor : getCompetitors()) {
|
||||
for (Competitor competitor : getAllCompetitors()) {
|
||||
if (competitor.getId().toString().equals(idAsString)) {
|
||||
return competitor;
|
||||
}
|
||||
|
||||
+1
@@ -625,5 +625,6 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
|
||||
} else {
|
||||
suppressedCompetitors.remove(competitor);
|
||||
}
|
||||
getScoreCorrection().notifyListenersAboutIsSuppressedChange(competitor, suppressed);
|
||||
}
|
||||
}
|
||||
+7
@@ -108,6 +108,13 @@ public class ScoreCorrectionImpl implements SettableScoreCorrection {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyListenersAboutIsSuppressedChange(Competitor competitor, boolean suppressed) {
|
||||
for (ScoreCorrectionListener listener : getScoreCorrectionListeners()) {
|
||||
listener.isSuppressedChanged(competitor, suppressed);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxPointsReason(Competitor competitor, RaceColumn raceColumn, MaxPointsReason reason) {
|
||||
Pair<Competitor, RaceColumn> key = raceColumn.getKey(competitor);
|
||||
|
||||
+5
@@ -66,6 +66,11 @@ public abstract class AbstractMetaLeaderboard extends AbstractSimpleLeaderboardI
|
||||
public void carriedPointsChanged(Competitor competitor, Double oldCarriedPoints, Double newCarriedPoints) {
|
||||
getScoreCorrection().notifyListenersAboutCarriedPointsChange(competitor, oldCarriedPoints, newCarriedPoints);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void isSuppressedChanged(Competitor competitor, boolean newIsSuppressed) {
|
||||
getScoreCorrection().notifyListenersAboutIsSuppressedChange(competitor, newIsSuppressed);
|
||||
}
|
||||
}
|
||||
|
||||
public AbstractMetaLeaderboard(String name, ScoringScheme scoringScheme, ThresholdBasedResultDiscardingRule resultDiscardingRule) {
|
||||
|
||||
+2
@@ -263,4 +263,6 @@ public interface SailingService extends RemoteService {
|
||||
void removeLeaderboardColumns(String leaderboardName, List<String> columnsToRemove);
|
||||
|
||||
StrippedLeaderboardDTO getLeaderboard(String leaderboardName);
|
||||
|
||||
void suppressCompetitorInLeaderboard(String leaderboardName, String competitorIdAsString, boolean suppressed);
|
||||
}
|
||||
+2
@@ -431,4 +431,6 @@ public interface SailingServiceAsync {
|
||||
|
||||
void getLeaderboard(String leaderboardName, AsyncCallback<StrippedLeaderboardDTO> callback);
|
||||
|
||||
void suppressCompetitorInLeaderboard(String leaderboardName, String competitorIdAsString, boolean suppressed, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
}
|
||||
+16
-2
@@ -529,8 +529,22 @@ public class EditableLeaderboardPanel extends LeaderboardPanel {
|
||||
public FieldUpdater<LeaderboardRowDTO, String> getFieldUpdater() {
|
||||
return new FieldUpdater<LeaderboardRowDTO, String>() {
|
||||
@Override
|
||||
public void update(int index, LeaderboardRowDTO object, String value) {
|
||||
// TODO called when the user clicked the button; suppress the competitor in the current leaderboard
|
||||
public void update(int index, final LeaderboardRowDTO row, String value) {
|
||||
getSailingService().suppressCompetitorInLeaderboard(getLeaderboardName(), row.competitor.id,
|
||||
/* suppressed */ true,
|
||||
new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
getErrorReporter().reportError("Error trying to suppress competitor "+row.competitor.name+
|
||||
" in leaderboard "+getLeaderboardName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
// force a reload of the entire editable leaderboard to hide the now suppressed competitor
|
||||
timeChanged(getLeaderboardDisplayDate());
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
+5
@@ -173,6 +173,11 @@ public class LeaderboardDTOCache {
|
||||
public void carriedPointsChanged(Competitor competitor, Double oldCarriedPoints, Double newCarriedPoints) {
|
||||
removeFromCache(leaderboard);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void isSuppressedChanged(Competitor competitor, boolean newIsSuppressed) {
|
||||
removeFromCache(leaderboard);
|
||||
}
|
||||
}
|
||||
|
||||
public LeaderboardDTOCache(SailingServiceImpl sailingService, boolean waitForLatestAnalyses) {
|
||||
|
||||
+7
@@ -201,6 +201,7 @@ import com.sap.sailing.server.operationaltransformation.RenameLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn;
|
||||
import com.sap.sailing.server.operationaltransformation.RenameLeaderboardGroup;
|
||||
import com.sap.sailing.server.operationaltransformation.SetRaceIsKnownToStartUpwind;
|
||||
import com.sap.sailing.server.operationaltransformation.SetSuppressedFlagForCompetitorInLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.SetWindSourcesToExclude;
|
||||
import com.sap.sailing.server.operationaltransformation.StopTrackingRace;
|
||||
import com.sap.sailing.server.operationaltransformation.StopTrackingRegatta;
|
||||
@@ -2034,6 +2035,11 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
getService().apply(new RenameLeaderboardColumn(leaderboardName, oldColumnName, newColumnName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void suppressCompetitorInLeaderboard(String leaderboardName, String competitorIdAsString, boolean suppressed) {
|
||||
getService().apply(new SetSuppressedFlagForCompetitorInLeaderboard(leaderboardName, competitorIdAsString, suppressed));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean connectTrackedRaceToLeaderboardColumn(String leaderboardName, String raceColumnName, String fleetName, RaceIdentifier raceIdentifier) {
|
||||
return getService().apply(new ConnectTrackedRaceToLeaderboardColumn(leaderboardName, raceColumnName, fleetName, raceIdentifier));
|
||||
@@ -2726,4 +2732,5 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
fregService.registerResultUrl(new URL(result));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -47,7 +47,7 @@ public class LeaderboardDiscardingRulesTest {
|
||||
assertNotNull(leaderboard);
|
||||
int[] discardingRulesNew = new int[] { 1, 5 };
|
||||
leaderboard.setResultDiscardingRule(new ResultDiscardingRuleImpl(discardingRulesNew));
|
||||
racingEventService.updateStoredFlexibleLeaderboard(leaderboard);
|
||||
racingEventService.updateStoredLeaderboard(leaderboard);
|
||||
Leaderboard leaderboardNew = racingEventService.getLeaderboardByName(LEADERBOARDNAME);
|
||||
assertNotNull(leaderboardNew);
|
||||
int[] result = leaderboardNew.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
||||
|
||||
@@ -265,7 +265,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
/**
|
||||
* Updates the leaderboard data in the persistent store
|
||||
*/
|
||||
void updateStoredFlexibleLeaderboard(FlexibleLeaderboard leaderboard);
|
||||
void updateStoredLeaderboard(Leaderboard leaderboard);
|
||||
|
||||
void updateStoredRegattaLeaderboard(RegattaLeaderboard leaderboard);
|
||||
|
||||
|
||||
+7
-7
@@ -331,7 +331,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
// uses the default fleet as the single fleet for the new column
|
||||
RaceColumn result = ((FlexibleLeaderboard) leaderboard).addRaceColumn(columnName, medalRace,
|
||||
leaderboard.getFleet(null));
|
||||
updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
return result;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Leaderboard named " + leaderboardName + " is not a FlexibleLeaderboard");
|
||||
@@ -346,7 +346,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
Leaderboard leaderboard = getLeaderboardByName(leaderboardName);
|
||||
if (leaderboard != null && leaderboard instanceof FlexibleLeaderboard) {
|
||||
((FlexibleLeaderboard) leaderboard).moveRaceColumnUp(columnName);
|
||||
updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Leaderboard named " + leaderboardName + " not found");
|
||||
}
|
||||
@@ -357,7 +357,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
Leaderboard leaderboard = getLeaderboardByName(leaderboardName);
|
||||
if (leaderboard != null && leaderboard instanceof FlexibleLeaderboard) {
|
||||
((FlexibleLeaderboard) leaderboard).moveRaceColumnDown(columnName);
|
||||
updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Leaderboard named " + leaderboardName + " not found");
|
||||
}
|
||||
@@ -368,7 +368,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
Leaderboard leaderboard = getLeaderboardByName(leaderboardName);
|
||||
if (leaderboard != null && leaderboard instanceof FlexibleLeaderboard) {
|
||||
((FlexibleLeaderboard) leaderboard).removeRaceColumn(columnName);
|
||||
updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Leaderboard named "+leaderboardName+" not found");
|
||||
}
|
||||
@@ -379,7 +379,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
Leaderboard leaderboard = getLeaderboardByName(leaderboardName);
|
||||
if (leaderboard != null) {
|
||||
leaderboard.getRaceColumnByName(oldColumnName).setName(newColumnName);
|
||||
updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Leaderboard named "+leaderboardName+" not found");
|
||||
}
|
||||
@@ -409,7 +409,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoredFlexibleLeaderboard(FlexibleLeaderboard leaderboard) {
|
||||
public void updateStoredLeaderboard(Leaderboard leaderboard) {
|
||||
mongoObjectFactory.storeLeaderboard(leaderboard);
|
||||
syncGroupsAfterLeaderboardChange(leaderboard, true);
|
||||
}
|
||||
@@ -1076,7 +1076,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
}
|
||||
if (changed) {
|
||||
updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ public abstract class AbstractLeaderboardColumnOperation<ResultType> extends Abs
|
||||
*/
|
||||
protected void updateDB(RacingEventService toState, Leaderboard leaderboard, RaceColumn raceColumn) {
|
||||
if (leaderboard instanceof FlexibleLeaderboard) {
|
||||
toState.updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
toState.updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
} else {
|
||||
assert raceColumn instanceof RaceColumnInSeries;
|
||||
toState.updateStoredRegatta(((RaceColumnInSeries) raceColumn).getSeries().getRegatta());
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ public abstract class AbstractLeaderboardOperation<ResultType> extends AbstractR
|
||||
|
||||
protected void updateStoredLeaderboard(RacingEventService toState, Leaderboard leaderboard) {
|
||||
if (leaderboard instanceof FlexibleLeaderboard) {
|
||||
toState.updateStoredFlexibleLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
toState.updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
} else if (leaderboard instanceof RegattaLeaderboardImpl) {
|
||||
toState.updateStoredRegattaLeaderboard((RegattaLeaderboard) leaderboard);
|
||||
}
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class SetSuppressedFlagForCompetitorInLeaderboard extends AbstractLeaderboardOperation<Void> {
|
||||
private static final long serialVersionUID = -6509970065541824854L;
|
||||
private final String competitorIdAsString;
|
||||
private final boolean suppressed;
|
||||
|
||||
public SetSuppressedFlagForCompetitorInLeaderboard(String leaderboardName, String competitorIdAsString, boolean suppressed) {
|
||||
super(leaderboardName);
|
||||
this.competitorIdAsString = competitorIdAsString;
|
||||
this.suppressed = suppressed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void internalApplyTo(RacingEventService toState) throws Exception {
|
||||
Leaderboard leaderboard = toState.getLeaderboardByName(getLeaderboardName());
|
||||
Competitor competitor = leaderboard.getCompetitorByIdAsString(competitorIdAsString);
|
||||
leaderboard.setSuppressed(competitor, suppressed);
|
||||
toState.updateStoredLeaderboard(leaderboard);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user