From 3253d6dcdf5fdabea1371dd41fa5c1ccfc99e64d Mon Sep 17 00:00:00 2001 From: "vasary.daniel" Date: Fri, 5 Mar 2021 20:00:42 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C32163 --- .../run-mediacube-server-mv.launch | 2 +- .../FILEZILLA_PASARESTORETransferToStep.java | 82 +++++++++++++++---- .../server/steps/MetadataPersisterStep.java | 17 ++-- .../server/IJobEngineConfiguration.java | 2 + .../src/user/jobengine/server/JobEngine.java | 4 +- .../server/JobEngineConfiguration.java | 5 ++ 6 files changed, 89 insertions(+), 23 deletions(-) diff --git a/server/-configuration/run-mediacube-server-mv.launch b/server/-configuration/run-mediacube-server-mv.launch index bcebdcfe..2e8ba611 100644 --- a/server/-configuration/run-mediacube-server-mv.launch +++ b/server/-configuration/run-mediacube-server-mv.launch @@ -6,7 +6,7 @@ - + diff --git a/server/user.jobengine.executors/amc/user/jobengine/server/steps/FILEZILLA_PASARESTORETransferToStep.java b/server/user.jobengine.executors/amc/user/jobengine/server/steps/FILEZILLA_PASARESTORETransferToStep.java index c3831307..925549ba 100644 --- a/server/user.jobengine.executors/amc/user/jobengine/server/steps/FILEZILLA_PASARESTORETransferToStep.java +++ b/server/user.jobengine.executors/amc/user/jobengine/server/steps/FILEZILLA_PASARESTORETransferToStep.java @@ -1,31 +1,85 @@ package user.jobengine.server.steps; -import org.apache.commons.io.FileUtils; +import java.nio.file.Path; +import java.nio.file.Paths; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; -import user.commons.RemoteFile; import user.commons.StoreUri; +import user.commons.mediaarea.MediaArea; public class FILEZILLA_PASARESTORETransferToStep extends TransferStep { private static final Logger logger = LogManager.getLogger(); + private static final String CODEC_PROFILE_HIGH = "HIGH"; + private static final String CODEC_PROFILE_MAIN = "MAIN"; + private static final String CODEC_PROFILE_422 = "4:2:2"; + private static final String DISPLAY_ASPECT_16_9 = "16:9"; + private static final String DISPLAY_ASPECT_4_3 = "4:3"; + private StoreUri sourceStoreUri; + private String sourceFileName; @Override @StepEntry public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception { - long start = System.currentTimeMillis(); + this.sourceStoreUri = sourceStoreUri; + this.sourceFileName = sourceFileName; + logMediaProfile(); Object[] result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName); - RemoteFile remoteFile = sourceStoreUri.getRemoteFile(targetFileName); - if (remoteFile != null) { - if (remoteFile.getSize() > 0) { - long diff = (System.currentTimeMillis() - start) / 1000; - long bytesSpeed = remoteFile.getSize() / diff; - String speed = FileUtils.byteCountToDisplaySize(bytesSpeed); - logger.info(getMarker(), "{} size is {}, upload speed was {}/sec", targetFileName, FileUtils.byteCountToDisplaySize(remoteFile.getSize()), - speed); - } else - logger.info(getMarker(), "RemoteFile {} size is 0!", targetFileName); - } return result; } + + private boolean isHD(MediaArea mi) { + return mi.getHeight() == 1080; + } + + private boolean isSD_HIGH_16_9(MediaArea mi) { + String formatProfileName = mi.getFormatProfileName(); + return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_16_9.equals(mi.getDisplayAspect()); + } + + private boolean isSD_HIGH_4_3(MediaArea mi) { + String formatProfileName = mi.getFormatProfileName(); + return mi.getHeight() < 650 && formatProfileName.contains(CODEC_PROFILE_HIGH) && DISPLAY_ASPECT_4_3.equals(mi.getDisplayAspect()); + } + + private boolean isSD_MAIN_422(MediaArea mi) { + String formatProfileName = mi.getFormatProfileName(); + return mi.getHeight() < 650 && (formatProfileName.contains(CODEC_PROFILE_MAIN) || formatProfileName.contains(CODEC_PROFILE_422)); + } + + protected void logMediaProfile() { + Marker marker = MarkerManager.getMarker("MEDIAPROFILE"); + try { + Path filePath = Paths.get(sourceStoreUri.toString(true), sourceFileName); + MediaArea mi = new MediaArea(filePath); + mi.process(); + logger.info(marker, "{} data : {} {} {}", sourceFileName, mi.getFormatProfileName(), mi.getHeight(), mi.getDisplayAspect()); + + if (isHD(mi)) { + logger.info(marker, "{} is MOVED_HD", sourceFileName); + return; + } + + if (isSD_HIGH_16_9(mi)) { + logger.info(marker, "{} is CONVSD16_9", sourceFileName); + return; + } + + if (isSD_HIGH_4_3(mi)) { + logger.info(marker, "{} is CONVSD4_3", sourceFileName); + return; + } + + if (isSD_MAIN_422(mi)) { + logger.info(marker, "{} is MOVED_SD", sourceFileName); + return; + } + } catch (Exception e) { + logger.error(marker, e.getMessage()); + } + } + } diff --git a/server/user.jobengine.executors/amc/user/jobengine/server/steps/MetadataPersisterStep.java b/server/user.jobengine.executors/amc/user/jobengine/server/steps/MetadataPersisterStep.java index 43fd68c9..53d253d7 100644 --- a/server/user.jobengine.executors/amc/user/jobengine/server/steps/MetadataPersisterStep.java +++ b/server/user.jobengine.executors/amc/user/jobengine/server/steps/MetadataPersisterStep.java @@ -45,9 +45,9 @@ public class MetadataPersisterStep extends JobStep { Timestamp modified = downloadable.getTimestamp("modified"); Timestamp created = downloadable.getTimestamp("created"); long frames = downloadable.getLong("frames"); - + + String targetStoreName = getManager().getStore(targetStoreUri.getStoreId()).getName(); if (mediaId == 0) { - String targetStoreName = getManager().getStore(targetStoreUri.getStoreId()).getName(); //ez elszallhat, mert nincs filetype vagy store MediaFile mediaFile = manager.createMediaFile(fileName, fileTypeName, targetStoreName); //ez elszallhat, mert nincs itemtype @@ -80,9 +80,16 @@ public class MetadataPersisterStep extends JobStep { //TODO //mediaFile.setFileSize(fileSize); MediaFile mediaFile = manager.getSystemMediaFile(media); - mediaFile.setRelativePath(fileName); - mediaFile.setLastModified(modified); - manager.modify(mediaFile); + if (mediaFile == null) { + mediaFile = manager.createMediaFile(fileName, fileTypeName, targetStoreName); + mediaFile.setMediaId(media.getId()); + mediaFile.setLastModified(modified); + mediaFile.add(); + } else { + mediaFile.setRelativePath(fileName); + mediaFile.setLastModified(modified); + manager.modify(mediaFile); + } } } else diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java index fd2a5ac8..79b5613b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngineConfiguration.java @@ -23,6 +23,8 @@ public interface IJobEngineConfiguration { List getTemplates(); + boolean isScheduledExecutionDisabled(); + void load(IJobEngine jobEngine, boolean autoStart) throws Exception; void loadExecutors(IJobEngine jobEngine, boolean autoStart); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java index 0652dee1..716c7f5c 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java @@ -215,9 +215,6 @@ public class JobEngine implements IJobEngine { */ public JobEngine() { - // isScheduledExecutionDisabled = ComponentBinder.getSystemConfig().value("jobs.scheduled-execution-disabled", false); - isScheduledExecutionDisabled = true; - runQueue = new PriorityBlockingQueue(); messageQueue = new LinkedBlockingQueue(); submittedJobs = createJobs(); @@ -332,6 +329,7 @@ public class JobEngine implements IJobEngine { public synchronized void bindJobEngineConfiguration(Object service) { if (service instanceof JobEngineConfiguration) { jobEngineConfiguration = (IJobEngineConfiguration) service; + isScheduledExecutionDisabled = jobEngineConfiguration.isScheduledExecutionDisabled(); logger.info("IJobEngineConfiguration service binded"); } } diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java index 5715e931..de5335c8 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngineConfiguration.java @@ -161,6 +161,11 @@ public class JobEngineConfiguration implements IJobEngineConfiguration { return templates; } + @Override + public boolean isScheduledExecutionDisabled() { + return systemConfig.value("jobs.scheduled-execution-disabled", false); + } + @Override public void load(IJobEngine jobEngine, boolean autoStart) throws Exception { loadTemplates(); -- 2.54.0