git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorDénes Horváth <USER\denes.horvath>
Fri, 6 Sep 2019 08:31:06 +0000 (08:31 +0000)
committerDénes Horváth <USER\denes.horvath>
Fri, 6 Sep 2019 08:31:06 +0000 (08:31 +0000)
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/jobtemplates/common-copy.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/FileCopyStep.java
server/user.jobengine.osgi.server/pages/directorylist.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/DirectoryListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TargetsListModel.java

index 93d01f230bea6ea27758dd1f6ddc769b316c16bb..8e3d17728c3024291f61ca223eff0f53b8a929f2 100644 (file)
@@ -35,5 +35,5 @@
        <executor className="user.jobengine.server.steps.UploadRecordingToNexioStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.MediaToolStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.UpdateGhostMediaData" maxConcurrent="1"/>\r
-       <executor className="user.jobengine.server.steps.FileCopyStep" maxConcurrent="1"/>\r
+       <executor className="user.jobengine.server.steps.FileCopyStep" maxConcurrent="10"/>\r
 </executors>
\ No newline at end of file
index f175bc4b83e9e8b883a6e0b33f968f7c381a7447..caa148172cd26c745472065ed72c2552b96c94e7 100644 (file)
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<jobtemplate name="Általános file másolás">\r
+<jobtemplate name="Általános file másolás" multiInstance="true">\r
        <declarations>\r
                <parameters>\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="targetPath" type="java.lang.String"/>\r
                        <parameter name="targetFileName" type="java.lang.String"/>\r
                </parameters>\r
        </declarations>\r
                                        <parameter name="sourceFileName" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="targetPath" />\r
+                                       <parameter name="targetProtocol" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="targetProtocol" />\r
+                                       <parameter name="targetPath" />\r
                                </input>\r
                                <input>\r
                                        <parameter name="targetFileName" />\r
index a35871394ac6b5a793ee2dfbd351001d52f44b33..eefbc31b25d82bdf05075a478a6a5df0cf5571b9 100644 (file)
@@ -12,7 +12,7 @@ import user.jobengine.db.IItemManager;
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
-public class FileCopyStep {\r
+public class FileCopyStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
        private IItemManager manager;\r
        private Marker marker;\r
@@ -30,27 +30,27 @@ public class FileCopyStep {
                }\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
+                       throw new NullPointerException("System is not configured properly, 'sourceProtocol' input parameter missing.");\r
                }\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
+                       throw new NullPointerException("System is not configured properly, 'sourcePath' 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("System is not configured properly, 'mediaCubeMedia' input parameter missing.");\r
+                       throw new NullPointerException("System is not configured properly, 'sourceFileName' input parameter missing.");\r
                }\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
+                       throw new NullPointerException("System is not configured properly, 'targetProtocol' input parameter missing.");\r
                }\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
+                       throw new NullPointerException("System is not configured properly, 'targetPath' input parameter missing.");\r
                }\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
+                       throw new NullPointerException("System is not configured properly, 'targetFileName' input parameter missing.");\r
                }\r
        }\r
 \r
@@ -80,11 +80,14 @@ public class FileCopyStep {
                        logger.catching(e);\r
                        throw e;\r
                } finally {\r
-                       source.cleanUp();\r
-                       target.cleanUp();\r
+                       if (source != null) {\r
+                               source.cleanUp();\r
+                       }\r
+                       if (target != null) {\r
+                               target.cleanUp();\r
+                       }\r
                }\r
 \r
                return null;\r
        }\r
-\r
 }\r
index 58ab0ba3557b557af90cc13a7e993cd0c88a3b4c..5e58f8c6601dda4f78af488154c270bed4ac07ed 100644 (file)
@@ -7,8 +7,8 @@
                                    <!-- Keresés menü -->\r
                                    <hbox width="100%">\r
                                                <button onClick="@command('onBack')" image="/img/baseline_arrow_back_black_18dp.png" />\r
-                                               <textbox id="sourceSearch" value="@bind(vm.searchText)" onOK="@command('doSearch')" />\r
-                                               <button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" />\r
+                                               <textbox id="sourceSearch" value="@bind(vm.searchText)" onOK="@command('refresh')" />\r
+                                               <!-- button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" / -->\r
                                                <button image="/img/baseline_close_black_18dp.png" onClick="@command('clearFilter')" />\r
                                                <button image="/img/baseline_refresh_black_18dp.png" onClick="@command('refresh')"/>\r
                                        </hbox>\r
index b370b0fdd467b560e121d548c9945d5b128f7ee0..40783dcb66082421a8702c2bcecce872ed0e01e4 100644 (file)
@@ -1,6 +1,5 @@
 package user.jobengine.zk.model;\r
 \r
-import java.util.ArrayList;\r
 import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
@@ -18,18 +17,17 @@ import org.zkoss.zul.ListModelList;
 import user.commons.RemoteFile;\r
 import user.commons.StoreUri;\r
 import user.commons.config.JSONConfig;\r
-import user.jobengine.db.Store;\r
 \r
 public class DirectoryListModel {\r
        private static final Logger logger = LogManager.getLogger();\r
-       private Store store = new Store();\r
        private ListModelList<RemoteFile> files;\r
-       private List<RemoteFile> filesCopy;\r
+       // private List<RemoteFile> filesCopy;\r
        private StoreUri uri;\r
        private MaestroConfig config = null;\r
        private FileSizeConverter fileSizeConverter = new FileSizeConverter();\r
        private String searchText;\r
        private String defaultFileFilter;\r
+       private String defaultDirectoryFilter;\r
 \r
        @NotifyChange("searchText")\r
        public void changeDirectory(RemoteFile selectedFolder) throws Exception {\r
@@ -46,27 +44,12 @@ public class DirectoryListModel {
        @Command\r
        @NotifyChange({ "files", "searchText" })\r
        public void clearFilter() throws Exception {\r
-               // files = new ListModelList<>(filesCopy);\r
                setSearchText(null);\r
                files.clear();\r
-               files.addAll(filesCopy);\r
-               selectedItemChanged();\r
-       }\r
+               uri.setFileFilter(defaultFileFilter);\r
+               uri.setDirectoryFilter(defaultDirectoryFilter);\r
+               setSourceList();\r
 \r
-       @Command\r
-       @NotifyChange({ "files", "searchText" })\r
-       public void doSearch() throws Exception {\r
-               if (searchText == null || searchText == "") {\r
-                       files.clear();\r
-                       files.addAll(filesCopy);\r
-               } else {\r
-                       files.clear();\r
-                       for (int i = 0; i < filesCopy.size(); i++) {\r
-                               if (filesCopy.get(i).getName().contains(searchText)) {\r
-                                       files.add(filesCopy.get(i));\r
-                               }\r
-                       }\r
-               }\r
                selectedItemChanged();\r
        }\r
 \r
@@ -74,10 +57,6 @@ public class DirectoryListModel {
                return files;\r
        }\r
 \r
-       public List<RemoteFile> getFilesCopy() {\r
-               return filesCopy;\r
-       }\r
-\r
        public FileSizeConverter getFileSizeConverter() {\r
                return fileSizeConverter;\r
        }\r
@@ -86,10 +65,6 @@ public class DirectoryListModel {
                return searchText;\r
        }\r
 \r
-       public Store getStore() {\r
-               return store;\r
-       }\r
-\r
        public StoreUri getUri() {\r
                return uri;\r
        }\r
@@ -101,6 +76,7 @@ public class DirectoryListModel {
                        config = JSONConfig.read(key, MaestroConfig.class);\r
                        uri = config.getSourceStoreUri();\r
                        defaultFileFilter = uri.getFileFilter();\r
+                       defaultDirectoryFilter = uri.getDirectoryFilter();\r
 \r
                        files = new ListModelList<>();\r
                        setSourceList();\r
@@ -146,18 +122,15 @@ public class DirectoryListModel {
        @Command\r
        @NotifyChange("files")\r
        public void refresh() throws Exception {\r
-               if (searchText == null || searchText == "") {\r
-                       files.clear();\r
-                       files.addAll(uri.getRemoteFiles());\r
+               if (searchText == null || searchText.equals("")) {\r
+                       uri.setFileFilter(defaultFileFilter);\r
+                       uri.setDirectoryFilter(defaultDirectoryFilter);\r
+                       setSourceList();\r
                } else {\r
                        files.clear();\r
-                       // List<RemoteFile> currList = new ArrayList<>;\r
-                       List<RemoteFile> currList = uri.getRemoteFiles();\r
-                       for (int i = 0; i < currList.size(); i++) {\r
-                               if (currList.get(i).getName().contains(searchText)) {\r
-                                       files.add(currList.get(i));\r
-                               }\r
-                       }\r
+                       uri.setFileFilter(searchText);\r
+                       uri.setDirectoryFilter(searchText);\r
+                       files.addAll(uri.getRemoteFiles());\r
                }\r
 \r
                selectedItemChanged();\r
@@ -174,10 +147,6 @@ public class DirectoryListModel {
                BindUtils.postGlobalCommand(null, null, "updateExecuteState", args);\r
        }\r
 \r
-       public void setFilesCopy(List<RemoteFile> filesCopy) {\r
-               this.filesCopy = filesCopy;\r
-       }\r
-\r
        public void setFileSizeConverter(FileSizeConverter fileSizeConverter) {\r
                this.fileSizeConverter = fileSizeConverter;\r
        }\r
@@ -191,11 +160,7 @@ public class DirectoryListModel {
                // files = new ListModelList<>(uri.getRemoteFiles());\r
                files.clear();\r
                files.addAll(uri.getRemoteFiles());\r
-               filesCopy = new ArrayList<>(files);\r
-       }\r
-\r
-       public void setStore(Store store) {\r
-               this.store = store;\r
+               // filesCopy = new ArrayList<>(files);\r
        }\r
 \r
        public void setUri(StoreUri uri) {\r
index bebeeea69eefc85bce05b93436576d8e6611c885..dc7434715c919b9ad5d81333f5ee896cf12a4656 100644 (file)
@@ -17,6 +17,7 @@ import org.zkoss.zul.Window;
 import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
 import user.commons.ListUtils;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
 import user.jobengine.db.ItemManagerData.SignalType;\r
 import user.jobengine.server.IJobChangedListener;\r
 import user.jobengine.server.IJobEngine;\r
@@ -24,10 +25,12 @@ import user.jobengine.server.IJobRuntime;
 import user.jobengine.server.JobChangedEvent;\r
 import user.jobengine.server.JobEngine;\r
 import user.jobengine.server.JobEngineException;\r
+import user.jobengine.server.scheduler.ScheduledJob;\r
 import user.jobengine.zk.util.SessionUtil;\r
 \r
 public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedListener {\r
        private static final Logger logger = LogManager.getLogger();\r
+       private static final String TEMPLATE = "common-copy.xml";\r
        private ListModelList<IJobRuntime> jobList = new ListModelList<IJobRuntime>();\r
        private IJobEngine jobEngine = null;\r
        private int newPriority = 1;\r
@@ -84,22 +87,24 @@ public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedLi
        public void jobChanged(JobChangedEvent event) {\r
                JobChangedEvent jobEvent = event;\r
                final IJobRuntime job = jobEvent.getJob();\r
-               if (jobEvent.getSignalType().equals(SignalType.CREATE)) {\r
-                       registerTask(() -> onJobCreated(job));\r
-                       return;\r
-               }\r
-               if (jobEvent.getSignalType().equals(SignalType.DELETE)) {\r
-                       registerTask(() -> onJobDeleted(job));\r
-                       return;\r
-               }\r
-               if (jobEvent.getSignalType().equals(SignalType.UPDATE)) {\r
-                       registerTask(() -> onJobUpdated(job));\r
-                       return;\r
+               if (job.getOwner() == currentUser) {\r
+                       if (jobEvent.getSignalType().equals(SignalType.CREATE)) {\r
+                               registerTask(() -> onJobCreated(job));\r
+                               return;\r
+                       }\r
+                       if (jobEvent.getSignalType().equals(SignalType.DELETE)) {\r
+                               registerTask(() -> onJobDeleted(job));\r
+                               return;\r
+                       }\r
+                       if (jobEvent.getSignalType().equals(SignalType.UPDATE)) {\r
+                               registerTask(() -> onJobUpdated(job));\r
+                               return;\r
+                       }\r
                }\r
        }\r
 \r
        private void onJobCreated(IJobRuntime job) {\r
-               jobList.add(job);\r
+               // jobList.add(job);\r
                notifyChange("jobList");\r
        }\r
 \r
@@ -134,17 +139,25 @@ public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedLi
 \r
        @GlobalCommand\r
        @NotifyChange({ "jobList" })\r
-       public void submitJob() {\r
-               // public void submitJob(@BindingParam("targets") MaestroTarget targets)\r
-               // {\r
-               IJobRuntime job;\r
-               String template = "fake.xml";\r
-               // Map<String, Object> args = new HashMap<>();\r
-               // args.put("targets", targets);\r
+       public void submitJob(@BindingParam("params") Object params) {\r
+               // public void submitJob() {\r
+               ScheduledJob scheduledJob = jobEngine.getScheduledJob(TEMPLATE);\r
+               Map<String, Object> parameters = scheduledJob.getJobParameters();\r
+               // Map<String, Object> parameters = new HashMap<>();\r
+               // parameters.putAll(params);\r
+               parameters.put("sourceProtocol", RemoteStoreProtocol.LOCAL.toString());\r
+               parameters.put("sourcePath", "c:/temp");\r
+               parameters.put("sourceFileName", "index.bat");\r
+\r
+               parameters.put("targetProtocol", RemoteStoreProtocol.LOCAL.toString());\r
+               parameters.put("targetPath", "c:/temp1");\r
+               parameters.put("targetFileName", "index.bat");\r
+\r
                try {\r
-                       // jobEngine.submit(template, "fakeJob", null, currentUser);\r
-                       job = jobEngine.submit(template, "fakeJob", ListUtils.asMap("itemID", 0), currentUser);\r
-                       // jobList.add(job);\r
+                       IJobRuntime job;\r
+                       // jobEngine.submit(template, "CopyJob", null, currentUser);\r
+                       job = jobEngine.submit(TEMPLATE, "CopyJob", parameters, currentUser);\r
+                       jobList.add(job);\r
                } catch (JobEngineException e) {\r
                        logger.info("Hiba a job indításakor", e);\r
                }\r
index 25e7cf86b21a62693c845abed877b275a688eaee..9148688004b6b9d837d1126457764cba8213ce3c 100644 (file)
@@ -1,5 +1,7 @@
 package user.jobengine.zk.model;\r
 \r
+import java.util.HashMap;\r
+import java.util.Map;\r
 import java.util.Set;\r
 \r
 import org.apache.logging.log4j.LogManager;\r
@@ -14,6 +16,8 @@ import org.zkoss.zul.ListModelList;
 \r
 import user.commons.RemoteFile;\r
 import user.commons.config.JSONConfig;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.jobengine.server.IJobEngine;\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 \r
 public class TargetsListModel {\r
@@ -21,6 +25,7 @@ public class TargetsListModel {
        private MaestroConfig config = null;\r
        private ListModelList<MaestroTarget> targets;\r
        private boolean executeEnabled;\r
+       private IJobEngine jobEngine = null;\r
        Set<RemoteFile> sourceData;\r
        Set<IMetadata> metaData;\r
 \r
@@ -54,11 +59,27 @@ public class TargetsListModel {
 \r
        @Command\r
        public void createJob() {\r
-               Set<MaestroTarget> selection = targets.getSelection();\r
-\r
-               // Map<String, Object> args = new HashMap<>();\r
-               // args.put("targets", selection);\r
-               BindUtils.postGlobalCommand(null, null, "submitJob", null);\r
+               /*\r
+                * Set<MaestroTarget> selection = targets.getSelection();\r
+                *\r
+                * Map<String, Object> args = new HashMap<>(); args.put("targets",\r
+                * selection);\r
+                */\r
+               // ScheduledJob scheduledJob =\r
+               // jobEngine.getScheduledJob("common-copy.xml");\r
+               // Map<String, Object> parameters = scheduledJob.getJobParameters();\r
+               String fileName = sourceData.iterator().next().getName();\r
+               for (int i = 0; i < targets.size(); i++) {\r
+                       Map<String, Object> params = new HashMap<>();\r
+                       params.put("sourceProtocol", RemoteStoreProtocol.LOCAL.toString());\r
+                       params.put("sourcePath", sourceData.iterator().next());\r
+                       params.put("sourceFileName", fileName);\r
+\r
+                       params.put("targetProtocol", RemoteStoreProtocol.LOCAL.toString());\r
+                       params.put("targetPath", targets.get(i).getStoreUri().getUri());\r
+                       params.put("targetFileName", fileName);\r
+                       BindUtils.postGlobalCommand(null, null, "submitJob", params);\r
+               }\r
        }\r
 \r
        public ListModelList<MaestroTarget> getTargets() {\r