From 6bb3fa0201896331af94491dd447d0e46b93bc22 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Wed, 14 Aug 2019 12:57:06 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31484 --- server/-configuration/scheduledjobs.json | 8 +- .../jobtemplates/common-copy.xml | 19 ++- .../jobtemplates/retrieve-ondemand.xml | 2 +- .../jobengine/server/steps/FileCopyStep.java | 121 +++++++----------- .../src/user/commons/config/JSONConfig.java | 3 +- .../remotestore/RemoteStoreProtocol.java | 12 +- .../pages/maestrojoblist.zul | 2 +- .../src/user/jobengine/server/JobEngine.java | 2 +- .../server/scheduler/SchedulerService.java | 5 +- 9 files changed, 71 insertions(+), 103 deletions(-) diff --git a/server/-configuration/scheduledjobs.json b/server/-configuration/scheduledjobs.json index f9d84efb..d98c1e1c 100644 --- a/server/-configuration/scheduledjobs.json +++ b/server/-configuration/scheduledjobs.json @@ -263,12 +263,12 @@ "template": "common-copy.xml", "cronexpression": "0 0 0/1 1/1 * ? *", "parameters": [ - {"name": "sourceStoreUri", "value": "10.10.1.100/ARCHIVE", "type": "user.commons.StoreUri"}, - {"name": "targetStoreUri", "value": "10.10.1.100/TEMP", "type": "user.commons.StoreUri"}, + {"name": "sourcePath", "value": "10.10.1.100/ARCHIVE", "type": "java.lang.String"}, + {"name": "targetPath", "value": "10.10.1.100/TEMP", "type": "java.lang.String"}, {"name": "sourceFileName", "value": "akarmi.mp4", "type": "java.lang.String"}, {"name": "targetFileName", "value": "barmi.mp4", "type": "java.lang.String"}, - {"name": "sourceRemoteProtocol", "value": "LOCAL", "type": "user.commons.remotestore.RemoteStoreProtocol"}, - {"name": "targetRemoteProtocol", "value": "FTP", "type": "user.commons.remotestore.RemoteStoreProtocol"}, + {"name": "sourceProtocol", "value": "http://", "type": "java.lang.String"}, + {"name": "targetProtocol", "value": "http://", "type": "java.lang.String"}, ] } ]} diff --git a/server/user.jobengine.executors/jobtemplates/common-copy.xml b/server/user.jobengine.executors/jobtemplates/common-copy.xml index 4ebf8689..f175bc4b 100644 --- a/server/user.jobengine.executors/jobtemplates/common-copy.xml +++ b/server/user.jobengine.executors/jobtemplates/common-copy.xml @@ -2,35 +2,34 @@ - - - + + + + - - - + - + - + - + - + diff --git a/server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml b/server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml index 94566ca8..20d3b0a1 100644 --- a/server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml +++ b/server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml @@ -76,7 +76,7 @@ - + diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java index bc1767a0..a3587139 100644 --- a/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java +++ b/server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java @@ -4,64 +4,21 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; -import user.commons.RemoteFile; import user.commons.StoreUri; import user.commons.remotestore.IProgressEventListener; import user.commons.remotestore.ProgressEvent; import user.commons.remotestore.RemoteStoreProtocol; import user.jobengine.db.IItemManager; -import user.jobengine.db.Store; import user.jobengine.server.IJobEngine; import user.jobengine.server.IJobRuntime; public class FileCopyStep { private static final Logger logger = LogManager.getLogger(); private IItemManager manager; - private StoreUri sourceUri; - private StoreUri targetUri; - private String sourceFileName; - private String targetFileName; - private RemoteStoreProtocol sourceRemoteStoreProtocol; - private RemoteStoreProtocol targetRemoteStoreProtocol; - private Store sourceStore; - private Store targetStore; - private RemoteFile sourceRemotefile; private Marker marker; - @StepEntry - public Object[] execute(String sourceStoreName, String targetStoreName, String sourceFileName, String targetFileName, - RemoteStoreProtocol sourceRemoteStoreProtocol, RemoteStoreProtocol targetRemoteStoreProtocol - , IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { - marker = jobRuntime.getMarker(); - this.sourceFileName = sourceFileName; - this.targetFileName = targetFileName; - this.sourceRemoteStoreProtocol = sourceRemoteStoreProtocol; - this.targetRemoteStoreProtocol = targetRemoteStoreProtocol; - - setAndCheck(sourceStoreName, targetStoreName, jobEngine); - - try { - sourceUri.addProgressListener(new IProgressEventListener() { - @Override - public void progressChanged(ProgressEvent evt) { - jobRuntime.incrementProgress(evt.getProgress()); - } - }); - - RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName); - - } catch (Exception e) { - logger.catching(e); - throw e; - } finally { - sourceUri.cleanUp(); - targetUri.cleanUp(); - } - - return null; - } - - private void setAndCheck(String sourceStoreName, String targetStoreName, IJobEngine jobEngine) { + private void check(String sourceProtocol, String sourcePath, String sourceFileName, String targetProtocol, String targetPath, String targetFileName, + IJobEngine jobEngine, IJobRuntime jobRuntime) { if (jobEngine == null) { logger.error(marker, "A folyamatkezelő réteg nem elérhető."); throw new NullPointerException("Internal error, missing JobEngine reference."); @@ -71,53 +28,63 @@ public class FileCopyStep { logger.error(marker, "Az adatbáziskezelő réteg nem elérhető."); throw new NullPointerException("Internal error, missing ItemManager reference."); } - if (sourceUri == null) { - logger.error(marker, "A sourceStoreUri bemeneti paramétere üres."); - throw new NullPointerException( - "System is not configured properly, 'mediaCubeMedia' input parameter missing."); + if (sourceProtocol == null) { + logger.error(marker, "A forrás protokol bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); } - if (targetUri == null) { - logger.error(marker, "A targetStoreUri bemeneti paramétere üres."); - throw new NullPointerException( - "System is not configured properly, 'mediaCubeMedia' input parameter missing."); + if (sourcePath == null) { + logger.error(marker, "A forrás fájl elérés bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); } if (sourceFileName == null) { logger.error(marker, "A forrás fájlnév bemeneti paramétere üres."); - throw new NullPointerException( - "System is not configured properly, 'mediaCubeMedia' input parameter missing."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); } - sourceUri = sourceStore.getSourceStoreUri(sourceRemoteStoreProtocol); - if (targetFileName == null) { - logger.error(marker, "A cél fájlnév bemeneti paramétere üres."); - throw new NullPointerException( - "System is not configured properly, 'mediaCubeMedia' input parameter missing."); + if (targetProtocol == null) { + logger.error(marker, "A cél protokol bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); } - targetUri = targetStore.getTargetStoreUri(targetRemoteStoreProtocol); - if (sourceRemoteStoreProtocol == null) { - logger.error(marker, "A forrás másolási protokol bemeneti paramétere üres."); - throw new NullPointerException( - "System is not configured properly, 'mediaCubeMedia' input parameter missing."); + if (targetPath == null) { + logger.error(marker, "A cél fájl elérés bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); } - if (targetRemoteStoreProtocol == null) { - logger.error(marker, "A cél másolási protokol bemeneti paramétere üres."); - throw new NullPointerException( - "System is not configured properly, 'mediaCubeMedia' input parameter missing."); + if (targetFileName == null) { + logger.error(marker, "A cél fájlnév bemeneti paramétere üres."); + throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing."); } } - - private void transferFile(String sourceFileName, String targetFileName) throws Exception { - int reply = 0; - logger.info("Transfer clip {}", sourceFileName); + + @StepEntry + public Object[] execute(String sourceProtocol, String sourcePath, String sourceFileName, String targetProtocol, String targetPath, String targetFileName, + IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception { + marker = jobRuntime.getMarker(); + + check(sourceProtocol, sourcePath, sourceFileName, targetProtocol, targetPath, targetFileName, jobEngine, jobRuntime); + + StoreUri source = null; + StoreUri target = null; + try { - RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName); + source = manager.createStoreUri(Enum.valueOf(RemoteStoreProtocol.class, sourceProtocol), sourcePath); + target = manager.createStoreUri(Enum.valueOf(RemoteStoreProtocol.class, targetProtocol), targetPath); + source.addProgressListener(new IProgressEventListener() { + @Override + public void progressChanged(ProgressEvent evt) { + jobRuntime.incrementProgress(evt.getProgress()); + } + }); + + source.transferFrom(target, sourceFileName, targetFileName); + } catch (Exception e) { logger.catching(e); throw e; } finally { - sourceUri.cleanUp(); - targetUri.cleanUp(); + source.cleanUp(); + target.cleanUp(); } + return null; } -} +} diff --git a/server/user.jobengine.osgi.commons/src/user/commons/config/JSONConfig.java b/server/user.jobengine.osgi.commons/src/user/commons/config/JSONConfig.java index b3a9db32..0cc342a4 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/config/JSONConfig.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/config/JSONConfig.java @@ -17,7 +17,7 @@ public class JSONConfig { private static Logger logger = LogManager.getLogger(); private static ObjectMapper objectMapper = createMapper(); - private static ObjectMapper createMapper() { + public static ObjectMapper createMapper() { return new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) .registerModule(new JodaModule()).setSerializationInclusion(Include.NON_NULL); } @@ -30,6 +30,7 @@ public class JSONConfig { File configFile = new File(configPath); if (configFile.exists()) { String json = new String(Files.readAllBytes(Paths.get(configFile.getAbsolutePath()))); + try { result = objectMapper.readValue(json.getBytes(), type); diff --git a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/RemoteStoreProtocol.java b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/RemoteStoreProtocol.java index 2dbaa05e..2ace5d19 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/remotestore/RemoteStoreProtocol.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/remotestore/RemoteStoreProtocol.java @@ -2,12 +2,6 @@ package user.commons.remotestore; public enum RemoteStoreProtocol { HTTPS("https://"), HTTP("http://"), FTP("ftp://"), SMB("smb://"), LOCAL("file://"), TSM("tsm://"); - private final String value; - - private RemoteStoreProtocol(String value) { - this.value = value; - } - static public RemoteStoreProtocol fromString(String data) { RemoteStoreProtocol result = null; if (data != null) { @@ -21,6 +15,12 @@ public enum RemoteStoreProtocol { return result; } + private final String value; + + RemoteStoreProtocol(String value) { + this.value = value; + } + public String getValue() { return value; } diff --git a/server/user.jobengine.osgi.server/pages/maestrojoblist.zul b/server/user.jobengine.osgi.server/pages/maestrojoblist.zul index 9eee0cf1..b2c4acfd 100644 --- a/server/user.jobengine.osgi.server/pages/maestrojoblist.zul +++ b/server/user.jobengine.osgi.server/pages/maestrojoblist.zul @@ -4,7 +4,7 @@ apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.MaestroJobListModel')"> - 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 582c7e02..84a55cb1 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 @@ -563,7 +563,7 @@ public class JobEngine implements IJobEngine { InputStream stream = null; try { String filePath = templateRoot + name; - //logger.info("Loading template: " + name); + logger.info("Loading template: " + name); stream = new FileInputStream(filePath); Parser parser = new Parser(stream); Encoder encoder = new Encoder(); diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java index dd93f699..5caa0c5b 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java @@ -44,7 +44,7 @@ public class SchedulerService { private static final Logger logger = LogManager.getLogger(); private static final String CRON_EXPRESSIONS_DELIMITER = ";"; - public static Object parseObjectFromString(String s, Class clazz) throws Exception { + public static T parseObjectFromString(String s, Class clazz) throws Exception { return clazz.getConstructor(new Class[] { String.class }).newInstance(s); } @@ -80,8 +80,9 @@ public class SchedulerService { String stringValue = jsParam.getString("value"); if (stringValue == null) continue; + Class clazz = null; try { - Class clazz = Class.forName(jsParam.getString("type")); + clazz = Class.forName(jsParam.getString("type")); Object value = parseObjectFromString(stringValue, clazz); sj.setJobParameter(jsParam.getString("name"), value); } catch (Exception e) { -- 2.54.0