diff --git a/src/main/java/org/olat/modules/video/VideoMetadata.java b/src/main/java/org/olat/modules/video/VideoMetadata.java index 97c2c98c5831efaecadd30f790e103b217415e70..176997685d60f60622e8925d79ecf02898b993bc 100644 --- a/src/main/java/org/olat/modules/video/VideoMetadata.java +++ b/src/main/java/org/olat/modules/video/VideoMetadata.java @@ -19,7 +19,7 @@ */ package org.olat.modules.video; -import java.util.HashMap; +import java.util.Map; /** * Represents the metadata of a master video file @@ -53,7 +53,7 @@ public interface VideoMetadata { /** * @return Map of caption tracks */ - public HashMap<String, String> getAllTracks(); + public Map<String, String> getAllTracks(); /** * Add a caption track for a specific language diff --git a/src/main/java/org/olat/modules/video/VideoModule.java b/src/main/java/org/olat/modules/video/VideoModule.java index 28d6e70d27d42d1f97a92c06d89b9333f643d105..e7a86b2bad400ba5555d44bb1b527be9017cd41a 100644 --- a/src/main/java/org/olat/modules/video/VideoModule.java +++ b/src/main/java/org/olat/modules/video/VideoModule.java @@ -31,9 +31,6 @@ import org.olat.core.util.vfs.LocalFolderImpl; import org.olat.core.util.vfs.VFSContainer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.core.convert.ConversionService; -import org.springframework.format.support.DefaultFormattingConversionService; import org.springframework.stereotype.Service; /** @@ -46,6 +43,8 @@ import org.springframework.stereotype.Service; @Service public class VideoModule extends AbstractSpringModule { + private static final OLog log = Tracing.createLoggerFor(VideoModule.class); + private static final String VIDEO_ENABLED = "video.enabled"; private static final String VIDEOCOURSENODE_ENABLED = "video.coursenode.enabled"; private static final String VIDEOTRANSCODING_ENABLED = "video.transcoding.enabled"; @@ -58,26 +57,36 @@ public class VideoModule extends AbstractSpringModule { @Value("${video.transcoding.enabled:false}") private boolean transcodingEnabled; @Value("${video.transcoding.resolutions}") - private int[] transcodingResolutions; + private String transcodingResolutions; @Value("${video.transcoding.taskset.cpuconfig}") private String transcodingTasksetConfig; @Value("${video.transcoding.dir}") private String transcodingDir; - - @Bean - public static ConversionService conversionService() { - // needed to create the transcodingResolutions (int[]) property by spring - return new DefaultFormattingConversionService(); - } - - private static final OLog log = Tracing.createLoggerFor(VideoModule.class); + private int[] transcodingResolutionsArr = new int[] { 1080,720,480,360 }; @Autowired public VideoModule(CoordinatorManager coordinatorManager) { super(coordinatorManager); } + @Override + protected void initDefaultProperties() { + if(StringHelper.containsNonWhitespace(transcodingResolutions)) { + try { + String[] resolutions = transcodingResolutions.split(","); + int[] resolutionInts = new int[resolutions.length]; + for(int i=resolutions.length; i-->0; ) { + resolutionInts[i] = Integer.parseInt(resolutions[i]); + } + transcodingResolutionsArr = resolutionInts; + } catch (NumberFormatException e) { + log.error("Cannot parse transcoding resolutions", e); + } + } + super.initDefaultProperties(); + } + @Override public void init() { String enabledObj = getStringPropertyValue(VIDEO_ENABLED, true); @@ -110,7 +119,7 @@ public class VideoModule extends AbstractSpringModule { * @return Array of transcoding resolutions. */ public int[] getTranscodingResolutions() { - return transcodingResolutions; + return transcodingResolutionsArr; } /** diff --git a/src/main/java/org/olat/modules/video/_spring/videoContext.xml b/src/main/java/org/olat/modules/video/_spring/videoContext.xml index 2baa4e84b8a5008f20a889b44c2598887a315283..c00ec811aa566d98e7bb567d49b0e46ea97c1297 100644 --- a/src/main/java/org/olat/modules/video/_spring/videoContext.xml +++ b/src/main/java/org/olat/modules/video/_spring/videoContext.xml @@ -4,10 +4,37 @@ xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> + + + <bean id="videoTranscodingTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> + <property name="jobDetail" ref="videoTranscodingJob" /> + <!-- adjust cron style syntax for your notification needs + "0 10 0 * *" e.g. 10 minutes after midnight + + A "Cron-Expression" is a string comprised of 6 or 7 fields separated by white space. The 6 mandatory and 1 optional fields are as follows: + Field Name Allowed Values Allowed Special Characters + Seconds 0-59 , - * / + Minutes 0-59 , - * / + Hours 0-23 , - * / + Day-of-month 1-31 , - * ? / L W C + Month 1-12 or JAN-DEC , - * / + Day-of-Week 1-7 or SUN-SAT , - * ? / L C # + Year (Optional) empty, 1970-2099 , - * / + As of OLAT 6.3 it's best to let the cronjob run every two hours since users can now choose how often + they will get notified. The shortest interval is set to two hours. + --> + <property name="cronExpression" value="0 */5 * * * ?" /> + <!-- OLAT-5093 start delay ensures there's no conflict with server startup and db not being ready yet --> + <property name="startDelay" value="350000" /> + </bean> + + <bean id="videoTranscodingJob" class="org.springframework.scheduling.quartz.JobDetailBean" lazy-init="true"> + <property name="jobClass" value="org.olat.modules.video.manager.VideoTranscodingJob" /> + </bean> -<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> + <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> <property name="order" value="7210" /> <property name="actionController"> <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> diff --git a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java index 4413cb45edec10abd8efce8cf7692cf64e6a189c..0e159fd4c9c184feacb56eab515afc69ed55b7b7 100644 --- a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java +++ b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java @@ -430,7 +430,7 @@ public class VideoManagerImpl implements VideoManager { masterVideo.delete(); // 2) generate Metadata file - VideoMetadata metaData = new VideoMetadataImpl(videoResource); + VideoMetadata metaData = new VideoMetadataImpl(); // calculate video size Size videoSize = movieService.getSize(targetFile, FILETYPE_MP4); metaData.setWidth(videoSize.getWidth()); diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java index b8230b675d31257770f0cfb892b5ddd4a14f44af..69fc46a550a0f26d84958b6a08d6bedac540c337 100644 --- a/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java +++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java @@ -22,8 +22,6 @@ package org.olat.modules.video.manager; import java.util.Date; import java.util.List; -import javax.persistence.TypedQuery; - import org.olat.core.commons.persistence.DB; import org.olat.modules.video.VideoTranscoding; import org.olat.modules.video.model.VideoTranscodingImpl; @@ -54,7 +52,7 @@ public class VideoTranscodingDAO { public VideoTranscoding createVideoTranscoding(OLATResource videoResource, int resolution, String format) { VideoTranscodingImpl videoTranscoding = new VideoTranscodingImpl(); videoTranscoding.setCreationDate(new Date()); - videoTranscoding.setLastModified(new Date()); + videoTranscoding.setLastModified(videoTranscoding.getCreationDate()); videoTranscoding.setVideoResource(videoResource); videoTranscoding.setResolution(resolution); videoTranscoding.setFormat(format); @@ -68,17 +66,15 @@ public class VideoTranscodingDAO { sb.append("select trans from videotranscoding as trans") .append(" inner join fetch trans.videoResource as res") .append(" where res.key=:resourceKey"); - TypedQuery<VideoTranscoding> query = dbInstance.getCurrentEntityManager() + return dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), VideoTranscoding.class) - .setParameter("resourceKey", videoResource.getKey()); - return query.getResultList(); + .setParameter("resourceKey", videoResource.getKey()) + .getResultList(); } public VideoTranscoding updateTranscoding(VideoTranscoding videoTranscoding) { ((VideoTranscodingImpl)videoTranscoding).setLastModified(new Date()); VideoTranscoding trans = dbInstance.getCurrentEntityManager().merge(videoTranscoding); - //FIXME:SR: is that needed? flush did not work - dbInstance.commit(); return trans; } diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java new file mode 100644 index 0000000000000000000000000000000000000000..a24b9628adf94c160f07b1b71252042894da83e5 --- /dev/null +++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java @@ -0,0 +1,43 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.video.manager; + +import org.olat.core.commons.services.scheduler.JobWithDB; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +/** + * + * Initial date: 06.05.2016<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class VideoTranscodingJob extends JobWithDB { + + /** + * + * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext) + */ + @Override + public void executeWithDB(JobExecutionContext arg0) throws JobExecutionException { + System.out.println("Work"); + } + +} diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java index a19450a0ca0f998af00911d81f7ac82192231fd4..737bce37bcd745ecebc51beff37faf045dc7ac6e 100644 --- a/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java +++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java @@ -27,6 +27,7 @@ import java.io.InputStreamReader; import java.util.ArrayList; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.services.image.Size; import org.olat.core.commons.services.taskexecutor.LongRunnable; import org.olat.core.commons.services.taskexecutor.Sequential; @@ -146,6 +147,7 @@ public class VideoTranscodingTask implements LongRunnable, Sequential { // update version file for UI videoTranscoding.setStatus(Integer.parseInt(percent)); videoTranscoding = videoManager.updateVideoTranscoding(videoTranscoding); + DBFactory.getInstance().commitAndCloseSession(); } } } @@ -179,6 +181,7 @@ public class VideoTranscodingTask implements LongRunnable, Sequential { videoTranscoding.setSize(transcodedFile.length()); videoTranscoding.setStatus(VideoTranscoding.TRANSCODING_STATUS_DONE); videoTranscoding = videoManager.updateVideoTranscoding(videoTranscoding); + DBFactory.getInstance().commitAndCloseSession(); } } catch (InterruptedException e) { // diff --git a/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java b/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java index 3e59b00be610fcdbabccfeaec1a61f58ae8f7b90..986b7be9d4f27cfe90a861e5cb8a6eb3043b4b86 100644 --- a/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java +++ b/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java @@ -22,8 +22,8 @@ package org.olat.modules.video.model; import java.io.Serializable; import java.util.HashMap; +import java.util.Map; -import org.olat.core.id.OLATResourceable; import org.olat.modules.video.VideoMetadata; /** @@ -40,8 +40,8 @@ public class VideoMetadataImpl implements Serializable, VideoMetadata { private int height; private HashMap<String, String> tracks; - public VideoMetadataImpl(OLATResourceable resource){ - this.tracks = new HashMap<String, String>(); + public VideoMetadataImpl() { + tracks = new HashMap<String, String>(); } @Override @@ -65,7 +65,7 @@ public class VideoMetadataImpl implements Serializable, VideoMetadata { } @Override - public HashMap<String, String> getAllTracks(){ + public Map<String, String> getAllTracks(){ return tracks; } diff --git a/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java b/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java index 97e8140393999d7e9dca46b707c28aa14161732d..26d7e55509912ff2162254c29d91512e49a3ffd4 100644 --- a/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java +++ b/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java @@ -49,10 +49,9 @@ import org.olat.resource.OLATResourceImpl; @Entity(name="videotranscoding") @Table(name="o_vid_transcoding") public class VideoTranscodingImpl implements VideoTranscoding, Persistable, ModifiedInfo { - - //FIXME:RS: what serialVersionUID to use if null? Copy from GoToRegistrantImpl - private static final long serialVersionUID = 4285228843020012527L; - + + private static final long serialVersionUID = 8360999803434426958L; + @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "hilo") @@ -190,8 +189,7 @@ public class VideoTranscodingImpl implements VideoTranscoding, Persistable, Modi @Override public int hashCode() { - //FIXME:RS: what key to use if null? Copy from GoToRegistrantImpl - return key == null ? -794215 : key.hashCode(); + return key == null ? -827346537 : key.hashCode(); } @Override @@ -210,5 +208,4 @@ public class VideoTranscodingImpl implements VideoTranscoding, Persistable, Modi public boolean equalsByPersistableKey(Persistable persistable) { return equals(persistable); } - } diff --git a/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql b/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql index c3083f9bd1afe208829cd3fb945329ff235d8eb2..6f890804c11618858d72ee2c5f23d4b75d976e93 100644 --- a/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql +++ b/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql @@ -80,11 +80,8 @@ create table o_vid_transcoding ( alter table o_vid_transcoding ENGINE = InnoDB; alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id); - - - - - +create index vid_status_trans_idx on o_vid_transcoding(vid_status); +create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder); diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index 77c461b0c0147104f6d50a40d42c37807c3fded1..26dc7bb42e5ef8136483b855990b8ef47c66876b 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -1188,6 +1188,21 @@ create table o_goto_registrant ( primary key (id) ); +create table o_vid_transcoding ( + id bigint not null, + creationdate datetime not null, + lastmodified datetime not null, + vid_resolution bigint default null, + vid_width bigint default null, + vid_height bigint default null, + vid_size bigint default null, + vid_format varchar(128) default null, + vid_status bigint default null, + vid_transcoder varchar(128) default null, + fk_resource_id bigint not null, + primary key (id) +); + -- calendar create table o_cal_use_config ( id bigint not null, @@ -1822,6 +1837,7 @@ alter table o_rem_sent_reminder ENGINE = InnoDB; alter table o_goto_organizer ENGINE = InnoDB; alter table o_goto_meeting ENGINE = InnoDB; alter table o_goto_registrant ENGINE = InnoDB; +alter table o_vid_transcoding ENGINE = InnoDB; -- rating alter table o_userrating add constraint FKF26C8375236F20X foreign key (creator_id) references o_bs_identity (id); @@ -2128,6 +2144,11 @@ alter table o_goto_meeting add constraint goto_meet_organizer_idx foreign key (f alter table o_goto_registrant add constraint goto_regis_meeting_idx foreign key (fk_meeting_id) references o_goto_meeting (id); alter table o_goto_registrant add constraint goto_regis_ident_idx foreign key (fk_identity_id) references o_bs_identity (id); +-- video +alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id); +create index vid_status_trans_idx on o_vid_transcoding(vid_status); +create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder); + -- calendar alter table o_cal_use_config add constraint cal_u_conf_to_ident_idx foreign key (fk_identity) references o_bs_identity (id); create index idx_cal_u_conf_cal_id_idx on o_cal_use_config (c_calendar_id); diff --git a/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql b/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql index 63e9397d6316a2d7658a5ffdfbfca10513ca8e93..da75b9b58381342efc67c1b57da57fb7b079e5a0 100644 --- a/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql +++ b/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql @@ -74,12 +74,14 @@ create table o_vid_transcoding ( vid_width number(20) default null, vid_height number(20) default null, vid_size number(20) default null, - vid_format varchar(128) default null, + vid_format varchar2(128 char) default null, vid_status number(20) default null, - vid_transcoder varchar(128) default null, + vid_transcoder varchar2(128 char) default null, fk_resource_id number(20) not null, primary key (id) ); alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id); - +create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id); +create index vid_status_trans_idx on o_vid_transcoding(vid_status); +create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder); diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql index d814581b1e70e98469e63bc0aec95a7b74deb03a..5e8f8476d78a16f8982fbb48725fc51218d72c25 100644 --- a/src/main/resources/database/oracle/setupDatabase.sql +++ b/src/main/resources/database/oracle/setupDatabase.sql @@ -1220,6 +1220,21 @@ create table o_goto_registrant ( primary key (id) ); +create table o_vid_transcoding ( + id int8 not null, + creationdate timestamp not null, + lastmodified timestamp not null, + vid_resolution int8 default null, + vid_width int8 default null, + vid_height int8 default null, + vid_size int8 default null, + vid_format varchar(128) default null, + vid_status int8 default null, + vid_transcoder varchar(128) default null, + fk_resource_id int8 not null, + primary key (id) +); + -- calendar create table o_cal_use_config ( id number(20) not null, @@ -2274,6 +2289,12 @@ create index idx_goto_regis_meeting_idx on o_goto_registrant(fk_meeting_id); alter table o_goto_registrant add constraint goto_regis_ident_idx foreign key (fk_identity_id) references o_bs_identity (id); create index idx_goto_regis_ident_idx on o_goto_registrant(fk_identity_id); +-- video +alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id); +create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id); +create index vid_status_trans_idx on o_vid_transcoding(vid_status); +create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder); + -- calendar alter table o_cal_use_config add constraint cal_u_conf_to_ident_idx foreign key (fk_identity) references o_bs_identity (id); create index idx_cal_u_conf_to_ident_idx on o_cal_use_config (fk_identity); diff --git a/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql b/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql index dc473b6452b3ee73ce5d81fdaa0bd4e6c7417a1a..2cc306b8fe28d4550e99125075b9c146cc386758 100644 --- a/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql +++ b/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql @@ -81,5 +81,8 @@ create table o_vid_transcoding ( primary key (id) ); alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id); +create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id); +create index vid_status_trans_idx on o_vid_transcoding(vid_status); +create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder); diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index 29b786afe3df3fa1387d3886c57a39960f3063cd..44f3f059c85cf86396cbd7c1c5243b191f2148d7 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -1187,6 +1187,21 @@ create table o_goto_registrant ( primary key (id) ); +create table o_vid_transcoding ( + id int8 not null, + creationdate timestamp not null, + lastmodified timestamp not null, + vid_resolution int8 default null, + vid_width int8 default null, + vid_height int8 default null, + vid_size int8 default null, + vid_format varchar(128) default null, + vid_status int8 default null, + vid_transcoder varchar(128) default null, + fk_resource_id int8 not null, + primary key (id) +); + -- calendar create table o_cal_use_config ( id int8 not null, @@ -2140,6 +2155,12 @@ create index idx_goto_regis_meeting_idx on o_goto_registrant(fk_meeting_id); alter table o_goto_registrant add constraint goto_regis_ident_idx foreign key (fk_identity_id) references o_bs_identity (id); create index idx_goto_regis_ident_idx on o_goto_registrant(fk_identity_id); +-- video +alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id); +create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id); +create index vid_status_trans_idx on o_vid_transcoding(vid_status); +create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder); + -- mapper create index o_mapper_uuid_idx on o_mapper (mapper_uuid); diff --git a/src/test/java/org/olat/modules/video/manager/VideoTranscodingDAOTest.java b/src/test/java/org/olat/modules/video/manager/VideoTranscodingDAOTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6619a10533cc4b344733615dc20250c82c9d69c3 --- /dev/null +++ b/src/test/java/org/olat/modules/video/manager/VideoTranscodingDAOTest.java @@ -0,0 +1,59 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.video.manager; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; +import org.olat.core.commons.persistence.DB; +import org.olat.modules.video.VideoTranscoding; +import org.olat.resource.OLATResource; +import org.olat.test.JunitTestHelper; +import org.olat.test.OlatTestCase; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 06.05.2016<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class VideoTranscodingDAOTest extends OlatTestCase { + + @Autowired + private DB dbInstance; + @Autowired + private VideoTranscodingDAO videoTranscodingDao; + + @Test + public void createVideoTranscoding() { + OLATResource resource = JunitTestHelper.createRandomResource(); + VideoTranscoding vTranscoding = videoTranscodingDao.createVideoTranscoding(resource, 1080, "mp4"); + Assert.assertNotNull(vTranscoding); + dbInstance.commitAndCloseSession(); + + List<VideoTranscoding> vTranscodingList = videoTranscodingDao.getVideoTranscodings(resource); + Assert.assertNotNull(vTranscodingList); + Assert.assertEquals(1, vTranscodingList.size()); + Assert.assertEquals(vTranscoding, vTranscodingList.get(0)); + } + +} diff --git a/src/test/java/org/olat/test/AllTestsJunit4.java b/src/test/java/org/olat/test/AllTestsJunit4.java index dced4d98c41fc98322cf9a660023d546112e7d12..222ede47d5b9f76294368b430dfdce5ba1fc4984 100644 --- a/src/test/java/org/olat/test/AllTestsJunit4.java +++ b/src/test/java/org/olat/test/AllTestsJunit4.java @@ -154,6 +154,7 @@ import org.junit.runners.Suite; org.olat.modules.reminder.ReminderModuleTest.class, org.olat.modules.reminder.manager.ReminderDAOTest.class, org.olat.modules.reminder.manager.ReminderRuleEngineTest.class, + org.olat.modules.video.manager.VideoTranscodingDAOTest.class, org.olat.properties.PropertyTest.class, org.olat.search.service.document.file.FileDocumentFactoryTest.class, org.olat.search.service.indexer.repository.course.SPCourseNodeIndexerTest.class,