From 9a5f6d84dd04102b914b176bf98674abf24755a1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Thu, 7 Nov 2019 12:56:08 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31622 --- .../executors/tests/SupportAttachLowres.java | 62 +++++++++++ .../server/steps/AttachLowresStep.java | 100 ++++++++++++++++++ .../user/jobengine/server/steps/FakeStep.java | 4 +- .../pages/searchitems.zul | 2 + 4 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SupportAttachLowres.java create mode 100644 server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SupportAttachLowres.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SupportAttachLowres.java new file mode 100644 index 00000000..a31ee538 --- /dev/null +++ b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SupportAttachLowres.java @@ -0,0 +1,62 @@ +package hu.user.mediacube.executors.tests; + +import java.sql.Connection; +import java.sql.SQLException; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import user.jobengine.db.IItemManager; +import user.jobengine.db.ItemManager; +import user.jobengine.db.Media; +import user.jobengine.server.IJobRuntime; +import user.jobengine.server.JobRuntime; +import user.jobengine.server.steps.AttachLowresStep; + +public class SupportAttachLowres { + protected static IItemManager manager = null; + private static final String LOWRES_ROOT = "//10.11.1.90/data/lowres"; + private static final String LOWRES_OUTPUT = "//10.11.1.100/Promise/TRANSCODER/FFASTRANSCODER/Out"; + + private static final long[] duplicateLength = { 0 }; + + @BeforeClass + static public void setUpConnection() { + System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); + System.setProperty("jobengine.nosql.db.user", "db2admin"); + System.setProperty("jobengine.nosql.db.password", "password"); + System.setProperty(ItemManager.DBURL, "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;"); + System.setProperty(ItemManager.DBUSERNAME, "db2admin"); + System.setProperty(ItemManager.DBPASSWORD, "password"); + manager = new ItemManager(); + manager.connect(); + } + + @AfterClass + static public void tearDownConnection() { + manager.disconnect(); + } + + @Test + public void process() throws SQLException { + final Connection[] con = { null }; + final AttachLowresStep step = new AttachLowresStep(); + final IJobRuntime runtime = new JobRuntime(); + runtime.setPersister(manager); + + manager.executeQuery("select mediaid from vw_mediafiles where mediafilecount = 1", rs -> { + long mediaId = rs.getLong("mediaId"); + Media m = manager.getMedia(mediaId); + try { + step.run(null, runtime, new Object[] { m, LOWRES_OUTPUT, LOWRES_ROOT }); + } catch (Throwable e) { + System.out.println("Error: " + e.getMessage()); + } + return true; + }, null); + + con[0].close(); + } + +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java new file mode 100644 index 00000000..c6ca8c94 --- /dev/null +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/AttachLowresStep.java @@ -0,0 +1,100 @@ +package user.jobengine.server.steps; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +import org.apache.commons.io.FilenameUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.message.Message; +import org.apache.logging.log4j.message.ParameterizedMessage; + +import user.jobengine.db.FileType; +import user.jobengine.db.IItemManager; +import user.jobengine.db.Media; +import user.jobengine.db.MediaFile; +import user.jobengine.db.Store; + +public class AttachLowresStep extends JobStep { + private static final int POLL_INTERVALL = 3000; + private static final String MP4EXT = ".MP4"; + private static final String MXFEXT = ".MXF"; + private static final String LOWRES_FILETYPE = "Low-res"; + private static final Logger logger = LogManager.getLogger(); + private IItemManager manager; + private Store store; + private FileType fileType; + private Media mediaCubeMedia; + private Marker marker; + + @StepEntry + public Object[] execute(Media mediaCubeMedia, String localLowresTargetPath, String webPath) throws Exception { + + this.marker = jobRuntime.getMarker(); + this.manager = (IItemManager) jobRuntime.getPersister(); + this.store = check(manager.getSystemStore(true), "lowres Store"); + this.fileType = check(manager.getFileType(LOWRES_FILETYPE), "lowres FileType"); + this.mediaCubeMedia = check(mediaCubeMedia, "mediaCubeMedia"); + check(localLowresTargetPath, "localLowresTargetPath"); + check(webPath, "webPath"); + + List mediaFiles = mediaCubeMedia.getMediaFiles(); + if (mediaFiles.size() != 1) + throw new Exception("Media must have one media file"); + String sourceFileName = mediaFiles.get(0).getHouseId(); + Path targetPath = null; + try { + String targetFileName = FilenameUtils.removeExtension(sourceFileName) + MP4EXT; + targetPath = Paths.get(localLowresTargetPath, targetFileName); + System.out.println("Processing " + sourceFileName); + + if (!targetPath.toFile().exists()) + System.out.println("File not exists: " + targetPath.toString()); + else + postprocess(targetPath, webPath); + + } catch (Exception e) { + logger.catching(e); + Message m = new ParameterizedMessage("{} átkódolás hiba: {}", e.getClass().getSimpleName(), e.getMessage()); + logger.error(marker, m); + throw new Exception(m.getFormattedMessage()); + } + return null; + } + + private void postprocess(Path transcodedFilePath, String webPath) throws IOException { + Path lowresPath = null; + try { + String transcodedFileName = transcodedFilePath.getFileName().toString(); + String targetPath = null; + if (transcodedFileName.indexOf(".") > 2) { + Path subdir = Paths.get(transcodedFileName.substring(0, 1), transcodedFileName.substring(1, 2), transcodedFileName.substring(2, 3)); + EscortFiles.ensureUNCFolder(webPath, subdir.toString()); + targetPath = Paths.get(subdir.toString(), transcodedFileName).toString(); + } else { + targetPath = transcodedFileName; + } + lowresPath = Paths.get(webPath, targetPath); + int version = 1; + while (lowresPath.toFile().exists()) { + String fileName = transcodedFileName + version + MP4EXT; + lowresPath = Paths.get(lowresPath.toString().replace(transcodedFileName, fileName)); + targetPath = targetPath.replace(transcodedFileName, fileName); + transcodedFileName = fileName; + version++; + } + + Files.move(transcodedFilePath, lowresPath); + manager.createMediaFile(targetPath, fileType, store, mediaCubeMedia).add(); + } catch (IOException e) { + logger.catching(e); + logger.error(marker, "A '{}' állomány mozgatása a '{}' helyre nem sikerült.", transcodedFilePath, lowresPath); + throw e; + } + } + +} diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java index 9573db74..fba24139 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java @@ -35,8 +35,8 @@ public class FakeStep extends JobStep { jobRuntime.incrementProgress((i + 1) * count); Thread.sleep(100); - // if (i == 2) - // throw new Exception("TESZT"); + if (i == 2) + throw new Exception("TESZT"); logger.info("Progress {}", jobRuntime.getProgress()); } } catch (Exception e) { diff --git a/server/user.jobengine.osgi.server/pages/searchitems.zul b/server/user.jobengine.osgi.server/pages/searchitems.zul index d4fefba0..8d233568 100644 --- a/server/user.jobengine.osgi.server/pages/searchitems.zul +++ b/server/user.jobengine.osgi.server/pages/searchitems.zul @@ -51,6 +51,8 @@ + +