bug3484 fixed diverse series selection for pairing list calculation

This commit is contained in:
Raphael Müßeler committed 2017-12-19 14:55:44 +01:00
1 parent ae8fd1b288
commit e92e95c79f
9 files changed
+69 -88

No files matched your search

@@ -29,6 +29,10 @@ public class PairingListTemplateDTO implements Serializable {
this(0, 0, competitorCount, 0, pairingListTemplate, quality, null);
}
public PairingListTemplateDTO(int flightCount, int groupCount, int competitorCount, int flightMultiplier, int[][] pairingListTemplate, double quality) {
this(flightCount, groupCount, competitorCount, flightMultiplier, pairingListTemplate, quality, null);
}
public PairingListTemplateDTO(int flightCount, int groupCount, int competitorCount, int flightMultiplier, int[][] pairingListTemplate, double quality, Iterable<String> selectedFlightNames) {
this.flightCount = flightCount;
this.groupCount = groupCount;
@@ -1028,9 +1028,9 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
BusyDialog busyDialog = new BusyDialog();
busyDialog.show();
try {
sailingService.calculatePairingList(leaderboardDTO.getName(),
editedObject.getSelectedFlightNames(), editedObject.getCompetitorCount(),
editedObject.getFlightMultiplier(), new AsyncCallback<PairingListTemplateDTO>() {
sailingService.calculatePairingListTemplate(editedObject.getFlightCount(), editedObject.getGroupCount(),
editedObject.getCompetitorCount(), editedObject.getFlightMultiplier(),
new AsyncCallback<PairingListTemplateDTO>() {
@Override
public void onFailure(Throwable caught) {
@@ -1041,6 +1041,7 @@ TrackedRaceChangedListener, LeaderboardsDisplayer {
@Override
public void onSuccess(PairingListTemplateDTO result) {
busyDialog.hide();
result.setSelectedFlightNames(editedObject.getSelectedFlightNames());
openPairingListCreationDialog(leaderboardDTO, result);
}
@@ -145,9 +145,12 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
@Override
public void onClick(ClickEvent event) {
sailingService.fillRaceLogsFromPairingListTemplate(leaderboardDTO.getName(),
template.getFlightMultiplier(), template.getSelectedFlightNames(),template, new AsyncCallback<Void>() {
template.getFlightMultiplier(), template.getSelectedFlightNames(), template,
new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) { /*TODO: log successfull*/}
public void onSuccess(Void result) {
/* TODO: log successfull */}
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
@@ -171,16 +174,16 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
}
});
refreshButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
getDialogBox().hide();
BusyDialog busyDialog = new BusyDialog();
busyDialog.show();
try {
sailingService.calculatePairingList(leaderboardDTO.getName(),
template.getSelectedFlightNames(), template.getCompetitorCount(),
template.getFlightMultiplier(), new AsyncCallback<PairingListTemplateDTO>() {
sailingService.calculatePairingListTemplate(template.getFlightCount(), template.getGroupCount(),
template.getCompetitorCount(), template.getFlightMultiplier(),
new AsyncCallback<PairingListTemplateDTO>() {
@Override
public void onFailure(Throwable caught) {
@@ -191,7 +194,7 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
@Override
public void onSuccess(PairingListTemplateDTO result) {
busyDialog.hide();
PairingListCreationDialog dialog = new PairingListCreationDialog(leaderboardDTO,
PairingListCreationDialog dialog = new PairingListCreationDialog(leaderboardDTO,
stringMessages, result, sailingService);
dialog.show();
}
@@ -204,7 +207,7 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
});
}
//TODO set Anchor link to Button (see link with settings under configure url)
// TODO set Anchor link to Button (see link with settings under configure url)
private native void downloadPairingListTemplate(String pairingListCSV)/*-{
var dummy = document.createElement('a');
dummy.setAttribute('href', 'data:text/plain;charset=utf-8,'
@@ -26,7 +26,6 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS
private final IntegerBox flightMultiplierTextBox;
private final CheckBox flightMultiplierCheckBox;
private Iterable<CheckBox> selectedSeriesCheckboxes;
private final int groupCount;
protected static class PairingListParameterValidator extends AbstractPairingListParameterValidator {
public PairingListParameterValidator(StringMessages stringMessages) {
@@ -40,7 +39,6 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS
super(leaderboardDTO, stringMessages.pairingLists(), stringMessages,
new PairingListParameterValidator(stringMessages), callback);
this.groupCount = Util.size(leaderboardDTO.getRaceList().get(0).getFleets());
this.competitorCountTextBox = createIntegerBox(leaderboardDTO.competitorsCount, 2);
this.competitorCountTextBox.ensureDebugId("CompetitorCountBox");
this.flightMultiplierTextBox = createIntegerBox(0, 2);
@@ -138,18 +136,15 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS
protected PairingListTemplateDTO getResult() {
PairingListTemplateDTO dto = new PairingListTemplateDTO(this.competitorCountTextBox.getValue(),
this.flightMultiplierTextBox.getValue());
dto.setGroupCount(this.groupCount);
int flightCount = 0;
for (RaceColumnDTO raceColumn : leaderboardDTO.getRaceList()) {
if (!raceColumn.isMedalRace()) {
flightCount++;
}
if (Util.size(this.getCheckedSelectedCheckBoxes()) > 0) {
String seriesName = Util.get(this.getCheckedSelectedCheckBoxes(), 0).getText();
dto.setGroupCount(this.getOneRaceFromSeriesName(seriesName, leaderboardDTO.getRaceList()).getFleets().size());
dto.setFlightCount(this.getRaceColumnNamesFromSeriesName(seriesName, leaderboardDTO.getRaceList()).size());
} else {
dto.setGroupCount(0);
}
dto.setFlightCount(flightCount);
if (this.flightMultiplierCheckBox.getValue()) {
dto.setFlightMultiplier(this.flightMultiplierTextBox.getValue());
} else {
@@ -697,14 +697,16 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
void removeExpeditionDeviceConfiguration(ExpeditionDeviceConfiguration expeditionDeviceConfiguration);
PairingListTemplateDTO calculatePairingList(final String leaderboardName, Iterable<String> selectedSeriesNames, int competitorsCount, int flightMultiplier)
throws NotFoundException,IllegalArgumentException;
PairingListDTO getPairingListFromTemplate(String leaderboardName, int flightMultiplier, Iterable<String> selectedFlightNames,PairingListTemplateDTO templateDTO)
throws NotFoundException;
PairingListTemplateDTO calculatePairingListTemplate(final int flightCount, final int groupCount, final int competitorCount,
final int flightMultiplier)
throws NotFoundException, IllegalArgumentException;
PairingListDTO getPairingListFromTemplate(String leaderboardName, int flightMultiplier,
Iterable<String> selectedFlightNames, PairingListTemplateDTO templateDTO) throws NotFoundException;
PairingListDTO getPairingListFromRaceLogs(String leaderboardName) throws NotFoundException;
void fillRaceLogsFromPairingListTemplate(String leaderboardName, int flightMultiplier, Iterable<String> selectedFlightNames,PairingListTemplateDTO templateDTO)
void fillRaceLogsFromPairingListTemplate(String leaderboardName, int flightMultiplier,
Iterable<String> selectedFlightNames, PairingListTemplateDTO templateDTO)
throws NotFoundException, CompetitorRegistrationOnRaceLogDisabledException;
}
@@ -892,8 +892,8 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
* is thrown if the leaderboard is not found by name
* @throws IllegalArgumentException
*/
void calculatePairingList(final String leaderboardName, final Iterable<String> selectedFlightNames,
int competitorCount, int flightMultiplier, AsyncCallback<PairingListTemplateDTO> callback)
void calculatePairingListTemplate(final int flightCount, final int groupCount, final int competitorCount,
final int flightMultiplier, AsyncCallback<PairingListTemplateDTO> callback)
throws NotFoundException, IllegalArgumentException;
/**
@@ -57,7 +57,6 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
import com.sap.sailing.competitorimport.CompetitorProvider;
import com.sap.sailing.domain.abstractlog.AbstractLog;
import com.sap.sailing.domain.abstractlog.AbstractLogEvent;
@@ -6795,31 +6794,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
@Override
public PairingListTemplateDTO calculatePairingList(final String leaderboardName, Iterable<String> selectedFlightNames, int competitorsCount,
int flightMultiplier) {
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
List<RaceColumn> selectedRaces = new ArrayList<RaceColumn>();
for (String flightName : selectedFlightNames) {
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
if (flightName.equalsIgnoreCase(raceColumn.getName())) {
selectedRaces.add(raceColumn);
}
}
}
public PairingListTemplateDTO calculatePairingListTemplate(final int flightCount, final int groupCount,
final int competitorCount, final int flightMultiplier) {
PairingListTemplate template = getService().createPairingListFromRegatta(leaderboardName, competitorsCount,
flightMultiplier, Util.size(selectedRaces));
PairingListTemplate template = getService().createPairingListTemplate(flightCount, groupCount, competitorCount,
flightMultiplier);
int flightCount = 0;
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
if (Util.contains(selectedFlightNames, raceColumn.getName())) {
flightCount++;
}
}
int groupCount = (int) (template.getPairingListTemplate().length / flightCount);
return new PairingListTemplateDTO(flightCount, groupCount,
competitorsCount, flightMultiplier, template.getPairingListTemplate(), template.getQuality(), selectedFlightNames);
return new PairingListTemplateDTO(flightCount, groupCount, competitorCount, flightMultiplier,
template.getPairingListTemplate(), template.getQuality());
}
@Override
@@ -6878,7 +6860,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
new BoatDTO(competitorAndBoatPair.getB().getName(), competitorAndBoatPair.getB().getSailID(),
competitorAndBoatPair.getB().getColor())));
}
raceColumnList.add(fleetList);
if (fleetList.size() > 0) {
raceColumnList.add(fleetList);
}
}
if (raceColumnList.size() > 0) {
result.add(raceColumnList);
@@ -6915,7 +6899,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
}
// TODO set boat and competitors in race logs (bug2822)
//TODO add Javadoc to setCompetitorRegistrationsInRacelog
// TODO add Javadoc to setCompetitorRegistrationsInRacelog
this.setCompetitorRegistrationsInRaceLog(leaderboard.getName(), raceColumn.getName(),
fleet.getName(), competitors);
groupCount++;
@@ -826,8 +826,8 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
* @param flightMultiplier specifies how often the flights will be cloned
* @return calculated {@link PairingListTemplate}
*/
PairingListTemplate createPairingListFromRegatta(final String leaderboardName, final int competitorsCount,
final int flightMultiplier, final int flightsCount);
PairingListTemplate createPairingListTemplate(final int flightsCount, final int groupsCount,
final int competitorsCount, final int flightMultiplier);
/**
* Matches the competitors of a leaderboard to the {@link PairingList}
@@ -120,7 +120,6 @@ import com.sap.sailing.domain.common.dto.EventType;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO;
import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO;
import com.sap.sailing.domain.common.impl.ColorMapImpl;
import com.sap.sailing.domain.common.impl.DataImportProgressImpl;
import com.sap.sailing.domain.common.media.MediaTrack;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
@@ -267,7 +266,6 @@ import com.sap.sse.pairinglist.PairingFrameProvider;
import com.sap.sse.pairinglist.PairingList;
import com.sap.sse.pairinglist.PairingListTemplate;
import com.sap.sse.pairinglist.PairingListTemplateFactory;
import com.sap.sse.pairinglist.impl.PairingListTemplateFactoryImpl;
import com.sap.sse.replication.OperationExecutionListener;
import com.sap.sse.replication.OperationWithResult;
import com.sap.sse.replication.ReplicationMasterDescriptor;
@@ -4158,35 +4156,29 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
}
@Override
public PairingListTemplate createPairingListFromRegatta(final String leaderboardName, int competitorsCount,
final int flightMultiplier, final int flightsCount) {
public PairingListTemplate createPairingListTemplate(final int flightsCount, final int groupsCount,
final int competitorsCount, final int flightMultiplier) {
Leaderboard leaderboard = getLeaderboardByName(leaderboardName);
if (leaderboard != null) {
PairingListTemplate template = pairingListTemplateFactory
.createPairingListTemplate(new PairingFrameProvider() {
PairingListTemplate template = pairingListTemplateFactory
.createPairingListTemplate(new PairingFrameProvider() {
@Override
public int getGroupsCount() {
return Util.size(Util.get(leaderboard.getRaceColumns(), 0).getFleets());
}
@Override
public int getGroupsCount() {
return groupsCount;
}
// TODO set count of selected flights
@Override
public int getFlightsCount() {
return flightsCount;
}
// TODO set count of selected flights
@Override
public int getFlightsCount() {
return flightsCount;
}
@Override
public int getCompetitorsCount() {
return competitorsCount;
}
}, flightMultiplier);
return template;
} else {
return null;
}
@Override
public int getCompetitorsCount() {
return competitorsCount;
}
}, flightMultiplier);
return template;
}
@Override