mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-09 22:01:02 +00:00
fixed bug 1447 by removing columns first, then inserting with index
Conflicts: java/com.sap.sailing.gwt.ui/SailingGWT sdm.launch
This commit is contained in:
1 parent
19c54b8076
commit
560eb61431
6 files changed
+49
-32
No files matched your search
@@ -4,7 +4,6 @@
|
||||
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
|
||||
<booleanAttribute key="com.google.gdt.eclipse.suiteWarArgumentProcessor.IS_WAR_FROM_PROJECT_PROPERTIES" value="true"/>
|
||||
<booleanAttribute key="com.google.gwt.eclipse.core.CODE_SERVER_PORT_AUTO" value="true"/>
|
||||
<listAttribute key="com.google.gwt.eclipse.core.ENTRY_POINT_MODULES">
|
||||
<listEntry value="com.sap.sailing.gwt.ui.Simulator"/>
|
||||
<listEntry value="com.sap.sailing.gwt.ui.Leaderboard"/>
|
||||
<listEntry value="com.sap.sailing.gwt.ui.PolarSheets"/>
|
||||
@@ -17,8 +16,6 @@
|
||||
<listEntry value="com.sap.sailing.gwt.ui.RaceBoard"/>
|
||||
<listEntry value="com.sap.sailing.gwt.ui.YoutubePopup"/>
|
||||
<listEntry value="com.sap.sailing.gwt.AutoPlay"/>
|
||||
<listEntry value="com.sap.sailing.gwt.ui.VideoPopup"/>
|
||||
</listAttribute>
|
||||
<booleanAttribute key="com.google.gwt.eclipse.core.SUPERDEVMODE_ENABLED" value="true"/>
|
||||
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="/gwt/Home.html"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
|
||||
+23
-20
@@ -31,6 +31,7 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.SeriesDTO;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
@@ -289,14 +290,16 @@ public class RegattaDetailsComposite extends Composite {
|
||||
final boolean seriesNameChanged = !series.getName().equals(seriesDescriptor.getSeriesName());
|
||||
final RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName());
|
||||
List<RaceColumnDTO> existingRaceColumns = series.getRaceColumns();
|
||||
final List<String> raceColumnsToAdd = new ArrayList<String>();
|
||||
final List<String> raceColumnsToRemove = new ArrayList<String>();
|
||||
final List<Pair<String, Integer>> raceColumnNamesToAddWithInsertIndex = new ArrayList<>();
|
||||
final List<String> raceColumnsToRemove = new ArrayList<>();
|
||||
|
||||
// TODO see bug 1447: the resulting order currently doesn't necessarily match the order of races in this dialog!
|
||||
int insertIndex = 0;
|
||||
for (RaceColumnDTO newRaceColumn : newRaceColumns) {
|
||||
if (!existingRaceColumns.contains(newRaceColumn)) {
|
||||
raceColumnsToAdd.add(newRaceColumn.getName());
|
||||
raceColumnNamesToAddWithInsertIndex.add(new Pair<>(newRaceColumn.getName(), insertIndex));
|
||||
}
|
||||
insertIndex++;
|
||||
}
|
||||
for (RaceColumnDTO existingRaceColumn : existingRaceColumns) {
|
||||
if (!newRaceColumns.contains(existingRaceColumn)) {
|
||||
@@ -314,32 +317,32 @@ public class RegattaDetailsComposite extends Composite {
|
||||
racesToRemove.append(raceColumnToRemove);
|
||||
}
|
||||
if (raceColumnsToRemove.isEmpty() || Window.confirm(stringMessages.reallyRemoveRace(racesToRemove.toString()))) {
|
||||
sailingService.addRaceColumnsToSeries(regattaIdentifier, series.getName(), raceColumnsToAdd,
|
||||
new AsyncCallback<List<RaceColumnInSeriesDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to add race columns " + raceColumnsToAdd
|
||||
+ " to series " + series.getName() + ": " + caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<RaceColumnInSeriesDTO> raceColumns) {
|
||||
regattaRefresher.fillRegattas();
|
||||
}
|
||||
});
|
||||
|
||||
// first remove:
|
||||
sailingService.removeRaceColumnsFromSeries(regattaIdentifier, series.getName(), raceColumnsToRemove,
|
||||
new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to remove race columns " + raceColumnsToAdd
|
||||
errorReporter.reportError("Error trying to remove race columns " + raceColumnNamesToAddWithInsertIndex
|
||||
+ " from series " + series.getName() + ": " + caught.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void v) {
|
||||
regattaRefresher.fillRegattas();
|
||||
// when successfully removed, insert:
|
||||
sailingService.addRaceColumnsToSeries(regattaIdentifier, series.getName(), raceColumnNamesToAddWithInsertIndex,
|
||||
new AsyncCallback<List<RaceColumnInSeriesDTO>>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to add race columns " + raceColumnNamesToAddWithInsertIndex
|
||||
+ " to series " + series.getName() + ": " + caught.getMessage());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<RaceColumnInSeriesDTO> raceColumns) {
|
||||
regattaRefresher.fillRegattas();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
if (isMedalChanged || seriesResultDiscardingThresholdsChanged || isStartsWithZeroScoreChanged
|
||||
|
||||
+2
-1
@@ -205,7 +205,8 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, UUID defaultCourseAreaUuid,
|
||||
RegattaConfigurationDTO regattaConfiguration, boolean useStartTimeInference);
|
||||
|
||||
List<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List<String> columnNames);
|
||||
List<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName,
|
||||
List<Pair<String, Integer>> columnNames);
|
||||
|
||||
void updateSeries(RegattaIdentifier regattaIdentifier, String seriesName, String newSeriesName, boolean isMedal,
|
||||
int[] resultDiscardingThresholds, boolean startsWithZeroScore,
|
||||
|
||||
+1
-1
@@ -396,7 +396,7 @@ public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageM
|
||||
RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, boolean persistent,
|
||||
ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, boolean useStartTimeInference, AsyncCallback<RegattaDTO> callback);
|
||||
|
||||
void addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List<String> columnNames,
|
||||
void addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List<Pair<String, Integer>> columnNames,
|
||||
AsyncCallback<List<RaceColumnInSeriesDTO>> callback);
|
||||
|
||||
void updateSeries(RegattaIdentifier regattaIdentifier, String seriesName, String newSeriesName, boolean isMedal,
|
||||
|
||||
+8
-6
@@ -3615,11 +3615,11 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
@Override
|
||||
public List<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName,
|
||||
List<String> columnNames) {
|
||||
List<Pair<String, Integer>> columnNamesWithInsertIndex) {
|
||||
List<RaceColumnInSeriesDTO> result = new ArrayList<RaceColumnInSeriesDTO>();
|
||||
for (String columnName : columnNames) {
|
||||
for (Pair<String, Integer> columnNameAndInsertIndex : columnNamesWithInsertIndex) {
|
||||
RaceColumnInSeries raceColumnInSeries = getService().apply(
|
||||
new AddColumnToSeries(regattaIdentifier, seriesName, columnName));
|
||||
new AddColumnToSeries(columnNameAndInsertIndex.getB(), regattaIdentifier, seriesName, columnNameAndInsertIndex.getA()));
|
||||
if (raceColumnInSeries != null) {
|
||||
result.add(convertToRaceColumnInSeriesDTO(raceColumnInSeries));
|
||||
}
|
||||
@@ -3990,11 +3990,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
*/
|
||||
private void addRaceColumnsToRegattaSeries(RegattaDTO regatta, String eventName) {
|
||||
for (SeriesDTO series : regatta.series) {
|
||||
List<String> raceNames = new ArrayList<String>();
|
||||
List<Pair<String, Integer>> raceNamesAndInsertIndex = new ArrayList<>();
|
||||
int insertIndex = 0;
|
||||
for (RaceColumnDTO raceColumnInSeries : series.getRaceColumns()) {
|
||||
raceNames.add(raceColumnInSeries.getName());
|
||||
raceNamesAndInsertIndex.add(new Pair<>(raceColumnInSeries.getName(), insertIndex));
|
||||
insertIndex++;
|
||||
}
|
||||
addRaceColumnsToSeries(regatta.getRegattaIdentifier(), series.getName(), raceNames);
|
||||
addRaceColumnsToSeries(regatta.getRegattaIdentifier(), series.getName(), raceNamesAndInsertIndex);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+15
-1
@@ -9,8 +9,18 @@ import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColumnInSeries> {
|
||||
private static final long serialVersionUID = 8987540636040301063L;
|
||||
|
||||
/**
|
||||
* -1 means append
|
||||
*/
|
||||
private final int insertIndex;
|
||||
|
||||
public AddColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
||||
this(/* insertIndex==-1 means append */ -1, regattaIdentifier, seriesName, columnName);
|
||||
}
|
||||
|
||||
public AddColumnToSeries(int insertIndex, RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
||||
super(regattaIdentifier, seriesName, columnName);
|
||||
this.insertIndex = insertIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -18,7 +28,11 @@ public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColum
|
||||
RaceColumnInSeries result = null;
|
||||
Series series = getSeries(toState);
|
||||
if (series != null) {
|
||||
result = series.addRaceColumn(getColumnName(), toState);
|
||||
if (insertIndex == -1) {
|
||||
result = series.addRaceColumn(getColumnName(), toState);
|
||||
} else {
|
||||
result = series.addRaceColumn(insertIndex, getColumnName(), toState);
|
||||
}
|
||||
if (result != null && series.getRegatta().isPersistent()) {
|
||||
toState.updateStoredRegatta(series.getRegatta());
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user