Skip to content
Snippets Groups Projects
Commit b3318dc3 authored by fkiefer's avatar fkiefer
Browse files

OO-2246 update videometadata with new expeditureOfWork, backup retrieve...

OO-2246 update videometadata with new expeditureOfWork, backup retrieve duration from master video file
parent 91648023
No related branches found
No related tags found
No related merge requests found
...@@ -289,4 +289,12 @@ public interface VideoManager { ...@@ -289,4 +289,12 @@ public interface VideoManager {
* @param olatResource the video resource * @param olatResource the video resource
*/ */
public abstract void saveChapters(List<VideoChapterTableRow> chapters, OLATResource olatResource); public abstract void saveChapters(List<VideoChapterTableRow> chapters, OLATResource olatResource);
/**
* Gets the video duration.
*
* @param OLATResource videoResource
* @return the video duration
*/
public abstract long getVideoDuration(OLATResource videoResource);
} }
\ No newline at end of file
...@@ -722,5 +722,13 @@ public class VideoManagerImpl implements VideoManager { ...@@ -722,5 +722,13 @@ public class VideoManagerImpl implements VideoManager {
} }
} }
} }
@Override
public long getVideoDuration (OLATResource videoResource){
VFSContainer masterContainer = getMasterContainer(videoResource);
VFSLeaf video = (VFSLeaf) masterContainer.resolve(FILENAME_VIDEO_MP4);
long duration = movieService.getDuration(video, FILETYPE_MP4);
return duration;
}
} }
...@@ -253,9 +253,15 @@ public class VideoChapterEditController extends FormBasicController { ...@@ -253,9 +253,15 @@ public class VideoChapterEditController extends FormBasicController {
previousChapter.setEnd(currentChapter.getBegin()); previousChapter.setEnd(currentChapter.getBegin());
} else { } else {
long durationLong = duration != null ? (long) Float.parseFloat(duration) * 1000 : 0; long durationLong = duration != null ? (long) Float.parseFloat(duration) * 1000 : 0;
Date durationDate = new Date(durationLong); // duration may hold no value, backup ask videoManager
//if duration of the resource is not yet available, set end of last chapter equal to begin if (durationLong == 0){
previousChapter.setEnd(durationLong != 0 ? durationDate : previousChapter.getBegin()); Date endOfMovie = new Date(videoManager.getVideoDuration(entry.getOlatResource()));
previousChapter.setEnd(endOfMovie);
}else{
Date durationDate = new Date(durationLong);
previousChapter.setEnd(durationDate);
}
} }
} }
} }
......
...@@ -24,6 +24,7 @@ import java.util.HashSet; ...@@ -24,6 +24,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.olat.core.commons.services.video.MovieService;
import org.olat.core.gui.UserRequest; import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.FileElement; import org.olat.core.gui.components.form.flexible.elements.FileElement;
...@@ -33,6 +34,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent; ...@@ -33,6 +34,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent;
import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.WindowControl;
import org.olat.core.util.Formatter;
import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSContainer;
import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.VFSLeaf;
import org.olat.core.util.vfs.VFSManager; import org.olat.core.util.vfs.VFSManager;
...@@ -60,11 +62,14 @@ public class VideoResourceEditController extends FormBasicController { ...@@ -60,11 +62,14 @@ public class VideoResourceEditController extends FormBasicController {
private VFSContainer vfsContainer; private VFSContainer vfsContainer;
private OLATResource videoResource; private OLATResource videoResource;
private RepositoryEntry entry;
@Autowired @Autowired
private VideoManager videoManager; private VideoManager videoManager;
@Autowired @Autowired
private VideoModule videoModule; private VideoModule videoModule;
@Autowired
private MovieService movieService;
private StaticTextElement typeEl; private StaticTextElement typeEl;
private FileElement uploadFileEl; private FileElement uploadFileEl;
...@@ -72,6 +77,7 @@ public class VideoResourceEditController extends FormBasicController { ...@@ -72,6 +77,7 @@ public class VideoResourceEditController extends FormBasicController {
public VideoResourceEditController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry){ public VideoResourceEditController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry){
super(ureq, wControl); super(ureq, wControl);
this.entry = entry;
this.videoResource = entry.getOlatResource(); this.videoResource = entry.getOlatResource();
vfsContainer = videoManager.getMasterContainer(videoResource); vfsContainer = videoManager.getMasterContainer(videoResource);
...@@ -108,7 +114,12 @@ public class VideoResourceEditController extends FormBasicController { ...@@ -108,7 +114,12 @@ public class VideoResourceEditController extends FormBasicController {
if (uploadFileEl.getUploadSize() > 0 && uploadFile.exists()){ if (uploadFileEl.getUploadSize() > 0 && uploadFile.exists()){
video.delete(); video.delete();
VFSLeaf uploadVideo = vfsContainer.createChildLeaf(VIDEO_RESOURCE); VFSLeaf uploadVideo = vfsContainer.createChildLeaf(VIDEO_RESOURCE);
VFSManager.copyContent(uploadFile, uploadVideo); VFSManager.copyContent(uploadFile, uploadVideo);
// update video duration
long duration = movieService.getDuration(uploadVideo, "mp4");
if (duration != -1) {
entry.setExpenditureOfWork(Formatter.formatTimecode(duration));
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment