mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-30 15:57:11 +00:00
Introduced fullscreen viewer for home, moved necessary media classes to sse
This commit is contained in:
1 parent
2bce767cf8
commit
1e0f861344
52 files changed
+309
-201
No files matched your search
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.domain.common.impl;
|
||||
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
public class ImageSizeImpl implements ImageSize {
|
||||
private static final long serialVersionUID = 1170701774852068780L;
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
package com.sap.sailing.domain.common.media;
|
||||
|
||||
public enum MediaCategory {
|
||||
highlight, livestream;
|
||||
}
|
||||
+2
@@ -8,6 +8,8 @@ import java.util.Set;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.media.MediaSubType;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
/**
|
||||
* See http://my.opera.com/core/blog/2010/03/03/everything-you-need-to-know-about-html5-video-and-audio-2
|
||||
|
||||
+1
-1
@@ -6,9 +6,9 @@ import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
/**
|
||||
* Offers CRUD methods for mongo representation of media track objects.
|
||||
|
||||
+1
-1
@@ -19,12 +19,12 @@ import com.mongodb.WriteConcern;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDB;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
/**
|
||||
* MongoDB Java API examples: http://blog.rasc.ch/?p=1096
|
||||
|
||||
+1
-1
@@ -3,11 +3,11 @@ package com.sap.sailing.domain.base;
|
||||
import java.net.URL;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.common.Renamable;
|
||||
import com.sap.sse.common.Named;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.WithID;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
/**
|
||||
* Base interface for an Event consisting of all static information, which might be shared
|
||||
|
||||
+1
-1
@@ -9,8 +9,8 @@ import java.util.concurrent.ExecutionException;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
/**
|
||||
* A simplified implementation of the {@link EventBase} interface which maintains an immutable collection of
|
||||
|
||||
+1
-1
@@ -19,8 +19,8 @@ import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.impl.EventImpl;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.common.impl.ImageSizeImpl;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
public class CalculateImageSizeFromUrlTest {
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import java.net.URL;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
/**
|
||||
* An event is a group of {@link Regatta regattas} carried out at a common venue within a common time frame. For
|
||||
|
||||
@@ -26,11 +26,11 @@ import javax.imageio.stream.ImageInputStream;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.common.impl.ImageSizeImpl;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
public class EventImpl extends EventBaseImpl implements Event {
|
||||
private static final long serialVersionUID = 855135446595485715L;
|
||||
|
||||
+10
-8
@@ -12,8 +12,9 @@ import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.home.client.app.PlaceNavigator;
|
||||
import com.sap.sailing.gwt.ui.shared.media.ImageMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.VideoMetadataDTO;
|
||||
import com.sap.sailing.gwt.home.client.shared.media.SailingFullscreenViewer;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO;
|
||||
import com.sap.sse.gwt.client.controls.carousel.ImageCarousel;
|
||||
|
||||
public class MainMedia extends Composite {
|
||||
@@ -27,7 +28,7 @@ public class MainMedia extends Composite {
|
||||
DivElement videoLightBoxData;
|
||||
|
||||
@UiField
|
||||
ImageCarousel imageCarousel;
|
||||
ImageCarousel<SailingImageDTO> imageCarousel;
|
||||
|
||||
interface MainMediaUiBinder extends UiBinder<Widget, MainMedia> {
|
||||
}
|
||||
@@ -37,20 +38,21 @@ public class MainMedia extends Composite {
|
||||
public MainMedia(PlaceNavigator navigator) {
|
||||
MainMediaResources.INSTANCE.css().ensureInjected();
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
imageCarousel.registerFullscreenViewer(new SailingFullscreenViewer());
|
||||
}
|
||||
|
||||
public void setData(Collection<VideoMetadataDTO> videos, ArrayList<ImageMetadataDTO> photos) {
|
||||
Iterator<VideoMetadataDTO> videoIterator = videos.iterator();
|
||||
public void setData(Collection<SailingVideoDTO> videos, ArrayList<SailingImageDTO> photos) {
|
||||
Iterator<SailingVideoDTO> videoIterator = videos.iterator();
|
||||
int videoCount = 0;
|
||||
while(videoCount < MAX_VIDEO_COUNT && videoIterator.hasNext()) {
|
||||
VideoMetadataDTO videoDTO = videoIterator.next();
|
||||
SailingVideoDTO videoDTO = videoIterator.next();
|
||||
MainMediaVideo video = new MainMediaVideo(videoDTO.getTitle(), videoDTO.getSourceRef(),
|
||||
videoDTO.getMimeType());
|
||||
videosPanel.add(video);
|
||||
videoCount++;
|
||||
}
|
||||
for (ImageMetadataDTO image : photos) {
|
||||
imageCarousel.addImage(image.getSourceRef(), image.getHeightInPx(), image.getWidthInPx());
|
||||
for (SailingImageDTO image : photos) {
|
||||
imageCarousel.addImage(image);
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -9,10 +9,10 @@ import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.gwt.home.client.shared.LongNamesUtil;
|
||||
import com.sap.sailing.gwt.ui.client.media.VideoJSPlayer;
|
||||
import com.sap.sailing.gwt.ui.shared.media.VideoMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class MainMediaVideo extends Composite {
|
||||
|
||||
@@ -64,7 +64,7 @@ public class MainMediaVideo extends Composite {
|
||||
|
||||
}
|
||||
|
||||
public void show(VideoMetadataDTO videoCandidateInfo) {
|
||||
public void show(SailingVideoDTO videoCandidateInfo) {
|
||||
vJs.setSource(videoCandidateInfo.getSourceRef(), videoCandidateInfo.getMimeType());
|
||||
|
||||
}
|
||||
|
||||
+6
-6
@@ -17,9 +17,9 @@ import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.media.GalleryImageHolder;
|
||||
import com.sap.sailing.gwt.ui.client.media.VideoJSPlayer;
|
||||
import com.sap.sailing.gwt.ui.client.media.VideoThumbnail;
|
||||
import com.sap.sailing.gwt.ui.shared.media.ImageMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.VideoMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO;
|
||||
|
||||
public class MediaPage extends Composite {
|
||||
private static MediaPageUiBinder uiBinder = GWT.create(MediaPageUiBinder.class);
|
||||
@@ -85,7 +85,7 @@ public class MediaPage extends Composite {
|
||||
break;
|
||||
}
|
||||
|
||||
for (final ImageMetadataDTO holder : media.getPhotos()) {
|
||||
for (final SailingImageDTO holder : media.getPhotos()) {
|
||||
if (holder.getSourceRef() != null) {
|
||||
|
||||
GalleryImageHolder gih = new GalleryImageHolder(holder);
|
||||
@@ -96,7 +96,7 @@ public class MediaPage extends Composite {
|
||||
gih.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
new FullscreenViewer(holder, media.getPhotos());
|
||||
new SailingFullscreenViewer().show(holder, media.getPhotos());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -113,7 +113,7 @@ public class MediaPage extends Composite {
|
||||
videoListOuterBoxUi.addClassName(res.mediaCss().large3());
|
||||
}
|
||||
boolean first = true;
|
||||
for (final VideoMetadataDTO videoCandidateInfo : media.getVideos()) {
|
||||
for (final SailingVideoDTO videoCandidateInfo : media.getVideos()) {
|
||||
if (first) {
|
||||
putVideoOnDisplay(videoCandidateInfo, false);
|
||||
first = false;
|
||||
@@ -137,7 +137,7 @@ public class MediaPage extends Composite {
|
||||
}
|
||||
}
|
||||
|
||||
private void putVideoOnDisplay(final VideoMetadataDTO videoCandidateInfo, boolean autoplay) {
|
||||
private void putVideoOnDisplay(final SailingVideoDTO videoCandidateInfo, boolean autoplay) {
|
||||
videoDisplayUi = new VideoJSPlayer(true, autoplay);
|
||||
videoDisplayUi.setSource(videoCandidateInfo.getSourceRef(), videoCandidateInfo.getMimeType());
|
||||
videoDisplayHolderUi.setWidget(videoDisplayUi);
|
||||
|
||||
+6
-4
@@ -15,9 +15,10 @@ import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.ui.PopupPanel;
|
||||
import com.google.gwt.user.client.ui.PopupPanel.PositionCallback;
|
||||
import com.google.gwt.user.client.ui.RootPanel;
|
||||
import com.sap.sailing.gwt.ui.shared.media.ImageMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
import com.sap.sse.gwt.client.controls.carousel.ImageCarousel.FullscreenViewer;
|
||||
|
||||
public class FullscreenViewer {
|
||||
public class SailingFullscreenViewer implements FullscreenViewer<SailingImageDTO> {
|
||||
private PopupPanel popup = new PopupPanel(true) {
|
||||
protected void onPreviewNativeEvent(NativePreviewEvent event) {
|
||||
if (event.getTypeInt() == Event.ONKEYDOWN && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
|
||||
@@ -26,8 +27,8 @@ public class FullscreenViewer {
|
||||
};
|
||||
};
|
||||
|
||||
public FullscreenViewer(ImageMetadataDTO selected, List<ImageMetadataDTO> images) {
|
||||
final GalleryPlayer viewer = new GalleryPlayer(selected, images);
|
||||
public void show(SailingImageDTO selected, List<SailingImageDTO> images) {
|
||||
final SailingGalleryPlayer viewer = new SailingGalleryPlayer(selected, images);
|
||||
|
||||
Window.addResizeHandler(new ResizeHandler() {
|
||||
@Override
|
||||
@@ -63,4 +64,5 @@ public class FullscreenViewer {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
+9
-9
@@ -15,14 +15,14 @@ import com.google.gwt.uibinder.client.UiHandler;
|
||||
import com.google.gwt.user.client.Command;
|
||||
import com.google.gwt.user.client.ui.ResizeComposite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.shared.media.ImageMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
import com.sap.sse.gwt.client.controls.carousel.ImageCarousel;
|
||||
|
||||
public class GalleryPlayer extends ResizeComposite {
|
||||
private static GalleryPlayerUiBinder uiBinder = GWT.create(GalleryPlayerUiBinder.class);
|
||||
public class SailingGalleryPlayer extends ResizeComposite {
|
||||
private static MyBinder uiBinder = GWT.create(MyBinder.class);
|
||||
private Command closeCommand;
|
||||
|
||||
interface GalleryPlayerUiBinder extends UiBinder<Widget, GalleryPlayer> {
|
||||
interface MyBinder extends UiBinder<Widget, SailingGalleryPlayer> {
|
||||
}
|
||||
|
||||
@UiField
|
||||
@@ -30,19 +30,19 @@ public class GalleryPlayer extends ResizeComposite {
|
||||
@UiField
|
||||
DivElement subSliderUi;
|
||||
|
||||
ImageCarousel carousel = new ImageCarousel();
|
||||
ImageCarousel<SailingImageDTO> carousel = new ImageCarousel<>();
|
||||
private int selectedIdx;
|
||||
|
||||
public GalleryPlayer(ImageMetadataDTO selected, List<ImageMetadataDTO> images) {
|
||||
public SailingGalleryPlayer(SailingImageDTO selected, List<SailingImageDTO> images) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
selectedIdx = Math.max(selectedIdx, images.indexOf(selected));
|
||||
for (ImageMetadataDTO i : images) {
|
||||
for (SailingImageDTO i : images) {
|
||||
mainSliderUi.appendChild(createMainImgElement(i));
|
||||
subSliderUi.appendChild(createThumbImgElement(i));
|
||||
}
|
||||
}
|
||||
|
||||
private ImageElement createThumbImgElement(ImageMetadataDTO i ) {
|
||||
private ImageElement createThumbImgElement(SailingImageDTO i ) {
|
||||
ImageElement img = Document.get().createImageElement();
|
||||
img.setAttribute("src", i.getSourceRef());
|
||||
img.setHeight(100);
|
||||
@@ -50,7 +50,7 @@ public class GalleryPlayer extends ResizeComposite {
|
||||
return img;
|
||||
}
|
||||
|
||||
private DivElement createMainImgElement(ImageMetadataDTO i) {
|
||||
private DivElement createMainImgElement(SailingImageDTO i) {
|
||||
DivElement img = Document.get().createDivElement();
|
||||
img.getStyle().setBackgroundImage("url(\"" + i.getSourceRef() + "\")");
|
||||
img.getStyle().setProperty("backgroundSize", "contain");
|
||||
File renamed without changes.
-1
@@ -32,7 +32,6 @@ public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
|
||||
private DockLayoutPanel containerPanel;
|
||||
private RaceDetailPanel detailPanel;
|
||||
private RegattaOverviewPanel regattaPanel;
|
||||
private SAPHeader2 logoAndTitlePanel;
|
||||
private final Label eventNameLabel = new Label();
|
||||
private final Label venueNameLabel = new Label();
|
||||
private final Label clockLabel = new Label();
|
||||
|
||||
+1
-2
@@ -92,7 +92,6 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component
|
||||
private final VerticalPanel mainPanel;
|
||||
private final DateTimeFormat timeFormatter = DateTimeFormat.getFormat("HH:mm:ss");
|
||||
private final DateTimeFormat dateFormatter = DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT);
|
||||
private final RegattaOverviewResources.LocalCss style = RegattaOverviewResources.INSTANCE.css();
|
||||
private final SailingServiceAsync sailingService;
|
||||
private final StringMessages stringMessages;
|
||||
private final UUID eventId;
|
||||
@@ -390,7 +389,7 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component
|
||||
return result;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
private void createColumns() {
|
||||
regattaOverviewListHandler = new ListHandler<RegattaOverviewEntryDTO>(regattaOverviewDataProvider.getList());
|
||||
courseAreaColumn = new TextColumn<RegattaOverviewEntryDTO>() {
|
||||
|
||||
+16
-16
@@ -25,9 +25,6 @@ import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.common.media.MediaType;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
@@ -45,10 +42,10 @@ import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO.EventSeriesSt
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sailing.gwt.ui.shared.media.ImageMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaUtils;
|
||||
import com.sap.sailing.gwt.ui.shared.media.VideoMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.start.EventStageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StageEventType;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StartViewDTO;
|
||||
@@ -60,6 +57,9 @@ import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.impl.TimeRangeImpl;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
import com.sap.sse.common.media.MediaType;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.util.ServiceTrackerFactory;
|
||||
|
||||
/**
|
||||
@@ -189,7 +189,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
|
||||
MimeType type = MediaUtils.detectMimeTypeFromUrl(youTubeRandomUrl.toString());
|
||||
if (type.mediaType == MediaType.video) {
|
||||
VideoMetadataDTO candidate = new VideoMetadataDTO(eventRef, youTubeRandomUrl, type,
|
||||
SailingVideoDTO candidate = new SailingVideoDTO(eventRef, youTubeRandomUrl, type,
|
||||
holder.event.getName());
|
||||
result.addVideo(candidate);
|
||||
}
|
||||
@@ -203,9 +203,9 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
}
|
||||
});
|
||||
|
||||
final Set<ImageMetadataDTO> photoGalleryUrls = new HashSet<>(); // using a HashSet here leads to a reasonable
|
||||
final Set<SailingImageDTO> photoGalleryUrls = new HashSet<>(); // using a HashSet here leads to a reasonable
|
||||
// amount of shuffling
|
||||
final List<VideoMetadataDTO> videoCandidates = new ArrayList<>();
|
||||
final List<SailingVideoDTO> videoCandidates = new ArrayList<>();
|
||||
|
||||
for(EventHolder holder : recentEventsOfLast12Month) {
|
||||
if(result.getRecentEvents().size() < MAX_RECENT_EVENTS) {
|
||||
@@ -220,7 +220,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
ImageSize imageSize = event.getImageSize(url);
|
||||
if(imageSize != null) {
|
||||
// TODO: do we habe a title?
|
||||
photoGalleryUrls.add(new ImageMetadataDTO(eventRef, url, imageSize, null));
|
||||
photoGalleryUrls.add(new SailingImageDTO(eventRef, url.toString(), imageSize, null));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
@@ -229,7 +229,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
|
||||
MimeType type = MediaUtils.detectMimeTypeFromUrl(videoUrl.toString());
|
||||
if (type.mediaType == MediaType.video) {
|
||||
VideoMetadataDTO candidate = new VideoMetadataDTO(eventRef, videoUrl, type, holder.event.getName());
|
||||
SailingVideoDTO candidate = new SailingVideoDTO(eventRef, videoUrl, type, holder.event.getName());
|
||||
videoCandidates.add(candidate);
|
||||
}
|
||||
}
|
||||
@@ -238,7 +238,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
final int numberOfCandidatesAvailable = videoCandidates.size();
|
||||
if (numberOfCandidatesAvailable <= (MAX_VIDEO_COUNT - result.getVideos().size())) {
|
||||
// add all we have, no randomize
|
||||
for (VideoMetadataDTO video : videoCandidates) {
|
||||
for (SailingVideoDTO video : videoCandidates) {
|
||||
result.addVideo(video);
|
||||
}
|
||||
} else {
|
||||
@@ -246,7 +246,7 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
final Random videosRandomizer = new Random(numberOfCandidatesAvailable);
|
||||
randomlyPick: for (int i = 0; i < numberOfCandidatesAvailable; i++) {
|
||||
int nextVideoindex = videosRandomizer.nextInt(numberOfCandidatesAvailable);
|
||||
final VideoMetadataDTO video = videoCandidates.get(nextVideoindex);
|
||||
final SailingVideoDTO video = videoCandidates.get(nextVideoindex);
|
||||
result.addVideo(video);
|
||||
if (result.getVideos().size() == MAX_VIDEO_COUNT) {
|
||||
break randomlyPick;
|
||||
@@ -254,12 +254,12 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
}
|
||||
}
|
||||
Random random = new Random();
|
||||
List<ImageMetadataDTO> shuffledPhotoGallery = new ArrayList<>(photoGalleryUrls);
|
||||
List<SailingImageDTO> shuffledPhotoGallery = new ArrayList<>(photoGalleryUrls);
|
||||
final int gallerySize = photoGalleryUrls.size();
|
||||
for (int i = 0; i < gallerySize; i++) {
|
||||
Collections.swap(shuffledPhotoGallery, i, random.nextInt(gallerySize));
|
||||
}
|
||||
for (ImageMetadataDTO holder : shuffledPhotoGallery) {
|
||||
for (SailingImageDTO holder : shuffledPhotoGallery) {
|
||||
result.addPhoto(holder);
|
||||
}
|
||||
// TODO media
|
||||
@@ -429,13 +429,13 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
} catch (InterruptedException | ExecutionException e) {
|
||||
logger.log(Level.FINE, "Was unable to obtain image size for "+url+" earlier.", e);
|
||||
}
|
||||
ImageMetadataDTO entry = new ImageMetadataDTO(eventRef, url, imageSize, eventName);
|
||||
SailingImageDTO entry = new SailingImageDTO(eventRef, url.toString(), imageSize, eventName);
|
||||
media.addPhoto(entry);
|
||||
}
|
||||
for(URL url : event.getVideoURLs()) {
|
||||
MimeType type = MediaUtils.detectMimeTypeFromUrl(url.toString());
|
||||
if (type.mediaType == MediaType.video) {
|
||||
VideoMetadataDTO candidate = new VideoMetadataDTO(eventRef, url, type, null);
|
||||
SailingVideoDTO candidate = new SailingVideoDTO(eventRef, url, type, null);
|
||||
media.addVideo(candidate);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -19,7 +19,6 @@ import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
@@ -27,6 +26,7 @@ import com.sap.sailing.gwt.ui.shared.eventview.HasRegattaMetadata.RegattaState;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
public final class HomeServiceUtil {
|
||||
private HomeServiceUtil() {
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ import com.google.gwt.event.shared.HandlerRegistration;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.shared.media.ImageMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
|
||||
public class GalleryImageHolder extends Widget implements HasClickHandlers {
|
||||
|
||||
@@ -22,7 +22,7 @@ public class GalleryImageHolder extends Widget implements HasClickHandlers {
|
||||
@UiField
|
||||
DivElement imageHolderUi;
|
||||
|
||||
public GalleryImageHolder(ImageMetadataDTO video) {
|
||||
public GalleryImageHolder(SailingImageDTO video) {
|
||||
setElement(uiBinder.createAndBindUi(this));
|
||||
imageHolderUi.getStyle().setBackgroundImage("url(\"" + video.getSourceRef() + "\")");
|
||||
|
||||
|
||||
+1
-1
@@ -24,7 +24,6 @@ import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack.Status;
|
||||
import com.sap.sailing.domain.common.media.MediaType;
|
||||
import com.sap.sailing.domain.common.security.Roles;
|
||||
import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.RaceTimesInfoProvider;
|
||||
@@ -38,6 +37,7 @@ import com.sap.sailing.gwt.ui.client.media.shared.VideoPlayer;
|
||||
import com.sap.sailing.gwt.ui.client.media.shared.VideoSynchPlayer;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MediaType;
|
||||
import com.sap.sse.common.settings.AbstractSettings;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
|
||||
|
||||
+1
-1
@@ -14,8 +14,8 @@ import com.google.gwt.user.client.ui.PopupPanel;
|
||||
import com.google.gwt.user.client.ui.UIObject;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MediaType;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.media.MediaType;
|
||||
|
||||
public class MediaSingleSelectionControl extends AbstractMediaSelectionControl implements CloseHandler<PopupPanel> {
|
||||
|
||||
|
||||
+1
-1
@@ -17,12 +17,12 @@ import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.common.client.YoutubeApi;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
|
||||
public class NewMediaDialog extends DataEntryDialog<MediaTrack> {
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@ import com.google.gwt.dom.client.VideoElement;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.media.MediaSubType;
|
||||
import com.sap.sailing.domain.common.media.MediaType;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sse.common.media.MediaSubType;
|
||||
import com.sap.sse.common.media.MediaType;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class VideoJSPlayer extends Widget {
|
||||
|
||||
|
||||
+3
-3
@@ -11,9 +11,9 @@ import com.google.gwt.event.shared.HandlerRegistration;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.media.MediaSubType;
|
||||
import com.sap.sailing.gwt.ui.common.client.YoutubeApi;
|
||||
import com.sap.sailing.gwt.ui.shared.media.VideoMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO;
|
||||
import com.sap.sse.common.media.MediaSubType;
|
||||
|
||||
public class VideoThumbnail extends Widget implements HasClickHandlers {
|
||||
|
||||
@@ -28,7 +28,7 @@ public class VideoThumbnail extends Widget implements HasClickHandlers {
|
||||
@UiField
|
||||
ImageElement thumbnailUi;
|
||||
|
||||
public VideoThumbnail(VideoMetadataDTO video) {
|
||||
public VideoThumbnail(SailingVideoDTO video) {
|
||||
setElement(uiBinder.createAndBindUi(this));
|
||||
getElement().addClassName("videoThumbnail");
|
||||
captionUi.setInnerText(video.getTitle());
|
||||
|
||||
+1
-1
@@ -8,8 +8,8 @@ import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.common.dto.NamedDTO;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
public class EventBaseDTO extends NamedDTO implements IsSerializable {
|
||||
private static final long serialVersionUID = 818666323178097939L;
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
||||
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class EventOverviewVideoStageDTO implements EventOverviewStageContentDTO {
|
||||
public enum Type {
|
||||
|
||||
+1
-1
@@ -5,7 +5,6 @@ import java.util.UUID;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.gwt.server.HomeServiceUtil;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.Action;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||
@@ -14,6 +13,7 @@ import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaUtils;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class GetEventOverviewStageAction implements Action<ResultWithTTL<EventOverviewStageDTO>> {
|
||||
private UUID eventId;
|
||||
|
||||
-72
@@ -1,72 +0,0 @@
|
||||
package com.sap.sailing.gwt.ui.shared.media;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.net.URL;
|
||||
import java.util.HashSet;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.domain.common.media.MediaCategory;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
|
||||
public class AbstractMediaDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String title;
|
||||
|
||||
private MimeType mimeType;
|
||||
|
||||
private MediaCategory category;
|
||||
|
||||
private HashSet<String> tags = new HashSet<String>();
|
||||
|
||||
private EventReferenceDTO eventRef;
|
||||
|
||||
private String sourceRef;
|
||||
|
||||
|
||||
protected AbstractMediaDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public AbstractMediaDTO(EventReferenceDTO eventRef, URL url, MimeType mimeType, String title) {
|
||||
this(eventRef, url.toString(), mimeType, title);
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public AbstractMediaDTO(EventReferenceDTO eventRef, String sourceRef, MimeType mimeType, String title) {
|
||||
this.eventRef = eventRef;
|
||||
this.title = title;
|
||||
this.mimeType = mimeType;
|
||||
this.sourceRef = sourceRef;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public MimeType getMimeType() {
|
||||
return mimeType;
|
||||
}
|
||||
|
||||
public MediaCategory getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
public HashSet<String> getTags() {
|
||||
return tags;
|
||||
}
|
||||
|
||||
public String getSourceRef() {
|
||||
return sourceRef;
|
||||
}
|
||||
|
||||
public void setCategory(MediaCategory category) {
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
public EventReferenceDTO getEventRef() {
|
||||
return eventRef;
|
||||
}
|
||||
|
||||
}
|
||||
+6
-6
@@ -6,22 +6,22 @@ import java.util.ArrayList;
|
||||
public class MediaDTO implements Serializable {
|
||||
private static final long serialVersionUID = 4932700214423641309L;
|
||||
|
||||
private ArrayList<ImageMetadataDTO> photos = new ArrayList<>();
|
||||
private ArrayList<VideoMetadataDTO> videos = new ArrayList<>();
|
||||
private ArrayList<SailingImageDTO> photos = new ArrayList<>();
|
||||
private ArrayList<SailingVideoDTO> videos = new ArrayList<>();
|
||||
|
||||
public ArrayList<ImageMetadataDTO> getPhotos() {
|
||||
public ArrayList<SailingImageDTO> getPhotos() {
|
||||
return photos;
|
||||
}
|
||||
|
||||
public void addPhoto(ImageMetadataDTO photo) {
|
||||
public void addPhoto(SailingImageDTO photo) {
|
||||
photos.add(photo);
|
||||
}
|
||||
|
||||
public ArrayList<VideoMetadataDTO> getVideos() {
|
||||
public ArrayList<SailingVideoDTO> getVideos() {
|
||||
return videos;
|
||||
}
|
||||
|
||||
public void addVideo(VideoMetadataDTO video) {
|
||||
public void addVideo(SailingVideoDTO video) {
|
||||
videos.add(video);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -3,7 +3,7 @@ package com.sap.sailing.gwt.ui.shared.media;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
/**
|
||||
* Temporary solution for mimetype detection for current videos.
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package com.sap.sailing.gwt.ui.shared.media;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
import com.sap.sse.common.media.ImageMetadataDTO;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
public class SailingImageDTO extends ImageMetadataDTO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String subtitle;
|
||||
private Date createdAtDate;
|
||||
private String author;
|
||||
|
||||
private EventReferenceDTO eventRef;
|
||||
|
||||
protected SailingImageDTO() {
|
||||
}
|
||||
|
||||
|
||||
public SailingImageDTO(EventReferenceDTO eventRef, String imageURL, ImageSize size, String title) {
|
||||
super(imageURL, size, title);
|
||||
this.eventRef = eventRef;
|
||||
|
||||
}
|
||||
|
||||
public String getSubtitle() {
|
||||
return subtitle;
|
||||
}
|
||||
|
||||
public void setSubtitle(String subtitle) {
|
||||
this.subtitle = subtitle;
|
||||
}
|
||||
|
||||
public Date getCreatedAtDate() {
|
||||
return createdAtDate;
|
||||
}
|
||||
|
||||
public void setCreatedAtDate(Date createdAtDate) {
|
||||
this.createdAtDate = createdAtDate;
|
||||
}
|
||||
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public EventReferenceDTO getEventRef() {
|
||||
return eventRef;
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.sap.sailing.gwt.ui.shared.media;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.common.media.VideoMetadataDTO;
|
||||
|
||||
public class SailingVideoDTO extends VideoMetadataDTO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private EventReferenceDTO eventRef;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private SailingVideoDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public SailingVideoDTO(EventReferenceDTO eventRef, URL url, MimeType mimeType, String title) {
|
||||
this(eventRef, url.toString(), mimeType, title);
|
||||
this.eventRef = eventRef;
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public SailingVideoDTO(EventReferenceDTO eventRef, String url, MimeType mimeType, String title) {
|
||||
super(url, mimeType, title);
|
||||
this.eventRef = eventRef;
|
||||
}
|
||||
|
||||
public EventReferenceDTO getEventRef() {
|
||||
return eventRef;
|
||||
}
|
||||
|
||||
}
|
||||
+8
-8
@@ -7,8 +7,8 @@ import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.ImageMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.VideoMetadataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingImageDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.SailingVideoDTO;
|
||||
|
||||
public class StartViewDTO implements IsSerializable {
|
||||
|
||||
@@ -16,8 +16,8 @@ public class StartViewDTO implements IsSerializable {
|
||||
|
||||
private ArrayList<EventListEventDTO> recentEvents = new ArrayList<EventListEventDTO>();
|
||||
|
||||
private ArrayList<ImageMetadataDTO> photos = new ArrayList<>();
|
||||
private HashSet<VideoMetadataDTO> videos = new HashSet<>();
|
||||
private ArrayList<SailingImageDTO> photos = new ArrayList<>();
|
||||
private HashSet<SailingVideoDTO> videos = new HashSet<>();
|
||||
|
||||
public List<EventStageDTO> getStageEvents() {
|
||||
return stageEvents;
|
||||
@@ -35,19 +35,19 @@ public class StartViewDTO implements IsSerializable {
|
||||
this.recentEvents.add(event);
|
||||
}
|
||||
|
||||
public ArrayList<ImageMetadataDTO> getPhotos() {
|
||||
public ArrayList<SailingImageDTO> getPhotos() {
|
||||
return photos;
|
||||
}
|
||||
|
||||
public void addPhoto(ImageMetadataDTO photo) {
|
||||
public void addPhoto(SailingImageDTO photo) {
|
||||
photos.add(photo);
|
||||
}
|
||||
|
||||
public Collection<VideoMetadataDTO> getVideos() {
|
||||
public Collection<SailingVideoDTO> getVideos() {
|
||||
return videos;
|
||||
}
|
||||
|
||||
public void addVideo(VideoMetadataDTO video) {
|
||||
public void addVideo(SailingVideoDTO video) {
|
||||
videos.add(video);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -13,13 +13,13 @@ import com.mongodb.MongoException;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDB;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDBFactory;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.hamcrest.Matchers.*;
|
||||
|
||||
+1
-1
@@ -11,8 +11,8 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sse.common.media.ImageSize;
|
||||
|
||||
public class EventBaseJsonSerializer implements JsonSerializer<EventBase> {
|
||||
private static final Logger logger = Logger.getLogger(EventBaseJsonSerializer.class.getName());
|
||||
|
||||
+1
-1
@@ -49,7 +49,6 @@ import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
@@ -71,6 +70,7 @@ import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.replication.ReplicationMasterDescriptor;
|
||||
import com.sap.sse.replication.impl.ReplicationReceiver;
|
||||
import com.sap.sse.replication.testsupport.AbstractServerReplicationTestSetUp.ReplicationServiceTestImpl;
|
||||
|
||||
+1
-1
@@ -13,11 +13,11 @@ import org.junit.Test;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class MediaReplicationTest extends AbstractServerReplicationTest {
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,6 @@ import org.mockito.Mockito;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
|
||||
@@ -37,6 +36,7 @@ import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class MasterDataImporterMediaTest {
|
||||
|
||||
|
||||
+1
-1
@@ -12,13 +12,13 @@ import org.junit.Test;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.TimeRange;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.impl.TimeRangeImpl;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.hamcrest.Matchers.*;
|
||||
|
||||
+1
-1
@@ -33,7 +33,6 @@ import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
@@ -52,6 +51,7 @@ import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
|
||||
public class MediaMasterDataExportTest {
|
||||
|
||||
|
||||
+1
-1
@@ -93,7 +93,6 @@ import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
@@ -127,6 +126,7 @@ import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
import com.sap.sse.mongodb.MongoDBConfiguration;
|
||||
import com.sap.sse.mongodb.MongoDBService;
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ Export-Package: com.sap.sse.common,
|
||||
com.sap.sse.common.filter,
|
||||
com.sap.sse.common.impl,
|
||||
com.sap.sse.common.mail,
|
||||
com.sap.sse.common.media,
|
||||
com.sap.sse.common.scalablevalue,
|
||||
com.sap.sse.common.search,
|
||||
com.sap.sse.common.settings,
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.sap.sse.common.media;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashSet;
|
||||
|
||||
public class AbstractMediaDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String title;
|
||||
|
||||
private MimeType mimeType;
|
||||
|
||||
private HashSet<String> tags = new HashSet<String>();
|
||||
|
||||
private String sourceRef;
|
||||
|
||||
protected AbstractMediaDTO() {
|
||||
}
|
||||
|
||||
|
||||
public AbstractMediaDTO(String sourceRef, MimeType mimeType, String title) {
|
||||
this.title = title;
|
||||
this.mimeType = mimeType;
|
||||
this.sourceRef = sourceRef;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public MimeType getMimeType() {
|
||||
return mimeType;
|
||||
}
|
||||
|
||||
|
||||
public HashSet<String> getTags() {
|
||||
return tags;
|
||||
}
|
||||
|
||||
public String getSourceRef() {
|
||||
return sourceRef;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
+5
-10
@@ -1,13 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.shared.media;
|
||||
package com.sap.sse.common.media;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.domain.common.ImageSize;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
|
||||
public class ImageMetadataDTO extends AbstractMediaDTO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@@ -19,12 +13,12 @@ public class ImageMetadataDTO extends AbstractMediaDTO {
|
||||
private Date createdAtDate;
|
||||
private String author;
|
||||
|
||||
|
||||
protected ImageMetadataDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public ImageMetadataDTO(EventReferenceDTO eventRef, URL imageURL, ImageSize size, String title) {
|
||||
super(eventRef, imageURL.toString(), MimeType.image, title);
|
||||
public ImageMetadataDTO(String imageURL, ImageSize size, String title) {
|
||||
super(imageURL, MimeType.image, title);
|
||||
this.widthInPx = size.getWidth();
|
||||
this.heightInPx = size.getHeight();
|
||||
}
|
||||
@@ -69,4 +63,5 @@ public class ImageMetadataDTO extends AbstractMediaDTO {
|
||||
this.heightInPx = heightInPx;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.common;
|
||||
package com.sap.sse.common.media;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.common.media;
|
||||
package com.sap.sse.common.media;
|
||||
|
||||
public enum MediaSubType {
|
||||
ogg, mp4, mpeg, x_aiff, quicktime, aac, webm, youtube, vimeo, unknown;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.common.media;
|
||||
package com.sap.sse.common.media;
|
||||
|
||||
public enum MediaType {
|
||||
audio, video, image, unknown;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.domain.common.media;
|
||||
package com.sap.sse.common.media;
|
||||
|
||||
public enum MimeType {
|
||||
|
||||
+7
-9
@@ -1,10 +1,8 @@
|
||||
package com.sap.sailing.gwt.ui.shared.media;
|
||||
package com.sap.sse.common.media;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.domain.common.media.MimeType;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventReferenceDTO;
|
||||
|
||||
public class VideoMetadataDTO extends AbstractMediaDTO {
|
||||
|
||||
@@ -13,18 +11,18 @@ public class VideoMetadataDTO extends AbstractMediaDTO {
|
||||
private int length;
|
||||
private String thumbnailRef;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private VideoMetadataDTO() {
|
||||
|
||||
protected VideoMetadataDTO() {
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public VideoMetadataDTO(EventReferenceDTO eventRef, URL url, MimeType mimeType, String title) {
|
||||
this(eventRef, url.toString(), mimeType, title);
|
||||
public VideoMetadataDTO(URL url, MimeType mimeType, String title) {
|
||||
this(url.toString(), mimeType, title);
|
||||
}
|
||||
|
||||
@GwtIncompatible
|
||||
public VideoMetadataDTO(EventReferenceDTO eventRef, String url, MimeType mimeType, String title) {
|
||||
super(eventRef, url, mimeType, title);
|
||||
public VideoMetadataDTO(String url, MimeType mimeType, String title) {
|
||||
super(url, mimeType, title);
|
||||
}
|
||||
|
||||
public void setLength(int length) {
|
||||
+53
-6
@@ -1,5 +1,8 @@
|
||||
package com.sap.sse.gwt.client.controls.carousel;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.dom.client.DivElement;
|
||||
@@ -11,6 +14,7 @@ import com.google.gwt.safehtml.shared.UriUtils;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.user.client.Command;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sse.common.media.ImageMetadataDTO;
|
||||
|
||||
/**
|
||||
* Image carousel that uses the open source "slick carousel".
|
||||
@@ -48,10 +52,11 @@ import com.google.gwt.user.client.ui.Widget;
|
||||
*
|
||||
* Created by pgtaboada on 10.11.14.
|
||||
*/
|
||||
public class ImageCarousel extends Widget {
|
||||
public class ImageCarousel<TYPE extends ImageMetadataDTO> extends Widget {
|
||||
|
||||
private static SlickSliderUiBinder ourUiBinder = GWT.create(SlickSliderUiBinder.class);
|
||||
|
||||
private LinkedList<TYPE> currentImages = new LinkedList<>();
|
||||
/**
|
||||
* slick slider property: dots
|
||||
*/
|
||||
@@ -81,9 +86,12 @@ public class ImageCarousel extends Widget {
|
||||
* The height of the images
|
||||
*/
|
||||
private int imagesHeight = 300;
|
||||
private int currentSlideIndex = 0;
|
||||
|
||||
private final String uniqueId;
|
||||
|
||||
private FullscreenViewer<TYPE> fsViewer;
|
||||
|
||||
/**
|
||||
* Widget constructor
|
||||
*/
|
||||
@@ -95,12 +103,38 @@ public class ImageCarousel extends Widget {
|
||||
init();
|
||||
}
|
||||
|
||||
public void onClick() {
|
||||
GWT.log("Current slide: " + currentSlideIndex);
|
||||
if (fsViewer != null) {
|
||||
fsViewer.show(currentImages.get(currentSlideIndex), currentImages);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* JSNI wrapper that does setup the slider
|
||||
*
|
||||
* @param uniqueId
|
||||
*/
|
||||
native void setupSlider(ImageCarousel sliderReference) /*-{
|
||||
native void setupSlider(ImageCarousel<?> sliderReference) /*-{
|
||||
|
||||
var slider = $wnd
|
||||
.$('.'
|
||||
+ (sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::uniqueId));
|
||||
|
||||
slider
|
||||
.on(
|
||||
'click',
|
||||
'.slick-slide',
|
||||
function() {
|
||||
sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::onClick()();
|
||||
});
|
||||
|
||||
slider
|
||||
.on(
|
||||
'afterChange',
|
||||
function(event, index) {
|
||||
sliderReference.@com.sap.sse.gwt.client.controls.carousel.ImageCarousel::currentSlideIndex = index.currentSlide;
|
||||
});
|
||||
|
||||
$wnd
|
||||
.$(
|
||||
@@ -136,8 +170,12 @@ public class ImageCarousel extends Widget {
|
||||
*
|
||||
* @param url
|
||||
*/
|
||||
public void addImage(String url, int height, int width) {
|
||||
|
||||
public void addImage(TYPE image) {
|
||||
currentImages.add(image);
|
||||
String url = image.getSourceRef();
|
||||
int height = image.getHeightInPx();
|
||||
int width = image.getWidthInPx();
|
||||
|
||||
DivElement imageHolder = Document.get().createDivElement();
|
||||
ImageElement imageElement = Document.get().createImageElement();
|
||||
imageElement.setAttribute("data-lazy", UriUtils.fromString(url).asString());
|
||||
@@ -209,7 +247,7 @@ public class ImageCarousel extends Widget {
|
||||
/**
|
||||
* UiBinder interface
|
||||
*/
|
||||
interface SlickSliderUiBinder extends UiBinder<DivElement, ImageCarousel> {
|
||||
interface SlickSliderUiBinder extends UiBinder<DivElement, ImageCarousel<?>> {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -242,7 +280,7 @@ public class ImageCarousel extends Widget {
|
||||
* Apply slick js to constructed dom tree.
|
||||
*/
|
||||
private void init() {
|
||||
final ImageCarousel reference = this;
|
||||
final ImageCarousel<TYPE> reference = this;
|
||||
|
||||
Scheduler.get().scheduleDeferred(new Command() {
|
||||
|
||||
@@ -265,4 +303,13 @@ public class ImageCarousel extends Widget {
|
||||
});
|
||||
}
|
||||
|
||||
public void registerFullscreenViewer(FullscreenViewer<TYPE> fsViewer) {
|
||||
this.fsViewer = fsViewer;
|
||||
}
|
||||
|
||||
public interface FullscreenViewer<TYPE> {
|
||||
|
||||
public void show(TYPE selectedImage, List<TYPE> imageList);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user