git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Tue, 13 Feb 2018 22:01:40 +0000 (22:01 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Tue, 13 Feb 2018 22:01:40 +0000 (22:01 +0000)
23 files changed:
client/Maestro/Configuration/configuration-grafika1.json [deleted file]
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.Target.cs
client/Maestro/Properties/AssemblyInfo.cs
server/-product/mediacube.product
server/-product/pom.xml
server/user.jobengine.executors/jobtemplates/import-statistics.xml [new file with mode: 0644]
server/user.jobengine.executors/src/obsolate/TranscodeStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/CopyForArchiveNEXIORecordingsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/FakeNoParamsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java
server/user.jobengine.osgi.server/pages/joblist.zul
server/user.jobengine.osgi.server/pages/jobselector.zul
server/user.jobengine.osgi.server/pages/missingmaterials.zul
server/user.jobengine.osgi.server/src/user/jobengine/server/IJobEngine.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobEngine.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobElement.java [deleted file]
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobSelectorModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MissingMaterialsModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/util/DesktopCleanupListener.java

diff --git a/client/Maestro/Configuration/configuration-grafika1.json b/client/Maestro/Configuration/configuration-grafika1.json
deleted file mode 100644 (file)
index 3e23f55..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-{\r
-  "title": "Grafikai feltöltő",\r
-  "active": true,\r
-  "startInTray": false,\r
-  "enableCustomMetadataId": true,\r
-  "player": {\r
-    "enabled": true,\r
-    "autoStart": false,\r
-    "segmentEditor": false\r
-  },\r
-  "source": {\r
-    "$type": "UNCSource",\r
-    "filter": "png,tga,mov,mxf",\r
-    "local": {\r
-      "address": "file://C:/x/",\r
-      "userName": "mediacube",\r
-      "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-      "timeout": 1000\r
-    }\r
-  },\r
-  "metadatas": [\r
-    {\r
-      "$type": "OctopusMetadata",\r
-      "server": {\r
-        "address": "http://10.10.1.27/services/rest/octopus/",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "$type": "TrafficMetadata",\r
-      "server": {\r
-        "address": "Data Source=10.10.1.45\\sql16;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
-        "userName": "MAM",\r
-        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "$type": "MediaCubeMetadata",\r
-      "metadataTitleFormat": "%SOURCENAME%",\r
-      "metadataIDFormat": "%SOURCESTARTID%",\r
-      "server": {\r
-        "address": "http://10.10.1.27/services/rest/jobengine/",\r
-        "timeout": 1000\r
-      }\r
-    }\r
-  ],\r
-  "targets": [\r
-    {\r
-      "label": "Octopus mappába küldés",\r
-      "processor": "FTPTargetProcessor",\r
-      "outputFormat": "%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%/GRAFIKA-%TIMESTAMP%",\r
-      "killDateDays": 15,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/OCTOPUS",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    },\r
-    {\r
-      "label": "Traffic mappába küldés",\r
-      "processor": "FTPTargetProcessor",\r
-      "outputFormat": "%SOURCENAME%",\r
-      "tag": "Betöltés",\r
-      "subFolderFormat": "%IDROOT%-%TEXT%/GRAFIKA-%TIMESTAMP%",\r
-      "killDateDays": 30,\r
-      "saveArchiveMetadata": false,\r
-      "remote": {\r
-        "address": "ftp://10.10.1.100/PLAYOUT_NLE",\r
-        "userName": "mediacube",\r
-        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
-        "timeout": 1000\r
-      }\r
-    }\r
-  ]\r
-}\r
index ad7b512469fb5059cd8b11e280af5fdbc1e6ce74..76ed944fbbd2087872520f050e5146d9c2665bdc 100644 (file)
     <None Include="Configuration\-configuration-transcoder.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\configuration-grafika1.json">\r
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
-    </None>\r
     <None Include="Configuration\configuration-grafika.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
index 1174a290346682370409cab146cd7103e59d3780..39a40434eb4d5df0c4ba5b49fb27aae07246c7d2 100644 (file)
@@ -149,6 +149,7 @@ namespace Maestro {
             force |= target.SaveArchiveMetadata || target.SaveMorpheusMetadata || target.NexioServer;\r
             if (force && (ArchiveMetadata == null || !ArchiveMetadata.IsFilled)) {\r
                 ArchiveMetadata = GetArchiveMetadata();\r
+                SelectedMetadata.MetadataText = ArchiveMetadata.itemTitle;\r
                 UpdateEditArchiveMetadataStatus();\r
                 if (ArchiveMetadata == null) {\r
                     MessageBox.Show(String.Format("A {0} folyamat nem futtatható kísérő adatok nélkül.", target.Label));\r
index 8180e131e47ec1a720efe77c20158c457669372f..73085c6a9c77f5c8c240b0b34294c04df886971e 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.7.4")]\r
-[assembly: AssemblyFileVersion("2.0.7.4")]\r
+[assembly: AssemblyVersion("2.0.7.5")]\r
+[assembly: AssemblyFileVersion("2.0.7.5")]\r
index 74e9543b69a7b56d9b13aed0f9d2509bf7ca7f80..a039e209e4cbc7db059eef96ac82c2c1984ef41c 100644 (file)
@@ -9,25 +9,25 @@
    <launcherArgs>\r
       <programArgs>-consoleLog -console 5555\r
       </programArgs>\r
-      <vmArgs>-Xms512m\r
--Xmx1024m\r
--Dfile.encoding=UTF-8\r
--agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888\r
--Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory\r
-\r
-#System\r
--Djetty.home=/opt/mediacube/configuration/jetty\r
--Dlog4j.configurationFile=/opt/mediacube/configuration/log4j2.xml\r
--Djobengine.jobsteps.root=/opt/mediacube/configuration/executors\r
--Djobengine.jobtemplates.root=/opt/mediacube/configuration/jobtemplates\r
--Djobengine.jobscheduling.config=/opt/mediacube/configuration/scheduledjobs.json\r
--Dmediacube.auth.location=/opt/mediacube/configuration/mediacube-auth.properties\r
-\r
--Dorg.eclipse.epp.logging.aeri.skipReports=true \r
--Declipse.ignoreApp=true \r
--Dosgi.noShutdown=true\r
--Djobengine.loglevel=INFO\r
--Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,etc/user-jetty-http.xml,etc/user-jetty-https.xml\r
+      <vmArgs>-Xms512m
+-Xmx1024m
+-Dfile.encoding=UTF-8
+-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8888
+-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory
+
+#System
+-Djetty.home=/opt/mediacube/configuration/jetty
+-Dlog4j.configurationFile=/opt/mediacube/configuration/log4j2.xml
+-Djobengine.jobsteps.root=/opt/mediacube/configuration/executors
+-Djobengine.jobtemplates.root=/opt/mediacube/configuration/jobtemplates
+-Djobengine.jobscheduling.config=/opt/mediacube/configuration/scheduledjobs.json
+-Dmediacube.auth.location=/opt/mediacube/configuration/mediacube-auth.properties
+
+-Dorg.eclipse.epp.logging.aeri.skipReports=true 
+-Declipse.ignoreApp=true 
+-Dosgi.noShutdown=true
+-Djobengine.loglevel=INFO
+-Djetty.etc.config.urls=etc/user-jetty.xml,etc/user-jetty-ssl.xml,etc/user-jetty-ssl-context.xml,etc/user-jetty-http.xml,etc/user-jetty-https.xml
 -Djava.io.tmpdir=/opt/mediacube/tmp\r
       </vmArgs>\r
       <vmArgsLin>#Database
       <plugin id="org.objectweb.asm"/>\r
       <plugin id="org.objectweb.asm.commons"/>\r
       <plugin id="org.objectweb.asm.tree"/>\r
-      <plugin id="org.reflections"/>\r
       <plugin id="slf4j.api"/>\r
       <plugin id="slf4j.simple" fragment="true"/>\r
       <plugin id="user.commons.log4j2" fragment="true"/>\r
index 66a07dde12614afc493eb35d52a7ff7e4e261489..35d233073ebc2b2b017a6c61aa5d6adc4a402553 100644 (file)
                                                                                <include>log4j2.xml</include>\r
                                                                        </includes>\r
                                                                </resource>\r
+                                                               <resource>\r
+                                                                       <directory>${basedir}/../-configuration</directory>\r
+                                                                       <includes>\r
+                                                                               <include>mediacube-auth.properties</include>\r
+                                                                       </includes>\r
+                                                               </resource>\r
                                                        </resources>\r
                                                </configuration>\r
                                        </execution>\r
                                                                        <includes>\r
                                                                                <include>start-mediacube.sh</include>\r
                                                                                <include>stop-mediacube.sh</include>\r
-                                                                               <include>mediacube-auth.properties</include>\r
                                                                        </includes>\r
                                                                </resource>\r
                                                        </resources>\r
diff --git a/server/user.jobengine.executors/jobtemplates/import-statistics.xml b/server/user.jobengine.executors/jobtemplates/import-statistics.xml
new file mode 100644 (file)
index 0000000..f195723
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="MORPHEUS 'missing materials' importálása">\r
+       <commands>\r
+               <calljobstep type="user.jobengine.server.steps.ImportStatisticsStep" weight="1">\r
+               </calljobstep>\r
+       </commands>\r
+</jobtemplate>
\ No newline at end of file
index 059d6d4483aec5627a053bea884b987ee1e22a3f..7dc016027be5e7dcad8fbeddbd76380f40d666c9 100644 (file)
@@ -29,24 +29,24 @@ import user.jobengine.server.steps.StepEntry;
 \r
 public class TranscodeStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
+       private static final String RCC_HOST = "jobengine.rcc.host";\r
+       private static final String RCC_LOWRES_PROFILE = "jobengine.rcc.defaultlowresprofile";\r
 \r
        @StepEntry\r
-       public Object[] execute(RemoteFile file, String transcoderProfile, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
-                       throws Exception {\r
+       public Object[] execute(RemoteFile file, String transcoderProfile, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
                if (file == null)\r
                        throw new JobEngineException("RemoteFile is null");\r
 \r
-               String transcoderHost = System.getProperty(IJobEngine.RCC_HOST);\r
+               String transcoderHost = System.getProperty(RCC_HOST);\r
                RCCClient client = new RCCClient(transcoderHost);\r
                String guid = client.getProfileId(transcoderProfile);\r
                if (guid == null) {\r
                        logger.info("Transcoder profile not exists: " + transcoderProfile + ", using default");\r
-                       String profile = System.getProperty(IJobEngine.RCC_LOWRES_PROFILE);\r
+                       String profile = System.getProperty(RCC_LOWRES_PROFILE);\r
                        logger.info("Profile : " + profile);\r
                        profile = StringUtils.strip(profile, "\"");\r
                        if (profile == null)\r
-                               throw new JobEngineException(\r
-                                               "System default lowres profile is not configured (missing argument jobengine.rcc.defaultlowresprofile)");\r
+                               throw new JobEngineException("System default lowres profile is not configured (missing argument jobengine.rcc.defaultlowresprofile)");\r
                        guid = client.getProfileId(profile);\r
                        if (guid == null)\r
                                throw new JobEngineException("Default profile not exists on remote host: " + "\"" + profile + "\"");\r
@@ -111,8 +111,7 @@ public class TranscodeStep extends JobStep {
                                                        lores.setRelativePath(name);\r
                                                mediaFiles.add(lores);\r
                                        } else {\r
-                                               String message = String.format("Job status is %s. Error details: %s", job.getStatus(),\r
-                                                               job.getErrorMessage());\r
+                                               String message = String.format("Job status is %s. Error details: %s", job.getStatus(), job.getErrorMessage());\r
                                                throw new JobEngineException(message);\r
                                        }\r
                                        break;\r
index 1e58316f3b5fc524cf23e5c549b76bb7a070676b..d922094573f739c4ffb309501cca3d55934dc43a 100644 (file)
@@ -5,6 +5,7 @@ import java.net.InetAddress;
 import java.net.URI;\r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
+import java.util.ArrayList;\r
 import java.util.Calendar;\r
 import java.util.Date;\r
 import java.util.List;\r
@@ -98,9 +99,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
 \r
        private void copyFile(FileArchive fileArchive, RundownArchive rundownArchive, StoryArchive storyArchive) throws Exception {\r
                String origFileName = fileArchive.getFileName();\r
-               String videoFileName = origFileName + MXFEXT;\r
-\r
-               transferFile(videoFileName, videoFileName);\r
+               String videoFileName = transferFile(origFileName);\r
                BasicDBObject metadata = createMetadata(rundownArchive, storyArchive, fileArchive);\r
                transferMetadata(videoFileName, metadata);\r
                createSourceKillDateFile(rundownArchive, origFileName);\r
@@ -179,6 +178,20 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                return CalendarUtils.createCalendar(CalendarUtils.createCalendar(recordDate), timePart).getTime();\r
        }\r
 \r
+       private String getTargetFileName(String sourceFileName, String[] names) {\r
+               List<String> remoteNames = new ArrayList<>();\r
+               for (String name : names) {\r
+                       if (name != null)\r
+                               remoteNames.add(name.toLowerCase());\r
+               }\r
+               String result = sourceFileName + MXFEXT;\r
+               int version = 1;\r
+               while (remoteNames.contains(result.toLowerCase())) {\r
+                       result = String.format("%s-%d%s", sourceFileName, version, MXFEXT);\r
+               }\r
+               return result;\r
+       }\r
+\r
        private RundownArchive processClip(BasicDBObject clip) {\r
                RundownArchive result = null;\r
                String clipName = NoSQLUtils.asString(clip, LONGNAMEID);\r
@@ -333,15 +346,19 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
 \r
        }\r
 \r
-       private void transferFile(String sourceFileName, String targetFileName) throws Exception {\r
+       private String transferFile(String sourceFileName) throws Exception {\r
+               String result = null;\r
                int reply = 0;\r
                logger.info("Transfer clip {}", sourceFileName);\r
                try {\r
                        sourceFtp = ((FtpDirectoryLister) sourceUri.getLister()).connect();\r
                        targetFtp = ((FtpDirectoryLister) targetUri.getLister()).connect();\r
+\r
                        if (!targetFtp.enterRemotePassiveMode())\r
                                throw new Exception("!PASV");\r
 \r
+                       result = getTargetFileName(sourceFileName, targetFtp.listNames());\r
+\r
                        reply = sourceFtp.port(InetAddress.getByName(targetFtp.getPassiveHost()), targetFtp.getPassivePort());\r
                        if (!FTPReply.isPositiveCompletion(reply))\r
                                throw new Exception("PORT parancs válasza: " + sourceFtp.getReplyString());\r
@@ -356,7 +373,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                        if (!targetFtp.setFileType(FTP.BINARY_FILE_TYPE))\r
                                throw new Exception("!TARGET TYPE");\r
 \r
-                       reply = targetFtp.stor(targetFileName);\r
+                       reply = targetFtp.stor(result);\r
                        if (!FTPReply.isPositivePreliminary(reply))\r
                                throw new Exception("STOR parancs válasza: " + sourceFtp.getReplyString());\r
 \r
@@ -379,6 +396,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                        targetUri.cleanUp();\r
                }\r
 \r
+               return result;\r
        }\r
 \r
        private void transferMetadata(String fileName, BasicDBObject metadata) throws Exception {\r
index 20f6f980bde1b07879f344deffd3564ed272ca90..61bb5b5bc35950305bb06f0797bbe6c39a146d41 100644 (file)
@@ -5,7 +5,6 @@ import java.util.concurrent.CountDownLatch;
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
-import user.commons.JobStatus;\r
 import user.commons.ListUtils;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
@@ -19,8 +18,17 @@ public class FakeNoParamsStep extends JobStep {
        CountDownLatch latch = new CountDownLatch(count);\r
 \r
        private void childStatusChanged(JobStatusChangedEvent event) {\r
-               if (JobStatus.SUSPENDED.equals(event.getStatus()) || JobStatus.FINISHED.equals(event.getStatus()))\r
+               switch (event.getStatus()) {\r
+               case CANCELED:\r
+               case FINISHED:\r
+               case RUNABLE:\r
+               case SUSPENDED:\r
                        latch.countDown();\r
+                       break;\r
+               default:\r
+                       break;\r
+               }\r
+               //              if (JobStatus.SUSPENDED.equals(event.getStatus()) || JobStatus.FINISHED.equals(event.getStatus()))\r
        }\r
 \r
        @StepEntry\r
@@ -38,6 +46,8 @@ public class FakeNoParamsStep extends JobStep {
                //                      if (i == 8)\r
                //                              throw new Exception("stop");\r
                //              }\r
+\r
+               //Thread.sleep(100000);\r
                for (int i = 0; i < count; i++) {\r
                        jobEngine.submit(jobRuntime, e -> childStatusChanged(e), CHILD_TEMPLATE, CHILD_TITLE, ListUtils.asMap("itemID", i));\r
                }\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java
new file mode 100644 (file)
index 0000000..c4f01eb
--- /dev/null
@@ -0,0 +1,18 @@
+package user.jobengine.server.steps;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class ImportStatisticsStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+\r
+       @StepEntry\r
+       public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+\r
+               return null;\r
+       }\r
+\r
+}\r
index cf3acd5d8f5f2faea37653ba189e36dd59e5b3e3..9490aa7c7b98ab184b664bbf67aaafb8c8932176 100644 (file)
@@ -45,7 +45,7 @@ public class OctopusDataMiner {
        private static final String LINEFEED = "\r\n";\r
        private static final String SIMPLE_LINEFEED = "\n";\r
        private static final String SAVING_STORY_ID = "Saving story {}";\r
-       private static final String FIELDS_STORIES = "id,name,modified,type,format,mosObjects,script,customColumns,CustomColumn.label,CustomColumn.value,reporters,User.longName,User.userName";\r
+       private static final String FIELDS_STORIES = "id,name,modified,type,format,mosObjects,script,scheduleFrom,scheduleTo,customColumns,CustomColumn.label,CustomColumn.value,reporters,User.longName,User.userName";\r
        private static final String FIELDS_RUNDOWN = "id,name,modified,scheduledStart,channel,Channel.name,rundownType,RundownType.name";\r
        private static final String FIELDS_RUNDOWN_STORYIDS = "id,slugs,Slug.storyId,Slug.position";\r
        private static final String FIELDS_STORYFOLDER = "id,name,modified";\r
index 6786db7326169541a35faa7d10b79f1fdecf115b..e507b0a906fad74e0f407859c88b0d3ce05dd938 100644 (file)
@@ -2,26 +2,20 @@
 <?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>\r
 <?init class="user.jobengine.zk.util.AdminAuthInitiator"?>\r
 <zk xmlns:w="http://www.zkoss.org/2005/zk/client" xmlns:ca="client/attribute">\r
-<style>\r
-.z-progressmeter {\r
-    height: 16px;\r
-    border: 1px solid #cfcfcf;\r
-    background: #fff 0 0 repeat-x;\r
-    text-align: left;\r
-    overflow: hidden;\r
-//    background-image: url(/zkau/web/1bf94a1d/zul/img/misc/prgmeter-anim.gif);\r
-}\r
-</style>\r
+       <style>\r
+               .z-progressmeter { height: 16px; border: 1px solid #cfcfcf; background: #fff 0 0 repeat-x; text-align: left; overflow: hidden; // background-image:\r
+               url(/zkau/web/1bf94a1d/zul/img/misc/prgmeter-anim.gif); }\r
+       </style>\r
        <!-- csak igy jo a list sebessege -->\r
        <custom-attributes org.zkoss.zul.listbox.rod="true" />\r
        <custom-attributes org.zkoss.zul.listbox.initRodSize="50" />\r
        <custom-attributes org.zkoss.zul.listbox.preloadSize="50" />\r
-       \r
-       <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('jlm') @init('user.jobengine.zk.model.JobListModel')" >\r
-               <timer id="timer" delay="100" repeats="true" onTimer="@command('uiTick')" />\r
+\r
+       <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('jlm') @init('user.jobengine.zk.model.JobListModel')">\r
+               <timer id="timer" delay="500" repeats="true" onTimer="@command('uiTick')" />\r
 \r
                <space bar="false" />\r
-               \r
+\r
                <div align="left" width="100%">\r
                        <space bar="false" />\r
                        <spinner constraint="no empty,min 1 max 10" value="@bind(jlm.newPriority)" width="60px" disabled="@load(jlm.updatePriorityDisabled)" />\r
                <div height="100%" width="100%" style="background: #e3e3e3" align="left">\r
                        <groupbox height="94%" closable="false">\r
                                <caption sclass="boldfont" label="Aktív folyamatok" />\r
-                               <listbox id="lbJobList" sizedByContent="false" model="@load(jlm.jobList)" multiple="true" pagingPosition="top" mold="paging" autopaging="true" vflex="true" checkmark="true" \r
-                                       onSelect="@command('selectJob')" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" \r
-                                       emptyMessage="Nincs futó folyamat.">\r
-                                      <listhead sizable="true">\r
-                                       <listheader label="Id" hflex="min" align="left" sort="auto"/>\r
-                                       <listheader label="Indítás" hflex="min" align="left" sort="auto"/>\r
-                                       <listheader label="Kész" hflex="min" align="left" sort="auto"/>\r
-                                       <listheader label="Név" hflex="min" align="left" sort="auto"/>\r
-                                       <listheader label="Prioritás" hflex="min" align="left" sort="auto"/>\r
-                                       <listheader label="Állapot" hflex="min" align="left" sort="auto"/>\r
-                                       <listheader label="Készültség" width="100px" align="left" sort="auto"/>\r
-                                       <listheader label="Üzenet" align="max" sort="auto"/>\r
-                                      </listhead>\r
-                                      \r
-                                      <template name="model">\r
-                                          <listitem>\r
-                                                       <listcell label="@load(each.id)"/>\r
-                                                       <listcell label="@load(each.submitted)"/>\r
-                                                       <listcell label="@load(each.finished)"/>\r
-                                                       <listcell label="@load(each.name)"/>\r
-                                                       <listcell label="@load(each.priority)"/>\r
-                                                       <listcell label="@load(each.status)"/>\r
-                                                       <listcell>\r
-                                                               <progressmeter ca:data-animationspeed="-1" value="@load(each.progress)" width="100%" />\r
-                                                       </listcell>\r
-                                                       <listcell label="@load(each.description)"/>\r
-                                          </listitem>\r
-                                      </template>\r
-                               </listbox>\r
+<!--                           <borderlayout> -->\r
+<!--                                   <center> -->\r
+                                               <listbox id="lbJobList" sizedByContent="false" model="@load(jlm.jobList)" multiple="true" pagingPosition="top" mold="paging"\r
+                                                       autopaging="true" vflex="true" checkmark="true" style="border: none; background: #e3e3e3 !important;"\r
+                                                       oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" emptyMessage="Nincs futó folyamat." selectedItems="@bind(jlm.selectedJobs)">\r
+                                                       <listhead>\r
+                                                               <listheader label="Id" hflex="min" align="left" sort="auto" />\r
+                                                               <listheader label="Indítás" hflex="min" align="left" sort="auto" />\r
+                                                               <listheader label="Kész" hflex="min" align="left" sort="auto" />\r
+                                                               <listheader label="Név" hflex="min" align="left" sort="auto" />\r
+                                                               <listheader label="Prioritás" hflex="min" align="left" sort="auto" />\r
+                                                               <listheader label="Állapot" hflex="min" align="left" sort="auto" />\r
+                                                               <listheader label="Készültség" width="100px" align="left" sort="auto" />\r
+                                                               <listheader label="Üzenet" hflex="max" align="left" sort="auto" />\r
+                                                               <listheader label="Paraméterek" hflex="min" align="left" sort="auto" />\r
+                                                       </listhead>\r
+\r
+                                                       <template name="model">\r
+                                                               <listitem>\r
+                                                                       <listcell label="@load(each.id)" />\r
+                                                                       <listcell label="@load(each.submitted)" />\r
+                                                                       <listcell label="@load(each.finished)" />\r
+                                                                       <listcell label="@load(each.name)" />\r
+                                                                       <listcell label="@load(each.priority)" />\r
+                                                                       <listcell label="@load(each.status)" />\r
+                                                                       <listcell>\r
+                                                                               <progressmeter ca:data-animationspeed="-1" value="@load(each.progress)" width="100%" />\r
+                                                                       </listcell>\r
+                                                                       <listcell label="@load(each.description)" />\r
+                                                                       <listcell label="@load(each.parameters)" />\r
+                                                               </listitem>\r
+                                                       </template>\r
+                                               </listbox>\r
+                                       \r
+<!--                                   </center> -->\r
+<!--                                   <east title="Részletek" size="25%" flex="true" splittable="true" collapsible="true"> -->\r
+<!--                                           <grid sizedByContent="false" span="true" model="@load(jlm.selectedJobs)" -->\r
+<!--                                                   vflex="true" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" -->\r
+<!--                                                   sclass="listbox-normal-style" emptyMessage="A részletek megtekintéséhez jelöljön ki egy folyamatot." > -->\r
+<!--                                                   <columns> -->\r
+<!--                                                           <column label="ID" hflex="1" align="left" /> -->\r
+<!--                                                   </columns> -->\r
+<!--                                                   <rows> -->\r
+<!--                                                           <template name="model"> -->\r
+<!--                                                                   <row> -->\r
+<!--                                                                           <label value="@load(each.parameters)" /> -->\r
+<!--                                                                   </row> -->\r
+<!--                                                           </template> -->\r
+<!--                                                   </rows> -->\r
+<!--                                           </grid> -->\r
+<!--                                   </east> -->\r
+<!--                           </borderlayout> -->\r
+\r
                        </groupbox>\r
                </div>\r
-               \r
+\r
        </div>\r
-       \r
+\r
 </zk>
\ No newline at end of file
index 07687e2d36aa42e0f06286e150c6caf87b17446f..65874ab36dae9e8445bb7d888037ca7ce13e0eaa 100644 (file)
@@ -1,18 +1,49 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<window id="resultWin" title="Folyamat futtatása" width="500px" border="normal" apply="org.zkoss.bind.BindComposer" viewModel="@id('jlm') @init('user.jobengine.zk.model.JobSelectorModel')">\r
-       <listbox model="@load(jlm.jobElements)" selectedItem="@bind(jlm.selectedJobElement)">\r
-       <listhead>\r
-               <listheader label="Név" width="100%" align="left"/>\r
-       </listhead>\r
-       \r
-       <template name="model">\r
-           <listitem>\r
-                       <listcell label="@load(each.name)"/>\r
-           </listitem>\r
-       </template>\r
-       </listbox>\r
-    <hbox width="100%" pack="center" align="center">\r
-        <button id="closeButton" label="Mégsem" onClick="@command('close')" />\r
-        <button id="executeButton" label="Futtatás" onClick="@command('execute')" />\r
-    </hbox>\r
+<window id="resultWin" title="Folyamat futtatása" width="700px" border="normal" apply="org.zkoss.bind.BindComposer"\r
+       viewModel="@id('jlm') @init('user.jobengine.zk.model.JobSelectorModel')" forward="onCancel=closeButton.onClick">\r
+       <borderlayout height="450px">\r
+               <center border="none" flex="true">\r
+                       <listbox model="@load(jlm.jobs)" selectedItem="@bind(jlm.selectedJob)" selectedItems="@bind(jlm.selectedJobs)">\r
+                               <listhead>\r
+                                       <listheader hflex="1" label="Név" align="left" />\r
+                               </listhead>\r
+\r
+                               <template name="model">\r
+                                       <listitem onDoubleClick="@command('execute')">\r
+                                               <listcell label="@load(each.name)" />\r
+                                       </listitem>\r
+                               </template>\r
+                       </listbox>\r
+               </center>\r
+               <east size="25%" flex="true" splittable="true">\r
+<!--                   <grid sizedByContent="false" span="true" model="@bind(jlm.selectedJob)" vflex="true" style="border: none; background: #e3e3e3 !important;" -->\r
+<!--                           oddRowSclass="listbox-odd-style" sclass="listbox-normal-style" emptyMessage="A részletek megtekintéséhez jelöljön ki egy folyamatot."> -->\r
+                       <grid sizedByContent="false" span="true" model="@bind(jlm.selectedJob)">\r
+                               <columns>\r
+                                       <column label="Sablon" hflex="1" align="left" />\r
+                               </columns>\r
+                               <rows>\r
+                                       <row>\r
+                                               <label value="xxx" />\r
+                                       </row>\r
+                               </rows>\r
+                       </grid>\r
+                       <!--                    <listbox model="@load(jlm.selectedJob)"> -->\r
+                       <!--                            <listhead> -->\r
+                       <!--                                    <listheader hflex="1" label="Sablon" align="left" /> -->\r
+                       <!--                            </listhead> -->\r
+\r
+                       <!--                            <template name="model"> -->\r
+                       <!--                                    <listitem> -->\r
+                       <!--                                            <listcell label="@load(each.name)" /> -->\r
+                       <!--                                    </listitem> -->\r
+                       <!--                            </template> -->\r
+                       <!--                    </listbox> -->\r
+               </east>\r
+       </borderlayout>\r
+           \r
+       <hbox width="100%" pack="center" align="center">\r
+               <button id="closeButton" label="Mégsem" onClick="@command('close')" />\r
+               <button id="executeButton" label="Futtatás" onClick="@command('execute')" />\r
+       </hbox>\r
 </window>\r
index d31fdd25ebb8e77df837bda82610a6956acede79..d8c90252ab4f54aacf5cbd8acad9d5e91f66be03 100644 (file)
@@ -21,7 +21,7 @@
                        <groupbox height="94%" closable="false">\r
                                <caption sclass="boldfont" label="Hiányzó adásanyagok" />\r
                                <listbox id="lbJobList" sizedByContent="false" model="@load(jlm.jobList)" multiple="true" pagingPosition="top" mold="paging" autopaging="true"\r
-                                       vflex="true" checkmark="true" onSelect="@command('selectJob')" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style"\r
+                                       vflex="true" checkmark="true" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style"\r
                                        sclass="listbox-normal-style" emptyMessage="Nincs hiányzó anyag." selectedItems="@bind(jlm.selectedJobs)">\r
                                        <listhead sizable="true">\r
                                                <listheader label="Adásbakerülés" hflex="min" align="left" sort="auto" />\r
index cfc5de21ba2649702e9110802f60ca0d870eb179..7de9089bb0742e5e21b5e0a84cfb9f2be793e61c 100644 (file)
@@ -9,8 +9,7 @@ import user.jobengine.server.messages.IJobMessage;
 import user.jobengine.server.scheduler.SchedulerService;
 
 public interface IJobEngine {
-       public static String RCC_HOST = "jobengine.rcc.host";
-       public static String RCC_LOWRES_PROFILE = "jobengine.rcc.defaultlowresprofile";
+       public static final int QUEUE_POLL_INTERVALL = 10;
 
        void addJobChangedEventListener(IJobChangedListener listener);
 
index 481f07203fb05f7b0d4193dc37e2d42f36ef88c9..c95634f363eb37bf995634051acd6e9cedd05958 100644 (file)
@@ -65,12 +65,19 @@ public class JobEngine implements IJobEngine {
 
                        while (!shutdown) {
                                try {
-                                       while (!messageQueue.isEmpty()) {
-                                               IJobMessage message = messageQueue.poll(50, TimeUnit.MILLISECONDS);
-                                               if (message != null) {
-                                                       //logger.debug("Processing {}", message.getClass());
-                                                       message.process(JobEngine.this);
-                                               }
+                                       IJobMessage message = messageQueue.poll(50, TimeUnit.MILLISECONDS);
+                                       if (message != null) {
+                                               message.process(JobEngine.this);
+                                       }
+                               } catch (InterruptedException e) {
+                                       shutdown = true;
+                               }
+                       }
+                       while (!messageQueue.isEmpty()) {
+                               try {
+                                       IJobMessage message = messageQueue.poll(50, TimeUnit.MILLISECONDS);
+                                       if (message != null) {
+                                               message.process(JobEngine.this);
                                        }
                                } catch (InterruptedException e) {
                                        shutdown = true;
@@ -100,14 +107,12 @@ public class JobEngine implements IJobEngine {
 
                        while (!shutdown) {
                                try {
-                                       IJobRuntime jobRuntime = runQueue.poll(50, TimeUnit.MILLISECONDS);
+                                       IJobRuntime jobRuntime = runQueue.poll(IJobEngine.QUEUE_POLL_INTERVALL, TimeUnit.MILLISECONDS);
                                        if (jobRuntime != null) {
-                                               //logger.info("Begin processing job {}, RC count {}", jobRuntime.getId(), runQueue.size());
                                                while (jobRuntime.hasNextInstruction() && jobRuntime.isRunable()) {
                                                        ir = jobRuntime.getNextInstruction();
                                                        ir.execute(JobEngine.this, jobRuntime);
                                                }
-                                               //logger.info("End processing job {}", jobRuntime.getId());
                                                if (!jobRuntime.hasNextInstruction() && jobRuntime.isRunable())
                                                        jobCleanup(jobRuntime);
                                        }
index 930f5def6be17eda9dad631b9d0859a2dea873c0..82b8fc22bd50479f19c7d6cde7fd6017c6b37b28 100644 (file)
@@ -30,7 +30,7 @@ public class JobStepExecutor implements IJobStepExecutor {
                        IJobStep step = null;
                        while (true) {
                                try {
-                                       jobRuntime = queue.poll(50, TimeUnit.MILLISECONDS);
+                                       jobRuntime = queue.poll(IJobEngine.QUEUE_POLL_INTERVALL, TimeUnit.MILLISECONDS);
                                        if (jobRuntime == null && shutdown) {
                                                logger.trace("Shutting down");
                                                break;
@@ -57,7 +57,6 @@ public class JobStepExecutor implements IJobStepExecutor {
 
                                        outputs = step.run(jobEngine, jobRuntime, inputs);
                                        jobEngine.sendMessage(new JobStepCompletedMessage(jobRuntime.getId(), outputs));
-
                                } catch (Exception e) {
                                        logger.error("Error in {}", jobRuntime);
                                        Throwable t = e.getCause() == null ? e : e.getCause();
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobElement.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobElement.java
deleted file mode 100644 (file)
index ecfc137..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-package user.jobengine.zk.model;\r
-\r
-import com.ibm.nosql.json.api.BasicDBObject;\r
-\r
-public class JobElement {\r
-       private String name;\r
-       private BasicDBObject dbObject;\r
-\r
-       public JobElement() {\r
-       }\r
-\r
-       public JobElement(BasicDBObject dbObject) {\r
-               this.dbObject = dbObject;\r
-               this.name = dbObject.getString("name");\r
-       }\r
-\r
-       public String getName() {\r
-               return name;\r
-       }\r
-\r
-       public void setName(String name) {\r
-               this.name = name;\r
-       }\r
-\r
-       public BasicDBObject getDbObject() {\r
-               return dbObject;\r
-       }\r
-}
\ No newline at end of file
index fd5c91998760f2b609fe4084e614ce55aed6a145..233aa6c2cac4fe63bf5c09f9c54bfcfefdf1dfed 100644 (file)
@@ -1,5 +1,6 @@
 package user.jobengine.zk.model;\r
 \r
+import java.util.Collection;\r
 import java.util.HashMap;\r
 import java.util.Map;\r
 \r
@@ -13,6 +14,8 @@ import org.zkoss.zul.ListModelList;
 import org.zkoss.zul.Messagebox;\r
 import org.zkoss.zul.Window;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.jobengine.db.ItemManagerData.SignalType;\r
 import user.jobengine.server.IJobChangedListener;\r
 import user.jobengine.server.IJobEngine;\r
@@ -24,11 +27,11 @@ import user.jobengine.zk.util.SessionUtil;
 public class JobListModel extends AsyncBaseModel implements IJobChangedListener {\r
        private static final Logger logger = LogManager.getLogger();\r
        private ListModelList<IJobRuntime> jobList = new ListModelList<IJobRuntime>();\r
-       private IJobRuntime selectedJob = null;\r
        private IJobEngine jobEngine = null;\r
        private int newPriority = 1;\r
        private boolean shutdownDisabled;\r
        private boolean startupDisabled;\r
+       private Collection<BasicDBObject> selectedJobs;\r
 \r
        @Command\r
        public void changeJobsPriority() {\r
@@ -66,8 +69,8 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
                return newPriority;\r
        }\r
 \r
-       public IJobRuntime getSelectedJob() {\r
-               return this.selectedJob;\r
+       public Collection<BasicDBObject> getSelectedJobs() {\r
+               return selectedJobs;\r
        }\r
 \r
        @Init\r
@@ -94,7 +97,7 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
 \r
        private void initializeList() {\r
                jobList.clear();\r
-               Map<Long, IJobRuntime> jobMap = this.jobEngine.getJobs();\r
+               Map<Long, IJobRuntime> jobMap = jobEngine.getJobs();\r
                jobList.addAll(jobMap.values());\r
                //Collections.sort(jobList, (o1, o2) -> compare(o1, o2));\r
        }\r
@@ -140,35 +143,41 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
        }\r
 \r
        private void onJobDeleted(IJobRuntime job) {\r
+               //              selectedJobs.remove(job);\r
+               //              NotifyChange("selectedJobs");\r
                jobList.remove(job);\r
                NotifyChange("jobList");\r
        }\r
 \r
        private void onJobUpdated(IJobRuntime job) {\r
+               //List<IJobRuntime> savedSelectedJobs = new ArrayList<>(selectedJobs);\r
                jobList.notifyChange(job);\r
        }\r
 \r
        private void onShutdown() {\r
-               jobEngine.shutdown();\r
-               setStartupDisabled(false);\r
-       }\r
-\r
-       @Command\r
-       public void restart() {\r
-               startupDisabled = true;\r
-               try {\r
-                       jobEngine.startup();\r
-               } catch (Exception e) {\r
-               }\r
-               shutdownDisabled = false;\r
-               initializeList();\r
-       }\r
+               setShutdownDisabled(true);\r
 \r
-       @Command\r
-       @NotifyChange({ "updatePriorityDisabled" })\r
-       public void selectJob() {\r
-               //only for notification\r
-       }\r
+               Runnable r = new Runnable() {\r
+                       @Override\r
+                       public void run() {\r
+                               jobEngine.shutdown();\r
+                               registerTask(() -> setStartupDisabled(false));\r
+                       }\r
+               };\r
+               Thread t = new Thread(r);\r
+               t.start();\r
+       }\r
+\r
+       //      @Command\r
+       //      public void restart() {\r
+       //              startupDisabled = true;\r
+       //              try {\r
+       //                      jobEngine.startup();\r
+       //              } catch (Exception e) {\r
+       //              }\r
+       //              shutdownDisabled = false;\r
+       //              initializeList();\r
+       //      }\r
 \r
        public void setJobList(ListModelList<IJobRuntime> jobList) {\r
                this.jobList = jobList;\r
@@ -178,8 +187,9 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
                this.newPriority = newPriority;\r
        }\r
 \r
-       public void setSelectedJob(IJobRuntime _selectedJob) {\r
-               this.selectedJob = _selectedJob;\r
+       @NotifyChange({ "updatePriorityDisabled" })\r
+       public void setSelectedJobs(Collection<BasicDBObject> selectedJobs) {\r
+               this.selectedJobs = selectedJobs;\r
        }\r
 \r
        public void setShutdownDisabled(boolean shutdownDisabled) {\r
index ce44cd1313b6585b36cbad47cfbd27f5984ab562..3691f59df2e3d244440d99db805423d8cc1917ac 100644 (file)
@@ -1,5 +1,7 @@
 package user.jobengine.zk.model;\r
 \r
+import java.util.Set;\r
+\r
 import org.zkoss.bind.annotation.AfterCompose;\r
 import org.zkoss.bind.annotation.Command;\r
 import org.zkoss.bind.annotation.ContextParam;\r
@@ -15,6 +17,7 @@ import org.zkoss.zul.Window;
 \r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
+import user.commons.nosql.NoSQLUtils;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.scheduler.ScheduledJob;\r
 import user.jobengine.server.scheduler.SchedulerService;\r
@@ -24,8 +27,9 @@ public class JobSelectorModel extends BaseModel {
        @Wire("#resultWin")\r
        private Window resultWin;\r
        private IJobEngine jobEngine;\r
-       private ListModelList<JobElement> jobElements = new ListModelList<>();\r
-       private JobElement selectedJobElement = null;\r
+       private ListModelList<BasicDBObject> jobs;\r
+       private BasicDBObject selectedJob;\r
+       private Set<BasicDBObject> selectedJobs;\r
 \r
        @AfterCompose\r
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
@@ -39,10 +43,10 @@ public class JobSelectorModel extends BaseModel {
 \r
        @Command\r
        public void execute() {\r
-               if (selectedJobElement == null)\r
+               if (selectedJob == null)\r
                        return;\r
                SchedulerService scheduler = jobEngine.getScheduler();\r
-               ScheduledJob scheduledJob = scheduler.createScheduledJob(selectedJobElement.getDbObject());\r
+               ScheduledJob scheduledJob = scheduler.createScheduledJob(selectedJob);\r
                scheduledJob.setJobEngine(jobEngine);\r
                try {\r
                        scheduledJob.doJob();\r
@@ -52,30 +56,34 @@ public class JobSelectorModel extends BaseModel {
                close();\r
        }\r
 \r
-       public ListModelList<JobElement> getJobElements() {\r
-               return jobElements;\r
+       public ListModelList<BasicDBObject> getJobs() {\r
+               return jobs;\r
+       }\r
+\r
+       public BasicDBObject getSelectedJob() {\r
+               return selectedJob;\r
        }\r
 \r
-       public JobElement getSelectedJobElement() {\r
-               return selectedJobElement;\r
+       public Set<BasicDBObject> getSelectedJobs() {\r
+               return selectedJobs;\r
        }\r
 \r
        @Init\r
        public void init() {\r
                this.jobEngine = (IJobEngine) Executions.getCurrent().getArg().get("jobEngine");\r
-               //jobElements.setMultiple(true);\r
-               Object[] objects = jobEngine.getScheduler().getScheduleJobs().toArray();\r
-               for (Object obj : objects) {\r
-                       if (obj instanceof BasicDBObject) {\r
-                               JobElement j = new JobElement((BasicDBObject) obj);\r
-                               jobElements.add(j);\r
-                       }\r
-               }\r
+               jobs = new ListModelList<>(NoSQLUtils.asList(jobEngine.getScheduler().getScheduleJobs()));\r
+       }\r
+\r
+       public void setJobs(ListModelList<BasicDBObject> jobs) {\r
+               this.jobs = jobs;\r
+       }\r
 \r
+       public void setSelectedJob(BasicDBObject selectedJob) {\r
+               this.selectedJob = selectedJob;\r
        }\r
 \r
-       public void setSelectedJobElement(JobElement selectedJobElement) {\r
-               this.selectedJobElement = selectedJobElement;\r
+       public void setSelectedJobs(Set<BasicDBObject> selectedJobs) {\r
+               this.selectedJobs = selectedJobs;\r
        }\r
 \r
 }
\ No newline at end of file
index bc6268e8848ed895b2a73acfdbcc8c1b5ff7c392..ab7c30ceb3d742f05d6f18a502e8394e08246de3 100644 (file)
@@ -40,7 +40,6 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
        private static final String IMPORT_TEMPLATE = "import-morpheus-missing-materials.xml";\r
        private static final String RETRIEVE_TEMPLATE = "retrieve-missing-material.xml";\r
        private ListModelList<BasicDBObject> jobList = new ListModelList<BasicDBObject>();\r
-       private BasicDBObject selectedJob = null;\r
        private Set<BasicDBObject> selectedJobs;\r
        private IJobEngine jobEngine = null;\r
        private boolean importDisabled;\r
@@ -131,10 +130,6 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                return result;\r
        }\r
 \r
-       public BasicDBObject getSelectedJob() {\r
-               return this.selectedJob;\r
-       }\r
-\r
        public Set<BasicDBObject> getSelectedJobs() {\r
                return selectedJobs;\r
        }\r
@@ -224,11 +219,6 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                }\r
        }\r
 \r
-       @Command\r
-       public void selectJob() {\r
-               //only for notification\r
-       }\r
-\r
        public void setImportDisabled(boolean importDisabled) {\r
                this.importDisabled = importDisabled;\r
                NotifyChange(IMPORT_DISABLED);\r
@@ -238,10 +228,6 @@ public class MissingMaterialsModel extends AsyncBaseModel implements IJobChanged
                this.jobList = jobList;\r
        }\r
 \r
-       public void setSelectedJob(BasicDBObject selectedJob) {\r
-               this.selectedJob = selectedJob;\r
-       }\r
-\r
        public void setSelectedJobs(Set<BasicDBObject> selectedJobs) {\r
                this.selectedJobs = selectedJobs;\r
        }\r
index 7a1fd19062422bc457d0eb7a8d117caf384fe632..780eb2f3fd0511bef439c62bf24715122c16591a 100644 (file)
@@ -10,7 +10,7 @@ public class DesktopCleanupListener implements DesktopCleanup {
 \r
        @Override\r
        public void cleanup(Desktop desktop) throws Exception {\r
-               logger.info("Invoked");\r
+               logger.trace("Invoked");\r
                SessionUtil.cleanup();\r
        }\r
 \r