mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-06 19:12:23 +00:00
- Fixing a mjaor issue when importing master data from a legacy server (--> with MadiaTrack.assignedRace being de-serialized as null)
- Minor refactorings and clean ups
This commit is contained in:
1 parent
e92c74ea49
commit
025fb7b2eb
6 files changed
+47
-25
No files matched your search
+1
-1
@@ -95,12 +95,12 @@ public class MediaTrack implements Serializable {
|
||||
|
||||
public MediaTrack(String title, String url, TimePoint startTime, Duration duration, MimeType mimeType,
|
||||
Set<RegattaAndRaceIdentifier> assignedRaces) {
|
||||
this();
|
||||
this.title = title;
|
||||
this.url = url;
|
||||
this.startTime = startTime;
|
||||
this.duration = duration;
|
||||
this.mimeType = mimeType;
|
||||
this.assignedRaces = new HashSet<RegattaAndRaceIdentifier>();
|
||||
if (assignedRaces != null) {
|
||||
this.assignedRaces.addAll(assignedRaces);
|
||||
}
|
||||
|
||||
+8
-6
@@ -205,16 +205,18 @@ public class MediaDBImpl implements MediaDB {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRace(String dbId, Set<RegattaAndRaceIdentifier> regattasAndRaces) {
|
||||
public void updateRace(String dbId, Set<RegattaAndRaceIdentifier> assignedRaces) {
|
||||
BasicDBObject updateQuery = new BasicDBObject();
|
||||
updateQuery.append(DbNames.Fields._id.name(), new ObjectId(dbId));
|
||||
|
||||
BasicDBList objectList = new BasicDBList();
|
||||
for (RegattaAndRaceIdentifier regattaAndRace : regattasAndRaces) {
|
||||
BasicDBObject object = new BasicDBObject();
|
||||
object.put(DbNames.Fields.REGATTA_NAME.name(), regattaAndRace.getRegattaName());
|
||||
object.put(DbNames.Fields.RACE_NAME.name(), regattaAndRace.getRaceName());
|
||||
objectList.add(object);
|
||||
if (assignedRaces != null) {
|
||||
for (RegattaAndRaceIdentifier assignedRace : assignedRaces) {
|
||||
BasicDBObject object = new BasicDBObject();
|
||||
object.put(DbNames.Fields.REGATTA_NAME.name(), assignedRace.getRegattaName());
|
||||
object.put(DbNames.Fields.RACE_NAME.name(), assignedRace.getRaceName());
|
||||
objectList.add(object);
|
||||
}
|
||||
}
|
||||
BasicDBObject updateCommand = new BasicDBObject();
|
||||
updateCommand.append("$set", new BasicDBObject(DbNames.Fields.ASSIGNED_RACES.name(), objectList));
|
||||
|
||||
+14
-12
@@ -174,19 +174,16 @@ public class MediaMultiSelectionControl extends AbstractMediaSelectionControl im
|
||||
private ToggleButton createConnectButton(final MediaTrack videoTrack) {
|
||||
final ToggleButton connectButton = new ToggleButton();
|
||||
connectButton.setValue(videoTrack.assignedRaces
|
||||
.contains(((MediaPlayerManagerComponent) mediaPlayerManager).getRaceIdentifier()));
|
||||
.contains(mediaPlayerManager.getCurrentRace()));
|
||||
connectButton.setTitle("Connect video to this race");
|
||||
connectButton.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
|
||||
|
||||
@Override
|
||||
public void onValueChange(ValueChangeEvent<Boolean> changeEvent) {
|
||||
if (connectButton.isDown()) {
|
||||
connectVideoToRace(videoTrack);
|
||||
setEnableOfVideoTrack(connectButton, true);
|
||||
connectVideoToRace(videoTrack, connectButton);
|
||||
} else {
|
||||
disconnectVideoFromRace(videoTrack);
|
||||
setEnableOfVideoTrack(connectButton, false);
|
||||
mediaPlayerManager.closeFloatingVideo(videoTrack);
|
||||
disconnectVideoFromRace(videoTrack, connectButton);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -205,31 +202,36 @@ public class MediaMultiSelectionControl extends AbstractMediaSelectionControl im
|
||||
}
|
||||
}
|
||||
|
||||
private void disconnectVideoFromRace(final MediaTrack videoTrack) {
|
||||
videoTrack.assignedRaces.remove(((MediaPlayerManagerComponent)mediaPlayerManager).getRaceIdentifier());
|
||||
((MediaPlayerManagerComponent)mediaPlayerManager).getMediaService().updateRace(videoTrack, new AsyncCallback<Void>() {
|
||||
private void disconnectVideoFromRace(final MediaTrack videoTrack, final ToggleButton connectButton) {
|
||||
videoTrack.assignedRaces.remove(mediaPlayerManager.getCurrentRace());
|
||||
mediaPlayerManager.getMediaService().updateRace(videoTrack, new AsyncCallback<Void>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable t) {
|
||||
mediaPlayerManager.getErrorReporter().reportError(t.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void allMediaTracks) {
|
||||
setEnableOfVideoTrack(connectButton, false);
|
||||
mediaPlayerManager.closeFloatingVideo(videoTrack);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void connectVideoToRace(final MediaTrack videoTrack) {
|
||||
videoTrack.assignedRaces.add(((MediaPlayerManagerComponent)mediaPlayerManager).getRaceIdentifier());
|
||||
((MediaPlayerManagerComponent)mediaPlayerManager).getMediaService().updateRace(videoTrack, new AsyncCallback<Void>() {
|
||||
private void connectVideoToRace(final MediaTrack videoTrack, final ToggleButton connectButton) {
|
||||
videoTrack.assignedRaces.add(mediaPlayerManager.getCurrentRace());
|
||||
mediaPlayerManager.getMediaService().updateRace(videoTrack, new AsyncCallback<Void>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable t) {
|
||||
mediaPlayerManager.getErrorReporter().reportError(t.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void allMediaTracks) {
|
||||
setEnableOfVideoTrack(connectButton, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+9
@@ -4,7 +4,10 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
|
||||
import com.sap.sse.gwt.client.useragent.UserAgentDetails;
|
||||
|
||||
public interface MediaPlayerManager {
|
||||
@@ -57,5 +60,11 @@ public interface MediaPlayerManager {
|
||||
|
||||
UserAgentDetails getUserAgent();
|
||||
|
||||
RegattaAndRaceIdentifier getCurrentRace();
|
||||
|
||||
MediaServiceAsync getMediaService();
|
||||
|
||||
ErrorReporter getErrorReporter();
|
||||
|
||||
}
|
||||
|
||||
+12
-5
@@ -91,8 +91,8 @@ public class MediaPlayerManagerComponent implements Component<Void>, PlayStateLi
|
||||
this.raceTimer.addPlayStateListener(this);
|
||||
this.raceTimer.addTimeListener(this);
|
||||
this.mediaService = mediaService;
|
||||
mediaService.getMediaTracksForRace(this.getRaceIdentifier(), getAssignedMediaCallback());
|
||||
mediaService.getMediaTracksInTimeRange(this.getRaceIdentifier(), getOverlappingMediaCallback());
|
||||
mediaService.getMediaTracksForRace(this.getCurrentRace(), getAssignedMediaCallback());
|
||||
mediaService.getMediaTracksInTimeRange(this.getCurrentRace(), getOverlappingMediaCallback());
|
||||
this.stringMessages = stringMessages;
|
||||
this.errorReporter = errorReporter;
|
||||
this.userAgent = userAgent;
|
||||
@@ -510,7 +510,7 @@ public class MediaPlayerManagerComponent implements Component<Void>, PlayStateLi
|
||||
}
|
||||
|
||||
private TimePoint getRaceStartTime() {
|
||||
Date startOfRace = raceTimesInfoProvider.getRaceTimesInfo(getRaceIdentifier()).startOfRace;
|
||||
Date startOfRace = raceTimesInfoProvider.getRaceTimesInfo(getCurrentRace()).startOfRace;
|
||||
if (startOfRace != null) {
|
||||
return new MillisecondsTimePoint(startOfRace);
|
||||
} else {
|
||||
@@ -609,7 +609,7 @@ public class MediaPlayerManagerComponent implements Component<Void>, PlayStateLi
|
||||
TimePoint raceStartTime = getRaceStartTime();
|
||||
TimePoint defaultStartTime = raceStartTime;
|
||||
NewMediaDialog dialog = new NewMediaDialog(defaultStartTime, MediaPlayerManagerComponent.this.stringMessages,
|
||||
this.getRaceIdentifier(), new DialogCallback<MediaTrack>() {
|
||||
this.getCurrentRace(), new DialogCallback<MediaTrack>() {
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
@@ -779,12 +779,19 @@ public class MediaPlayerManagerComponent implements Component<Void>, PlayStateLi
|
||||
return userAgent;
|
||||
}
|
||||
|
||||
public RegattaAndRaceIdentifier getRaceIdentifier() {
|
||||
@Override
|
||||
public RegattaAndRaceIdentifier getCurrentRace() {
|
||||
return raceIdentifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MediaServiceAsync getMediaService() {
|
||||
return mediaService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorReporter getErrorReporter() {
|
||||
return errorReporter;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -225,7 +225,9 @@ class MediaLibrary {
|
||||
if (mediaTrack != null) {
|
||||
updateMapByRace_Remove(mediaTrack); //Cannot use updateCache_Update method, because race is changed
|
||||
mediaTrack.assignedRaces.clear();
|
||||
mediaTrack.assignedRaces.addAll(changedMediaTrack.assignedRaces);
|
||||
if (changedMediaTrack.assignedRaces != null) { //safety check for imports from legacy installations which have no assignedRaces field
|
||||
mediaTrack.assignedRaces.addAll(changedMediaTrack.assignedRaces);
|
||||
}
|
||||
updateMapByRace_Add(mediaTrack);
|
||||
}
|
||||
} finally {
|
||||
|
||||
Reference in new issue
Block a user