git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 14 Aug 2019 12:57:06 +0000 (12:57 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 14 Aug 2019 12:57:06 +0000 (12:57 +0000)
server/-configuration/scheduledjobs.json
server/user.jobengine.executors/jobtemplates/common-copy.xml
server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java
server/user.jobengine.osgi.commons/src/user/commons/config/JSONConfig.java
server/user.jobengine.osgi.commons/src/user/commons/remotestore/RemoteStoreProtocol.java
server/user.jobengine.osgi.server/pages/maestrojoblist.zul
server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java
server/user.jobengine.osgi.server/src/user/jobengine/server/scheduler/SchedulerService.java

index f9d84efbb40b999d428c974cf9d4022284c75601..d98c1e1cc05d6203efe70c59c5dec6c9d24c778e 100644 (file)
       "template": "common-copy.xml",\r
       "cronexpression": "0 0 0/1 1/1 * ? *",\r
       "parameters": [ \r
-       {"name": "sourceStoreUri", "value": "10.10.1.100/ARCHIVE", "type": "user.commons.StoreUri"},\r
-       {"name": "targetStoreUri", "value": "10.10.1.100/TEMP", "type": "user.commons.StoreUri"},\r
+       {"name": "sourcePath", "value": "10.10.1.100/ARCHIVE", "type": "java.lang.String"},\r
+       {"name": "targetPath", "value": "10.10.1.100/TEMP", "type": "java.lang.String"},\r
        {"name": "sourceFileName", "value": "akarmi.mp4", "type": "java.lang.String"},\r
        {"name": "targetFileName", "value": "barmi.mp4", "type": "java.lang.String"},\r
-       {"name": "sourceRemoteProtocol", "value": "LOCAL", "type": "user.commons.remotestore.RemoteStoreProtocol"},\r
-       {"name": "targetRemoteProtocol", "value": "FTP", "type": "user.commons.remotestore.RemoteStoreProtocol"},\r
+       {"name": "sourceProtocol", "value": "http://", "type": "java.lang.String"},\r
+       {"name": "targetProtocol", "value": "http://", "type": "java.lang.String"},\r
       ]\r
        }\r
 ]}\r
index 4ebf868974c68c7ab77ae45438679efbd35bd933..f175bc4b83e9e8b883a6e0b33f968f7c381a7447 100644 (file)
@@ -2,35 +2,34 @@
 <jobtemplate name="Általános file másolás">\r
        <declarations>\r
                <parameters>\r
-\r
-                       <parameter name="sourceStoreName" type="java.lang.String"/>\r
-                       <parameter name="targetStoreName" type="java.lang.String"/>\r
+                       <parameter name="sourceProtocol" type="java.lang.String"/>\r
+                       <parameter name="sourcePath" type="java.lang.String"/>\r
                        <parameter name="sourceFileName" type="java.lang.String"/>\r
+                       <parameter name="targetPath" type="java.lang.String"/>\r
+                       <parameter name="targetProtocol" type="java.lang.String"/>\r
                        <parameter name="targetFileName" type="java.lang.String"/>\r
-                       <parameter name="sourceRemoteProtocol" type="user.commons.remotestore.RemoteStoreProtocol"/>\r
-                       <parameter name="targetRemoteProtocol" type="user.commons.remotestore.RemoteStoreProtocol"/>\r
                </parameters>\r
        </declarations>\r
        <commands>\r
                <calljobstep id="id1" type="user.jobengine.server.steps.FileCopyStep" weight="1">\r
                        <inputs>\r
                                <input>\r
-                                       <parameter name="sourceStoreName" />\r
+                                       <parameter name="sourceProtocol" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="targetStoreName" />\r
+                                       <parameter name="sourcePath" />\r
                                </input>\r
                                <input>\r
                                        <parameter name="sourceFileName" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="targetFileName" />\r
+                                       <parameter name="targetPath" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="sourceRemoteProtocol" />\r
+                                       <parameter name="targetProtocol" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="targetRemoteProtocol" />\r
+                                       <parameter name="targetFileName" />\r
                                </input>\r
                        </inputs>\r
                </calljobstep>\r
index 94566ca898330e5620ef2a1c47154a416fb33799..20d3b0a1e99e51c7241090eb348f5c69f0e86997 100644 (file)
@@ -76,7 +76,7 @@
                <calljobstep type="user.jobengine.server.steps.TSMExtendedRetrieveStep" weight="1">\r
                        <inputs>\r
                                <input>\r
-                                       <parameter name="mediaCubeMedia" />\r
+                                       <variable name="mediaCubeMedia" />\r
                                </input>\r
                                <input>\r
                                        <variable name="targetPath" />\r
index bc1767a0bca758e75382312519de7be6b650e2f3..a35871394ac6b5a793ee2dfbd351001d52f44b33 100644 (file)
@@ -4,64 +4,21 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;\r
 import org.apache.logging.log4j.Marker;\r
 \r
-import user.commons.RemoteFile;\r
 import user.commons.StoreUri;\r
 import user.commons.remotestore.IProgressEventListener;\r
 import user.commons.remotestore.ProgressEvent;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
 import user.jobengine.db.IItemManager;\r
-import user.jobengine.db.Store;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
 public class FileCopyStep {\r
        private static final Logger logger = LogManager.getLogger();\r
        private IItemManager manager;\r
-       private StoreUri sourceUri;\r
-       private StoreUri targetUri;\r
-       private String sourceFileName;\r
-       private String targetFileName;\r
-       private RemoteStoreProtocol sourceRemoteStoreProtocol;\r
-       private RemoteStoreProtocol targetRemoteStoreProtocol;\r
-       private Store sourceStore;\r
-       private Store targetStore;\r
-       private RemoteFile sourceRemotefile;\r
        private Marker marker;\r
 \r
-       @StepEntry\r
-       public Object[] execute(String sourceStoreName, String targetStoreName, String sourceFileName, String targetFileName,\r
-                       RemoteStoreProtocol sourceRemoteStoreProtocol, RemoteStoreProtocol targetRemoteStoreProtocol\r
-                       , IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
-               marker = jobRuntime.getMarker();\r
-               this.sourceFileName = sourceFileName;\r
-               this.targetFileName = targetFileName;\r
-               this.sourceRemoteStoreProtocol = sourceRemoteStoreProtocol;\r
-               this.targetRemoteStoreProtocol = targetRemoteStoreProtocol;\r
-\r
-               setAndCheck(sourceStoreName, targetStoreName, jobEngine);\r
-               \r
-               try {\r
-                       sourceUri.addProgressListener(new IProgressEventListener() {\r
-                               @Override\r
-                               public void progressChanged(ProgressEvent evt) {\r
-                                       jobRuntime.incrementProgress(evt.getProgress());\r
-                               }\r
-                       });\r
-\r
-               RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
-\r
-               } catch (Exception e) {\r
-                       logger.catching(e);\r
-                       throw e;\r
-               } finally {\r
-                       sourceUri.cleanUp();\r
-                       targetUri.cleanUp();\r
-               }\r
-               \r
-               return null;\r
-       }\r
-       \r
-       private void setAndCheck(String sourceStoreName, String targetStoreName, IJobEngine jobEngine) {\r
+       private void check(String sourceProtocol, String sourcePath, String sourceFileName, String targetProtocol, String targetPath, String targetFileName,\r
+                       IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
                if (jobEngine == null) {\r
                        logger.error(marker, "A folyamatkezelő réteg nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing JobEngine reference.");\r
@@ -71,53 +28,63 @@ public class FileCopyStep {
                        logger.error(marker, "Az adatbáziskezelő réteg nem elérhető.");\r
                        throw new NullPointerException("Internal error, missing ItemManager reference.");\r
                }\r
-               if (sourceUri == null) {\r
-                       logger.error(marker, "A sourceStoreUri bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+               if (sourceProtocol == null) {\r
+                       logger.error(marker, "A forrás protokol bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
                }\r
-               if (targetUri == null) {\r
-                       logger.error(marker, "A targetStoreUri bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+               if (sourcePath == null) {\r
+                       logger.error(marker, "A forrás fájl elérés bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
                }\r
                if (sourceFileName == null) {\r
                        logger.error(marker, "A forrás fájlnév bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
                }\r
-               sourceUri = sourceStore.getSourceStoreUri(sourceRemoteStoreProtocol);\r
-               if (targetFileName == null) {\r
-                       logger.error(marker, "A cél fájlnév bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+               if (targetProtocol == null) {\r
+                       logger.error(marker, "A cél protokol bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
                }\r
-               targetUri = targetStore.getTargetStoreUri(targetRemoteStoreProtocol);\r
-               if (sourceRemoteStoreProtocol == null) {\r
-                       logger.error(marker, "A forrás másolási protokol bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+               if (targetPath == null) {\r
+                       logger.error(marker, "A cél fájl elérés bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
                }\r
-               if (targetRemoteStoreProtocol == null) {\r
-                       logger.error(marker, "A cél másolási protokol bemeneti paramétere üres.");\r
-                       throw new NullPointerException(\r
-                                       "System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+               if (targetFileName == null) {\r
+                       logger.error(marker, "A cél fájlnév bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
                }\r
        }\r
-       \r
-       private void transferFile(String sourceFileName, String targetFileName) throws Exception {\r
-               int reply = 0;\r
-               logger.info("Transfer clip {}", sourceFileName);\r
+\r
+       @StepEntry\r
+       public Object[] execute(String sourceProtocol, String sourcePath, String sourceFileName, String targetProtocol, String targetPath, String targetFileName,\r
+                       IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               marker = jobRuntime.getMarker();\r
+\r
+               check(sourceProtocol, sourcePath, sourceFileName, targetProtocol, targetPath, targetFileName, jobEngine, jobRuntime);\r
+\r
+               StoreUri source = null;\r
+               StoreUri target = null;\r
+\r
                try {\r
-                       RemoteFile result = sourceUri.transferFrom(targetUri, sourceFileName, targetFileName);\r
+                       source = manager.createStoreUri(Enum.valueOf(RemoteStoreProtocol.class, sourceProtocol), sourcePath);\r
+                       target = manager.createStoreUri(Enum.valueOf(RemoteStoreProtocol.class, targetProtocol), targetPath);\r
+                       source.addProgressListener(new IProgressEventListener() {\r
+                               @Override\r
+                               public void progressChanged(ProgressEvent evt) {\r
+                                       jobRuntime.incrementProgress(evt.getProgress());\r
+                               }\r
+                       });\r
+\r
+                       source.transferFrom(target, sourceFileName, targetFileName);\r
+\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
                        throw e;\r
                } finally {\r
-                       sourceUri.cleanUp();\r
-                       targetUri.cleanUp();\r
+                       source.cleanUp();\r
+                       target.cleanUp();\r
                }\r
 \r
+               return null;\r
        }\r
-}\r
 \r
+}\r
index b3a9db323c0a6cc915cdeff464e939cc1aa365c4..0cc342a4275e54ca55d0b25627b6492358c87d41 100644 (file)
@@ -17,7 +17,7 @@ public class JSONConfig {
        private static Logger logger = LogManager.getLogger();\r
        private static ObjectMapper objectMapper = createMapper();\r
 \r
-       private static ObjectMapper createMapper() {\r
+       public static ObjectMapper createMapper() {\r
                return new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)\r
                                .registerModule(new JodaModule()).setSerializationInclusion(Include.NON_NULL);\r
        }\r
@@ -30,6 +30,7 @@ public class JSONConfig {
                File configFile = new File(configPath);\r
                if (configFile.exists()) {\r
                        String json = new String(Files.readAllBytes(Paths.get(configFile.getAbsolutePath())));\r
+\r
                        try {\r
                                result = objectMapper.readValue(json.getBytes(), type);\r
 \r
index 2dbaa05e1523ebc466475fdd3cd0910705cd0b66..2ace5d19e70efcd6dad401d1cd55b3a80a4eb58a 100644 (file)
@@ -2,12 +2,6 @@ package user.commons.remotestore;
 \r
 public enum RemoteStoreProtocol {\r
        HTTPS("https://"), HTTP("http://"), FTP("ftp://"), SMB("smb://"), LOCAL("file://"), TSM("tsm://");\r
-       private final String value;\r
-\r
-       private RemoteStoreProtocol(String value) {\r
-               this.value = value;\r
-       }\r
-\r
        static public RemoteStoreProtocol fromString(String data) {\r
                RemoteStoreProtocol result = null;\r
                if (data != null) {\r
@@ -21,6 +15,12 @@ public enum RemoteStoreProtocol {
                return result;\r
        }\r
 \r
+       private final String value;\r
+\r
+       RemoteStoreProtocol(String value) {\r
+               this.value = value;\r
+       }\r
+\r
        public String getValue() {\r
                return value;\r
        }\r
index 9eee0cf165f9df4b70ab0134e6695eb718cc3a42..b2c4acfdeb009242760f03ed1606263dda8dda0d 100644 (file)
@@ -4,7 +4,7 @@
        apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.MaestroJobListModel')">\r
                <custom-attributes org.zkoss.zul.image.preload="true" />\r
 \r
-               <listbox id="jobs" height="400px" model="@load(vm.jobs)" multiple="false" checkmark="false"\r
+               <listbox id="jobs" height="400px" model="@load(vm.jobList)" multiple="false" checkmark="false"\r
                        oddRowSclass="listbox-odd-style" sclass="listbox-normal-style">\r
                        <auxhead sclass="category-center">\r
                                <auxheader label="Jobok" colspan="6"/>\r
index 582c7e021fc40d099cd9140710cece0e94d40dbf..84a55cb1657f434c7ec224b2819d792d3e2914a3 100644 (file)
@@ -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();
index dd93f6995e4613baf2c0a4c0f5280539d540ab97..5caa0c5be3c6cb650a8932300bd0b313a0913311 100644 (file)
@@ -44,7 +44,7 @@ public class SchedulerService {
        private static final Logger logger = LogManager.getLogger();\r
        private static final String CRON_EXPRESSIONS_DELIMITER = ";";\r
 \r
-       public static Object parseObjectFromString(String s, Class<?> clazz) throws Exception {\r
+       public static <T> T parseObjectFromString(String s, Class<T> clazz) throws Exception {\r
                return clazz.getConstructor(new Class[] { String.class }).newInstance(s);\r
        }\r
 \r
@@ -80,8 +80,9 @@ public class SchedulerService {
                                String stringValue = jsParam.getString("value");\r
                                if (stringValue == null)\r
                                        continue;\r
+                               Class<?> clazz = null;\r
                                try {\r
-                                       Class<?> clazz = Class.forName(jsParam.getString("type"));\r
+                                       clazz = Class.forName(jsParam.getString("type"));\r
                                        Object value = parseObjectFromString(stringValue, clazz);\r
                                        sj.setJobParameter(jsParam.getString("name"), value);\r
                                } catch (Exception e) {\r