bug5127: fixed bug while init video player of not supported video type. In this case an error is logged and player is ignored.

- removed audio mime types for event media upload.
- cleaned up code
This commit is contained in:
Udo Wessels
2023-01-17 09:26:36 +01:00
parent 689da83b7b
commit 0e04cc7fa5
8 changed files with 39 additions and 17 deletions
@@ -31,6 +31,7 @@ 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.VideoThumbnail;
import com.sap.sailing.gwt.ui.shared.ManageMediaModel;
import com.sap.sse.common.media.MimeType;
import com.sap.sse.gwt.client.media.ImageDTO;
import com.sap.sse.gwt.client.media.VideoDTO;
import com.sap.sse.security.ui.authentication.AuthenticationContextEvent;
@@ -303,7 +304,17 @@ public class MediaPage extends Composite {
private void putVideoOnDisplay(final VideoDTO video, boolean autoplay) {
videoDisplayUi = new VideoWithLowerThird(true, autoplay);
videoDisplayUi.setVideo(video);
videoDisplayHolderUi.setWidget(videoDisplayUi);
try {
videoDisplayHolderUi.setWidget(videoDisplayUi);
} catch (Exception e) {
final MimeType mimeType;
if (video != null) {
mimeType = video.getMimeType();
} else {
mimeType = MimeType.unknown;
}
GWT.log("Could not setup video player video with mime type: " + mimeType, e);
}
}
private void setMediaManaged(boolean managed) {
@@ -246,11 +246,9 @@ public abstract class VideoDialog extends DataEntryDialog<List<VideoDTO>>
private ListBox createMimeTextSelection() {
ListBox mimeTypeListBox = createListBox(false);
mimeTypeListBox.addItem(MimeType.unknown.name());
mimeTypeListBox.addItem(MimeType.aac.name());
mimeTypeListBox.addItem(MimeType.mp4.name());
mimeTypeListBox.addItem(MimeType.mp4panorama.name());
mimeTypeListBox.addItem(MimeType.mp4panoramaflip.name());
mimeTypeListBox.addItem(MimeType.ogg.name());
mimeTypeListBox.addItem(MimeType.ogv.name());
mimeTypeListBox.addItem(MimeType.qt.name());
mimeTypeListBox.addItem(MimeType.youtube.name());
@@ -2395,6 +2395,9 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String or();
String noMediaSelected();
String fileTypeNotSupported();
String fileWithDetectedMimeTypeNotSupported(String mimeType);
String videoAdded();
String imageAdded();
String noImageOrVideoDetected();
String errorWhileUpdatingEvent();
String updateEventSuccessfully();
@@ -2432,6 +2432,9 @@ uploadedFiles=Uploaded Files
or=or
noMediaSelected=no media selected
fileTypeNotSupported=File type is not supported.
fileWithDetectedMimeTypeNotSupported=File with detected mime type {0} is not supported.
videoAdded=Video added successfully.
imageAdded=Image added successfully.
noImageOrVideoDetected=No image or video detected. Nothing will be saved.
errorWhileUpdatingEvent=Error while updating event data.
updateEventSuccessfully=Updated event successfully.
@@ -104,10 +104,6 @@ public class NewMediaDialog extends DataEntryDialog<MediaTrack> implements FileS
}
return errorMessage;
}
private boolean isMediaTypeSupported(String url) {
return MimeType.byExtension(url) != MimeType.unknown;
}
}
protected final StringMessages stringMessages;
@@ -11,7 +11,6 @@ import java.util.function.BiConsumer;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -225,7 +224,7 @@ public abstract class AbstractMediaUploadPopup extends DialogBox {
final ListBox mimeTypeListBox = new ListBox();
mimeTypeListBox.addItem(MimeType.unknown.name());
for (MimeType mimeType : MimeType.values()) {
if (mimeType != MimeType.unknown) {
if (mimeType.isVideo() || mimeType.isImage()) {
mimeTypeListBox.addItem(mimeType.name());
}
}
@@ -403,20 +402,25 @@ public abstract class AbstractMediaUploadPopup extends DialogBox {
final MimeType mimeType = mediaObjectEntry.getValue().mimeType;
hide();
if (mimeType.mediaType == MediaType.image) {
GWT.log("add image " + url);
imageList.add(createImage(url));
} else if (mimeType.mediaType == MediaType.video || mimeType.mediaType == MediaType.audio) {
GWT.log("add video " + url);
Notification.notify(i18n.imageAdded(), NotificationType.SUCCESS);
} else if (mimeType.mediaType == MediaType.video) {
videoList.add(createVideo(url, null, mimeType));
Notification.notify(i18n.videoAdded(), NotificationType.SUCCESS);
} else {
logger.warning("No image nor video detected. Nothing will be saved.");
Notification.notify(i18n.noImageOrVideoDetected(), NotificationType.WARNING);
logger.warning("Detected MimeType is not of type video or image. File will be skipped. Found MimeType: " + mimeType);
Notification.notify(i18n.fileWithDetectedMimeTypeNotSupported(mimeType.toString()), NotificationType.WARNING);
}
} else {
Notification.notify(i18n.invalidURL(), NotificationType.ERROR);
}
}
updateImagesAndVideos.accept(imageList, videoList);
if (!imageList.isEmpty() || !videoList.isEmpty()) {
updateImagesAndVideos.accept(imageList, videoList);
} else {
logger.warning("No image nor video detected. Nothing will be saved.");
Notification.notify(i18n.noImageOrVideoDetected(), NotificationType.WARNING);
}
}
private ImageDTO createImage(String url) {
@@ -175,7 +175,6 @@ public class ManageMediaModel {
public void onSuccess(EventDTO eventDto) {
setEventDto(eventDto);
callback.accept(eventDto);
Notification.notify(i18n.updateEventSuccessfully(), NotificationType.SUCCESS);
}
@Override
@@ -3,7 +3,7 @@ package com.sap.sse.common.media;
public enum MimeType {
mp4(MediaType.video, MediaSubType.mp4, "mp4"),
ogv(MediaType.video, MediaSubType.ogg, "ogv"),
ogv(MediaType.video, MediaSubType.ogv, "ogv"),
qt(MediaType.video, MediaSubType.quicktime, "qt|qtvr|qti|qtif"),
mp3(MediaType.audio, MediaSubType.mpeg, "mp3"),
ogg(MediaType.audio, MediaSubType.ogg, "ogg|oga|spx"),
@@ -39,6 +39,14 @@ public enum MimeType {
return endingPattern;
}
public boolean isImage() {
return mediaType == MediaType.image;
}
public boolean isVideo() {
return mediaType == MediaType.video;
}
public MediaSubType getMediaSubType() {
return mediaSubType;
}