git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 14 Feb 2018 16:16:50 +0000 (16:16 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 14 Feb 2018 16:16:50 +0000 (16:16 +0000)
24 files changed:
client/Maestro/MaestroForm.Target.cs
client/Maestro/Properties/AssemblyInfo.cs
server/-configuration/debug-mediacube-remote.launch
server/-configuration/log4j2.xml
server/-configuration/scheduledjobs.json
server/user.commons.log4j2/META-INF/MANIFEST.MF
server/user.commons.log4j2/src/user/commons/log4j2/appender/DB2NoSQLAppender.java [new file with mode: 0644]
server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java
server/user.jobengine.executors/jobtemplates/copyforarchive-nexio-recordings.xml
server/user.jobengine.executors/jobtemplates/import-statistics.xml
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/FakeStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/ForkStep.java [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/ImportStatisticsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/OctopusDataMiner.java
server/user.jobengine.osgi.commons/src/user/commons/ListUtils.java
server/user.jobengine.osgi.commons/src/user/commons/octopus/IOctopusAPI.java
server/user.jobengine.osgi.commons/test/user/common/octopus/test/OctopusDataMinerTest.java
server/user.jobengine.osgi.server/pages/joblist.zul
server/user.jobengine.osgi.server/pages/jobparameters.zul [new file with mode: 0644]
server/user.jobengine.osgi.server/resources/i3-label_hu.properties
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobParametersModel.java [new file with mode: 0644]

index 39a40434eb4d5df0c4ba5b49fb27aae07246c7d2..4b74b05f197cbf48c278db6143f37e5517126046 100644 (file)
@@ -149,7 +149,8 @@ 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
+                if (SelectedMetadata != null && String.IsNullOrEmpty(SelectedMetadata.MetadataText))\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 73085c6a9c77f5c8c240b0b34294c04df886971e..cf01775d3c857d2f1149574e41dcb6a40a77c662 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.5")]\r
-[assembly: AssemblyFileVersion("2.0.7.5")]\r
+[assembly: AssemblyVersion("2.0.7.6")]\r
+[assembly: AssemblyFileVersion("2.0.7.6")]\r
index 4a99bae5a323aa8999953d1ca0c1338e83296ee9..af15006c7aa0240ce96afea3943efa5b3de1fb6d 100644 (file)
@@ -10,8 +10,8 @@
 <stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.commons.log4j2&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.executors&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.commons&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.db&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.server&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkcharts.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/classes&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-codec-1.10.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-fileupload-1.2.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-io-1.4.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/commons-logging-1.1.1.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zcommon.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zel.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zhtml.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_bsh.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_commons-collections.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_elinez.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_eplotz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_Filters.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_flashchart.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_gmapsz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-annotations.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-core.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jackson-databind.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jasperreports.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_javassist.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jcommon.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jfreechart.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_jsp.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_monitor.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_psz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_sapphire.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_shchart.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_silvertail.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_timelinez.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_timeplotz.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk_zuljsp.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zk.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkbind.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkex_r.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkmax.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zkplus.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zml.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zsoup.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zul.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zuti.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;packageFragmentRoot handle=&amp;quot;=user.jobengine.osgi.server/WEB-INF\/lib\/zweb.jar&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.packageFragmentRoot&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.jobengine.osgi.services&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;user.tsm.client&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>\r
 <booleanAttribute key="org.eclipse.jdt.launching.ALLOW_TERMINATE" value="false"/>\r
 <mapAttribute key="org.eclipse.jdt.launching.CONNECT_MAP">\r
-<mapEntry key="hostname" value="10.10.1.28"/>\r
-<mapEntry key="port" value="8888"/>\r
+<mapEntry key="hostname" value="10.10.1.29"/>\r
+<mapEntry key="port" value="9999"/>\r
 </mapAttribute>\r
 <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="user.jobengine.osgi.server"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.VM_CONNECTOR_ID" value="org.eclipse.jdt.launching.socketAttachConnector"/>\r
index 498e21f019049c3fa9b0fefc45cf1859b38fe4e1..d24e9d3bfd4f55f0c2300edc909e5d3d7e4bc821 100644 (file)
                        </Filters>\r
 <!--                   <PatternLayout pattern="%d{HH:mm:ss} %-5level - %msg %n%n A küldő a %F forráskód %L. sorából a %logger{1}.%M függvény volt. %n" /> -->\r
                        <PatternLayout pattern="%d{HH:mm:ss} %level - %msg %n" />\r
-<!--                           <HTMLLayout /> -->\r
                </HTMLMailAppender>\r
+               <DB2NoSQLAppender name="MarkeredDB2">\r
+                       <Filters>\r
+                               <MarkerFilter marker="MEDIACUBE" onMatch="ACCEPT" onMismatch="DENY" />\r
+                       </Filters>\r
+               </DB2NoSQLAppender>\r
+               \r
                <RollingFile name="RollingFile" fileName="${fileName}" filePattern="${filePattern}">\r
                        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%-5level] [%t] [%M] [%class{36}] %msg%n %throwable{short}" />\r
                        <Policies>\r
@@ -50,6 +55,7 @@
                        <AppenderRef ref="MarkeredConsole" />\r
 <!--                   <AppenderRef ref="RollingFile" /> -->\r
                        <AppenderRef ref="MarkeredMail" />\r
+                       <AppenderRef ref="MarkeredDB2" />\r
                </Root>\r
                <Logger name="org.zkoss" level="trace" additivity="false" />\r
                <Logger name="org.quartz" level="ERROR" additivity="false" />\r
index 378dd271eb243f7ca6eb4a02d1f8b47e8c5cb937..54c1b1ed8b98ed6da988d4ee8c6324a4d7324d4c 100644 (file)
@@ -1,5 +1,15 @@
 {"joblist":[\r
        {\r
+      "active": false,\r
+         "name" : "Statisztika importálása",\r
+      "template": "import-statistics.xml",\r
+      "executeimmediate": false,\r
+      "cronexpression": "0 0 0/1 1/1 * ? *",\r
+      "parameters": [ \r
+       {"name": "daysBeforeNow", "value": 1, "type": "java.lang.Integer"}\r
+      ]\r
+       },\r
+       {\r
       "active": false,\r
          "name" : "MORPHEUS 'missing materials' importálása",\r
       "template": "import-morpheus-missing-materials.xml",\r
@@ -67,7 +77,7 @@
        {"name": "nexioPort", "value": 2098, "type": "java.lang.Integer"},\r
        {"name": "nexioUserName", "value": "administrator", "type": "java.lang.String"},\r
        {"name": "nexioPassword", "value": "system", "type": "java.lang.String"},\r
-       {"name": "archiveFtp", "value": "ftp://10.10.1.100/ARCHIVE/TEST", "type": "java.lang.String"},\r
+       {"name": "archiveFtp", "value": "ftp://10.10.1.100/ARCHIVE", "type": "java.lang.String"},\r
        {"name": "archiveUserName", "value": "mediacube", "type": "java.lang.String"},\r
        {"name": "archivePassword", "value": "Broadca5T", "type": "java.lang.String"},\r
        {"name": "filterAgencies", "value": "schedule-rec", "type": "java.lang.String"},\r
index d4355ee38996498e26079bb66223a471902b855e..120575449a45b1550224ac00d4acda5775908f9c 100644 (file)
@@ -6,5 +6,18 @@ Bundle-Version: 1.0.0
 Fragment-Host: org.apache.logging.log4j.core;bundle-version="2.8.2"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: user.commons.log4j2.appender
-Import-Package: javax.mail;version="1.5.0",
- user.commons
+Import-Package: com.fasterxml.jackson.annotation;version="2.4.5",
+ com.fasterxml.jackson.core;version="2.4.5",
+ com.fasterxml.jackson.core.type;version="2.4.5",
+ com.fasterxml.jackson.core.util;version="2.4.5",
+ com.fasterxml.jackson.databind;version="2.4.5",
+ com.fasterxml.jackson.databind.deser.std;version="2.4.5",
+ com.fasterxml.jackson.databind.module;version="2.4.5",
+ com.fasterxml.jackson.databind.ser;version="2.4.5",
+ com.fasterxml.jackson.databind.ser.impl;version="2.4.5",
+ com.ibm.nosql.bson,
+ com.ibm.nosql.json,
+ com.ibm.nosql.json.api,
+ javax.mail;version="1.5.0",
+ user.commons,
+ user.commons.nosql
diff --git a/server/user.commons.log4j2/src/user/commons/log4j2/appender/DB2NoSQLAppender.java b/server/user.commons.log4j2/src/user/commons/log4j2/appender/DB2NoSQLAppender.java
new file mode 100644 (file)
index 0000000..b6e9788
--- /dev/null
@@ -0,0 +1,107 @@
+package user.commons.log4j2.appender;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Core;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.appender.AbstractAppender;
+import org.apache.logging.log4j.core.config.Configuration;
+import org.apache.logging.log4j.core.config.DefaultConfiguration;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginConfiguration;
+import org.apache.logging.log4j.core.config.plugins.PluginElement;
+import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.filter.ThresholdFilter;
+import org.apache.logging.log4j.core.layout.JsonLayout;
+import org.apache.logging.log4j.core.util.Booleans;
+
+import com.ibm.nosql.json.api.BasicDBObject;
+import com.ibm.nosql.json.api.DB;
+import com.ibm.nosql.json.api.DBCollection;
+
+import user.commons.MediaCubeMarker;
+import user.commons.nosql.NoSQLUtils;
+
+@Plugin(name = "DB2NoSQLAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE, printObject = true)
+public final class DB2NoSQLAppender extends AbstractAppender {
+
+       private static final int CONCURRENT_QUEUES = 5;
+       private static final ExecutorService executor = Executors.newFixedThreadPool(CONCURRENT_QUEUES);
+
+       @PluginFactory
+       public static DB2NoSQLAppender createAppender(@PluginConfiguration final Configuration config, @PluginAttribute("name") @Required final String name,
+                       @PluginElement("Layout") Layout<? extends Serializable> layout, @PluginElement("Filter") Filter filter,
+                       @PluginAttribute("ignoreExceptions") final String ignore) {
+               if (name == null) {
+                       LOGGER.error("No name provided for SmtpAppender");
+                       return null;
+               }
+
+               if (layout == null) {
+                       layout = JsonLayout.createDefaultLayout();
+               }
+               if (filter == null) {
+                       filter = ThresholdFilter.createFilter(null, null, null);
+               }
+               final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
+
+               final Configuration configuration = config != null ? config : new DefaultConfiguration();
+
+               return new DB2NoSQLAppender(name, filter, layout, ignoreExceptions);
+       }
+
+       private DBCollection collection;
+
+       private DB2NoSQLAppender(final String name, final Filter filter, final Layout<? extends Serializable> layout, final boolean ignoreExceptions) {
+               super(name, filter, layout, ignoreExceptions);
+       }
+
+       @Override
+       public void append(final LogEvent event) {
+               Marker m = event.getMarker();
+               if (!(m instanceof MediaCubeMarker))
+                       return;
+
+               final MediaCubeMarker marker = (MediaCubeMarker) m;
+               final String sessionID = marker.getSessionID();
+               if (sessionID == null || sessionID.length() == 0)
+                       return;
+
+               final LogEvent evt = event.toImmutable();
+               executor.submit(() -> {
+                       //                      byte[] bytes = getLayout().toByteArray(evt);
+                       //                      String json = new String(bytes);
+                       //                      BasicDBObject eo = (BasicDBObject) JSONUtil.jsonToDbObject(json);
+                       BasicDBObject smartEvent = new BasicDBObject();
+                       smartEvent.put("dateTime", new Date(evt.getTimeMillis()));
+                       smartEvent.put("thread", evt.getThreadName());
+                       smartEvent.put("level", evt.getLevel().toString());
+                       smartEvent.put("loggerName", evt.getLoggerName());
+                       smartEvent.put("sessionID", Long.parseLong(sessionID));
+                       smartEvent.put("sessionName", marker.getSessionName());
+                       smartEvent.put("message", evt.getMessage().getFormattedMessage());
+                       smartEvent.put("throwable", evt.getMessage().getThrowable());
+
+                       if (collection == null) {
+                               DB db = NoSQLUtils.getNoSQLDB();
+                               collection = db.getCollection("sessionlogs");
+                       }
+                       collection.save(smartEvent);
+               });
+       }
+
+       @Override
+       public boolean isFiltered(final LogEvent event) {
+               final boolean filtered = super.isFiltered(event);
+               return filtered;
+       }
+}
index 9e402f8e8bb6b1c76e93b496606de72b96ab0c02..1b3a43dfb5c0f898c5ee48f4bb9c4d7038f7c00c 100644 (file)
@@ -354,8 +354,15 @@ public class SmtpManager extends AbstractManager {
                List<LogEvent> events = sessionEvents.get(sessionID);
                if (events == null)
                        return;
+
+               Level mailLevel = level;
+               for (LogEvent event : events) {
+                       if (event.getLevel().intLevel() < mailLevel.intLevel())
+                               mailLevel = event.getLevel();
+               }
+
                String to = mcm.getTo() == null ? defaultRecipient : mcm.getTo();
-               String subject = mcm.getSessionName() == null ? defaultSubject : String.format("%s: %s #%s", level, mcm.getSessionName(), mcm.getSessionID());
+               String subject = mcm.getSessionName() == null ? defaultSubject : String.format("%s: %s #%s", mailLevel, mcm.getSessionName(), mcm.getSessionID());
                sendEvents(to, subject, layout, events);
                sessionEvents.remove(sessionID);
        }
index 5ad631a47aff9c544f15f92b534be1a09059fc62..60ca8b1d09904851b18a9f43cc7dd3d29dc93625 100644 (file)
@@ -12,7 +12,7 @@
                        <parameter name="filterAgencies" type="java.lang.String"/>\r
                        <parameter name="limit" type="java.lang.Integer"/>\r
                        <parameter name="nexioKillDateDays" type="java.lang.Integer"/>\r
-                       <parameter name="targetAgency" type="java.lang.String"/>\r
+                       <parameter name="nexioAgency" type="java.lang.String"/>\r
                </parameters>\r
        </declarations>\r
        <commands>\r
@@ -46,7 +46,7 @@
                                        <parameter name="nexioKillDateDays" />\r
                                </input>\r
                                <input>\r
-                                       <parameter name="targetAgency" />\r
+                                       <parameter name="nexioAgency" />\r
                                </input>\r
                        </inputs>\r
                </calljobstep>\r
index f195723df8c3a23b26071657e2368cf591675970..44d771cb8b741af52703a2f4bbc45c065dbb6dd9 100644 (file)
@@ -1,7 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <jobtemplate name="MORPHEUS 'missing materials' importálása">\r
+       <declarations>\r
+               <parameters>\r
+                       <parameter name="daysBeforeNow" type="java.lang.Integer"/>\r
+               </parameters>\r
+       </declarations>\r
        <commands>\r
                <calljobstep type="user.jobengine.server.steps.ImportStatisticsStep" weight="1">\r
+                       <inputs>\r
+                               <input>\r
+                                       <parameter name="daysBeforeNow" />\r
+                               </input>\r
+                       </inputs>\r
                </calljobstep>\r
        </commands>\r
 </jobtemplate>
\ No newline at end of file
index d922094573f739c4ffb309501cca3d55934dc43a..b1d0bb4872298c5d644275113dff3b515fb56479 100644 (file)
@@ -179,12 +179,14 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
        }\r
 \r
        private String getTargetFileName(String sourceFileName, String[] names) {\r
+               String result = sourceFileName + MXFEXT;\r
+               if (names == null || names.length == 0)\r
+                       return result;\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
@@ -313,7 +315,7 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                check(nexioUserName, "nexioUserName");\r
                check(nexioPassword, "nexioPassword");\r
 \r
-               check(agencies, "agencies");\r
+               check(agencies, "filterAgencies");\r
                filterAgencies = agencies.split(",");\r
 \r
                check(limit, "limit");\r
@@ -354,11 +356,11 @@ public class CopyForArchiveNEXIORecordingsStep extends JobStep {
                        sourceFtp = ((FtpDirectoryLister) sourceUri.getLister()).connect();\r
                        targetFtp = ((FtpDirectoryLister) targetUri.getLister()).connect();\r
 \r
+                       result = getTargetFileName(sourceFileName, targetFtp.listNames());\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
index 61bb5b5bc35950305bb06f0797bbe6c39a146d41..03cadcfb2f476a4019483d3e6aeaa3f589c9b861 100644 (file)
@@ -1,57 +1,54 @@
 package user.jobengine.server.steps;\r
 \r
-import java.util.concurrent.CountDownLatch;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+import java.util.concurrent.Semaphore;\r
 \r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
 import user.commons.ListUtils;\r
+import user.jobengine.db.ItemManagerData.SignalType;\r
+import user.jobengine.server.IJobChangedListener;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.JobStatusChangedEvent;\r
 \r
 public class FakeNoParamsStep extends JobStep {\r
        private static final String CHILD_TITLE = "Párhuzamosított alfolyamat";\r
        private static final String CHILD_TEMPLATE = "fake-concurrent.xml";\r
        private static final Logger logger = LogManager.getLogger();\r
        int count = 10;\r
-       CountDownLatch latch = new CountDownLatch(count);\r
-\r
-       private void childStatusChanged(JobStatusChangedEvent event) {\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
        public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
-               //              logger.warn(jobRuntime.getMarker(), "Egy WARN {}", "paraméterrel");\r
-               //              logger.error(jobRuntime.getMarker(), "Egy ERROR {}", "paraméterrel");\r
-               //              for (int i = 0; i < count; i++) {\r
-               //                      if (!canContinue())\r
-               //                              break;\r
-               //                      jobRuntime.incrementProgress((i + 1) * count);\r
-               //\r
-               //                      Thread.sleep(100);\r
-               //                      logger.info(jobRuntime.getMarker(), "Log markered" + i);\r
-               //\r
-               //                      if (i == 8)\r
-               //                              throw new Exception("stop");\r
-               //              }\r
+               final Semaphore semaphore = new Semaphore(1);\r
+               List<Long> childrenIDs = Collections.synchronizedList(new ArrayList<>());\r
+\r
+               IJobChangedListener listener = event -> {\r
+                       IJobRuntime child = event.getJob();\r
+                       if (event.getSignalType().equals(SignalType.CREATE)) {\r
+                               if (child.getParentJobId() == jobRuntime.getId()) {\r
+                                       childrenIDs.add(child.getId());\r
+                               }\r
 \r
-               //Thread.sleep(100000);\r
+                               if (child.getParentJobId() != jobRuntime.getId() && childrenIDs.contains(child.getParentJobId())) {\r
+                                       childrenIDs.add(child.getId());\r
+                               }\r
+                       }\r
+                       if (event.getSignalType().equals(SignalType.DELETE) && childrenIDs.contains(child.getId())) {\r
+                               childrenIDs.remove(child.getId());\r
+                               if (childrenIDs.size() == 0)\r
+                                       semaphore.release();\r
+                       }\r
+               };\r
+               jobEngine.addJobChangedEventListener(listener);\r
+               semaphore.acquire();\r
                for (int i = 0; i < count; i++) {\r
-                       jobEngine.submit(jobRuntime, e -> childStatusChanged(e), CHILD_TEMPLATE, CHILD_TITLE, ListUtils.asMap("itemID", i));\r
+                       jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, CHILD_TITLE, ListUtils.asMap("itemID", i));\r
                }\r
-               latch.await();\r
+               semaphore.acquire();\r
+               jobEngine.removeJobChangedEventListener(listener);\r
                return null;\r
        }\r
 }\r
index 60853110b4aca0433aafa0e33762991f4c3b0215..c3b694d4ace6a0fc202cfee3ebd5fc24711a5bc2 100644 (file)
@@ -16,6 +16,7 @@ public class FakeStep extends JobStep {
                Object[] result = { itemID + 1 };\r
 \r
                logger.info(jobRuntime.getMarker(), "Starting with {}", itemID);\r
+               logger.error(jobRuntime.getMarker(), "Error with {}", itemID);\r
                try {\r
                        for (int i = 0; i < count; i++) {\r
                                //sb.append("Sikeres iteráció : ")\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/ForkStep.java
new file mode 100644 (file)
index 0000000..fe17d20
--- /dev/null
@@ -0,0 +1,50 @@
+package user.jobengine.server.steps;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+import java.util.concurrent.Semaphore;\r
+\r
+import user.jobengine.db.ItemManagerData.SignalType;\r
+import user.jobengine.server.IJobChangedListener;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public abstract class ForkStep extends JobStep {\r
+\r
+       @StepEntry\r
+       public void execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               final Semaphore semaphore = new Semaphore(1);\r
+               List<Long> childrenIDs = Collections.synchronizedList(new ArrayList<>());\r
+\r
+               IJobChangedListener listener = event -> {\r
+                       IJobRuntime child = event.getJob();\r
+                       if (event.getSignalType().equals(SignalType.CREATE)) {\r
+                               if (child.getParentJobId() == jobRuntime.getId()) {\r
+                                       childrenIDs.add(child.getId());\r
+                               }\r
+\r
+                               if (child.getParentJobId() != jobRuntime.getId() && childrenIDs.contains(child.getParentJobId())) {\r
+                                       childrenIDs.add(child.getId());\r
+                               }\r
+                       }\r
+                       if (event.getSignalType().equals(SignalType.DELETE) && childrenIDs.contains(child.getId())) {\r
+                               childrenIDs.remove(child.getId());\r
+                               if (childrenIDs.size() == 0)\r
+                                       semaphore.release();\r
+                       }\r
+               };\r
+               jobEngine.addJobChangedEventListener(listener);\r
+               semaphore.acquire();\r
+               try {\r
+                       fork(jobEngine, jobRuntime);\r
+               } catch (Exception e) {\r
+                       semaphore.release();\r
+                       throw e;\r
+               }\r
+               semaphore.acquire();\r
+               jobEngine.removeJobChangedEventListener(listener);\r
+       }\r
+\r
+       protected abstract void fork(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception;\r
+}\r
index c4f01eb2fd2b8ca93a91b0377b17aae7f7d753b5..7268b0ecbd745af73a6763dda4dce0df8f96283f 100644 (file)
 package user.jobengine.server.steps;\r
 \r
+import java.util.Calendar;\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+import com.ibm.nosql.json.api.DBObject;\r
 \r
+import user.commons.CalendarUtils;\r
+import user.commons.nosql.NoSQLUtils;\r
+import user.commons.octopus.IOctopusAPI;\r
+import user.commons.octopus.OctopusAPI;\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
+       private static final String SCHEDULED_FORMAT = "yyyy.MM.dd HH:mm";\r
+       private IOctopusAPI octopusAPI;\r
+       private Marker marker;\r
+\r
+       private void createAPI(IJobRuntime jobRuntime) throws Exception {\r
+               try {\r
+                       octopusAPI = new OctopusAPI();\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
+                       logger.error(jobRuntime.getMarker(), "Az Octopus adatbázis nem érhető el. A rendszer üzenete: {}", e.getMessage());\r
+                       throw e;\r
+               }\r
+       }\r
 \r
        @StepEntry\r
-       public Object[] execute(IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+       public Object[] execute(int daysBeforeNow, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               marker = jobRuntime.getMarker();\r
+               createAPI(jobRuntime);\r
+\r
+               Calendar scheduledDate = Calendar.getInstance();\r
+               scheduledDate.add(Calendar.DAY_OF_YEAR, -1 * daysBeforeNow);\r
+               List<DBObject> rundowns = octopusAPI.getRundowns(scheduledDate.getTime());\r
+               if (rundowns == null) {\r
+                       logger.warn(marker, "Nem található adástükör a {} napra.", CalendarUtils.toDateString(scheduledDate));\r
+                       return null;\r
+               }\r
+               Map<Long, BasicDBObject> stories = processRundowns(rundowns);\r
+\r
+               List<DBObject> folders = octopusAPI.getStoryFolders();\r
+               Map<Long, BasicDBObject> folderStories = processFolders(folders, scheduledDate);\r
+               stories.putAll(folderStories);\r
 \r
                return null;\r
        }\r
 \r
+       private Map<Long, BasicDBObject> processFolders(List<DBObject> folders, Calendar scheduledDate) {\r
+               Map<Long, BasicDBObject> result = new HashMap<>();\r
+               for (DBObject f : folders) {\r
+                       BasicDBObject folder = (BasicDBObject) f;\r
+                       String folderName = null;\r
+                       long folderID = 0;\r
+                       try {\r
+                               folderID = NoSQLUtils.asLong(folder, IOctopusAPI.ID);\r
+                               folderName = folder.getString(IOctopusAPI.NAME);\r
+                               List<DBObject> stories = octopusAPI.getStoryFolderStories(folderID);\r
+                               if (stories != null)\r
+                                       result.putAll(processStories(stories, scheduledDate));\r
+                       } catch (Exception e) {\r
+                               logger.catching(e);\r
+                               logger.error(marker, String.format("A %s %s mappa feldolgozása nem lehetséges. A rendszer üzenete: %s", folderID, folderName, e.getMessage()));\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+\r
+       private Map<Long, BasicDBObject> processRundowns(List<DBObject> rundowns) {\r
+               Map<Long, BasicDBObject> result = new HashMap<>();\r
+               for (DBObject r : rundowns) {\r
+                       BasicDBObject rundown = (BasicDBObject) r;\r
+                       String rundownName = null;\r
+                       long rundownID = 0;\r
+                       try {\r
+                               rundownID = NoSQLUtils.asLong(rundown, IOctopusAPI.ID);\r
+                               String name = NoSQLUtils.asString(NoSQLUtils.asDBObject(rundown, IOctopusAPI.RUNDOWN_TYPE), IOctopusAPI.NAME);\r
+                               String channel = NoSQLUtils.asString(NoSQLUtils.asDBObject(rundown, IOctopusAPI.CHANNEL), IOctopusAPI.NAME);\r
+                               Date scheduledStart = rundown.getDate(IOctopusAPI.SCHEDULED_START);\r
+                               String start = CalendarUtils.toString(CalendarUtils.createCalendar(scheduledStart), SCHEDULED_FORMAT);\r
+                               //String rundownName = NoSQLUtils.asString(rundown, IOctopusAPI.NAME);\r
+                               rundownName = String.format("%s %s %s", start, name, channel);\r
+                               List<DBObject> stories = octopusAPI.getRundownStories(rundownID);\r
+                               if (stories != null)\r
+                                       result.putAll(processStories(stories, null));\r
+                       } catch (Exception e) {\r
+                               logger.catching(e);\r
+                               logger.error(marker,\r
+                                               String.format("A %s %s tükör feldolgozása nem lehetséges. A rendszer üzenete: %s", rundownID, rundownName, e.getMessage()));\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+\r
+       private Map<Long, BasicDBObject> processStories(List<DBObject> stories, Calendar scheduledDate) {\r
+               Map<Long, BasicDBObject> result = new HashMap<>();\r
+               for (DBObject storyObject : stories) {\r
+                       BasicDBObject story = (BasicDBObject) storyObject;\r
+                       BasicDBObject mosObjects = NoSQLUtils.asDBObject(story, IOctopusAPI.MOS_OBJECTS);\r
+                       if (mosObjects == null || mosObjects.isEmpty())\r
+                               continue;\r
+                       long storyID = NoSQLUtils.asLong(story, IOctopusAPI.ID);\r
+                       if (storyID == 0)\r
+                               continue;\r
+\r
+                       if (scheduledDate != null) {\r
+                               //story.get\r
+\r
+                       }\r
+\r
+                       if (!result.containsKey(storyID))\r
+                               result.put(storyID, story);\r
+               }\r
+               return result;\r
+       }\r
+\r
 }\r
index 9490aa7c7b98ab184b664bbf67aaafb8c8932176..c5e96a9e090ae602c28855dce8889651151b24d8 100644 (file)
@@ -588,6 +588,8 @@ public class OctopusDataMiner {
                long storyID = story.getLong(IOctopusAPI.ID);\r
 \r
                story.put(IOctopusAPI.MODIFIED, toDate(story, IOctopusAPI.MODIFIED));\r
+               story.put(IOctopusAPI.SCHEDULEFROM, toDate(story, IOctopusAPI.SCHEDULEFROM));\r
+               story.put(IOctopusAPI.SCHEDULETO, toDate(story, IOctopusAPI.SCHEDULETO));\r
                BasicDBList rundownRef = storyRundowns.get(storyID);\r
                BasicDBList storyFolderRef = storyStoryFolders.get(storyID);\r
                BasicDBList modifiedMOS = extractRelevantMOSObjects(story);\r
index fa263bec893a7d850e7c7305700e02376bf22cb9..9decfe626f509dd4ce45d8109b2c941336556e49 100644 (file)
@@ -35,10 +35,8 @@ public class ListUtils {
                return result;\r
        }\r
 \r
-       public static Map<String, Object> asMap(Object... items) throws Exception {\r
+       public static Map<String, Object> asMap(Object... items) {\r
                Map<String, Object> result = new HashMap<>();\r
-               if (items.length % 2 != 0)\r
-                       throw new Exception("Even number of parameters is required.");\r
                for (int i = 0; i < items.length; i = i + 2) {\r
                        result.put(String.valueOf(items[i]), items[i + 1]);\r
                }\r
index 9cdbdd58623d7a64e6506eb6f3e156a4ed35fada..9b6db5c811eb652f2728e5c774fb23b768c2e730 100644 (file)
@@ -38,6 +38,8 @@ public interface IOctopusAPI {
        static final String SCHEDULED_START = "scheduledStart";\r
        static final String SLUGS = "slugs";\r
        static final String MODIFIED = "modified";\r
+       static final String SCHEDULEFROM = "scheduleFrom";\r
+       static final String SCHEDULETO = "scheduleTo";\r
        static final String STORIES = "stories";\r
        static final String ID = "id";\r
        static final String _ID = "_id";\r
index e94eeada764dafbbaf799847b754cb0e1426f0c9..47cb092455783e215406f39b1df1119d5601db04 100644 (file)
@@ -117,6 +117,19 @@ public class OctopusDataMinerTest {
        //              assertEquals(x, y);\r
        //      }\r
 \r
+       //      @Test\r
+       //      public void test2() throws Exception {\r
+       //              Map<String, Object> m1 = ListUtils.asMap("1", 1);\r
+       //              Map<String, Object> m2 = ListUtils.asMap("1", 2);\r
+       //              Map<String, Object> m3 = new HashMap<>();\r
+       //              m3.putAll(m1);\r
+       //              m3.putAll(m2);\r
+       //              assertEquals(2, m3.get("1"));\r
+       //\r
+       //              m1.putAll(m2);\r
+       //              assertEquals(2, m1.get("1"));\r
+       //      }\r
+\r
        @Test\r
        public void testClient() {\r
                ResteasyWebTarget webTarget = new ResteasyClientBuilder().build().target("http://10.10.1.28/services/rest/octopus/");\r
index e507b0a906fad74e0f407859c88b0d3ce05dd938..fbf6fb9da3f35cb20c012d576f7bfe13c9102fa9 100644 (file)
                <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
-<!--                           <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
+                               <!--                            <borderlayout> -->\r
+                               <!--                                    <center> -->\r
+                               <listbox id="lbJobList" sizedByContent="false" model="@load(jlm.jobList)" multiple="true" pagingPosition="top" mold="paging" autopaging="true"\r
+                                       vflex="true" checkmark="true" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style"\r
+                                       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
+                                       <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>\r
+                                                               <a href="javascript:void(0);" label="Paraméterek" onClick="@command('showParameters', item=each)" />\r
+                                                       </listcell>\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
diff --git a/server/user.jobengine.osgi.server/pages/jobparameters.zul b/server/user.jobengine.osgi.server/pages/jobparameters.zul
new file mode 100644 (file)
index 0000000..36d57dd
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<window id="resultWin" title="Folyamat paraméterei" width="400px" border="normal" apply="org.zkoss.bind.BindComposer"\r
+       viewModel="@id('jlm') @init('user.jobengine.zk.model.JobParametersModel')" forward="onCancel=closeButton.onClick">\r
+               <grid sizedByContent="false" span="true" model="@bind(jlm.selectedJob.parameters)" vflex="true" style="border: none; background: #e3e3e3 !important;"\r
+                       oddRowSclass="listbox-odd-style" sclass="listbox-normal-style">\r
+                       <columns>\r
+                               <column label="" hflex="1" align="left" />\r
+                       </columns>\r
+                       <rows>\r
+                               <template name="xmodel">\r
+                                       <row>\r
+                                               <div sclass="details">\r
+                                                       <div>\r
+                                                               <label value="Facilities:" />\r
+                                                               <label value="@load(each.template)" />\r
+                                                       </div>\r
+                                               </div>\r
+                                       </row>\r
+                               </template>\r
+                       </rows>\r
+               </grid>\r
+       <hbox width="100%" pack="center" align="center">\r
+               <button id="closeButton" label="Bezár" onClick="@command('close')" />\r
+       </hbox>\r
+</window>\r
index 1d9c70ba6182b04afe058efa9688cf555d4e8e1a..10e78b7948958bd9b3370a971687ee0eef1a7aeb 100644 (file)
@@ -1,4 +1,4 @@
-version=2.2.2\r
+version=2.2.3\r
 footer=2016 © Copyright User Rendszerház Kft.\r
 \r
 login_info=Információ\r
@@ -115,7 +115,7 @@ dialog.info=Információ
 error.start.downloadjob=A letöltés megkezdése közben hiba lépett fel!\r
 error.refresh=Frissítés közben hiba lépett fel!\r
 error.cancel=Megszakítás közben hiba lépett fel!\r
-error.isauthorized=A jogosultság lekérdezése közben hiba lépett fel!\r
+error.isauthorized=A jogosultság lekérdezése közben hiba l\uFFFD\uFFFDpett fel!\r
 error.notauthorized=Önnek nincs jogosultsága a kérés teljesítéséhez!\r
 error.notauthorized.sc=Önnek nincs jogosultsága ezekre az értékekre keresni!\r
 error.nodocument=A megadott indexekkel nincsenek betöltve dokumentumok!\r
index 233aa6c2cac4fe63bf5c09f9c54bfcfefdf1dfed..8ac2c049c2ada3246ecfa345240e3dbd7d053bfc 100644 (file)
@@ -1,11 +1,11 @@
 package user.jobengine.zk.model;\r
 \r
 import java.util.Collection;\r
-import java.util.HashMap;\r
 import java.util.Map;\r
 \r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.zkoss.bind.annotation.BindingParam;\r
 import org.zkoss.bind.annotation.Command;\r
 import org.zkoss.bind.annotation.Init;\r
 import org.zkoss.bind.annotation.NotifyChange;\r
@@ -16,6 +16,7 @@ import org.zkoss.zul.Window;
 \r
 import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
+import user.commons.ListUtils;\r
 import user.jobengine.db.ItemManagerData.SignalType;\r
 import user.jobengine.server.IJobChangedListener;\r
 import user.jobengine.server.IJobEngine;\r
@@ -54,10 +55,8 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
 \r
        @Command\r
        public void executeJob() {\r
-               Map<String, Object> arguments = new HashMap<String, Object>();\r
-               arguments.put("jobEngine", jobEngine);\r
                String template = "/pages/jobselector.zul";\r
-               Window window = (Window) Executions.createComponents(template, null, arguments);\r
+               Window window = (Window) Executions.createComponents(template, null, ListUtils.asMap("jobEngine", jobEngine));\r
                window.doModal();\r
        }\r
 \r
@@ -168,6 +167,10 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
                t.start();\r
        }\r
 \r
+       public void setJobList(ListModelList<IJobRuntime> jobList) {\r
+               this.jobList = jobList;\r
+       }\r
+\r
        //      @Command\r
        //      public void restart() {\r
        //              startupDisabled = true;\r
@@ -179,10 +182,6 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
        //              initializeList();\r
        //      }\r
 \r
-       public void setJobList(ListModelList<IJobRuntime> jobList) {\r
-               this.jobList = jobList;\r
-       }\r
-\r
        public void setNewPriority(int newPriority) {\r
                this.newPriority = newPriority;\r
        }\r
@@ -202,6 +201,13 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
                NotifyChange("startupDisabled");\r
        }\r
 \r
+       @Command\r
+       public void showParameters(@BindingParam("item") IJobRuntime jobRuntime) {\r
+               String template = "/pages/jobparameters.zul";\r
+               Window window = (Window) Executions.createComponents(template, null, ListUtils.asMap("jobRuntime", jobRuntime));\r
+               window.doModal();\r
+       }\r
+\r
        @Command\r
        public void shutdown() {\r
                setShutdownDisabled(true);\r
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobParametersModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobParametersModel.java
new file mode 100644 (file)
index 0000000..7c248ce
--- /dev/null
@@ -0,0 +1,45 @@
+package user.jobengine.zk.model;\r
+\r
+import org.zkoss.bind.annotation.AfterCompose;\r
+import org.zkoss.bind.annotation.Command;\r
+import org.zkoss.bind.annotation.ContextParam;\r
+import org.zkoss.bind.annotation.ContextType;\r
+import org.zkoss.bind.annotation.Init;\r
+import org.zkoss.zk.ui.Component;\r
+import org.zkoss.zk.ui.Executions;\r
+import org.zkoss.zk.ui.select.Selectors;\r
+import org.zkoss.zk.ui.select.annotation.Wire;\r
+import org.zkoss.zul.Window;\r
+\r
+import user.jobengine.server.IJobRuntime;\r
+\r
+public class JobParametersModel extends BaseModel {\r
+\r
+       @Wire("#resultWin")\r
+       private Window resultWin;\r
+       private IJobRuntime selectedJob;\r
+\r
+       @AfterCompose\r
+       public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
+               Selectors.wireComponents(view, this, false);\r
+       }\r
+\r
+       @Command\r
+       public void close() {\r
+               resultWin.detach();\r
+       }\r
+\r
+       public IJobRuntime getSelectedJob() {\r
+               return selectedJob;\r
+       }\r
+\r
+       @Init\r
+       public void init() {\r
+               this.selectedJob = (IJobRuntime) Executions.getCurrent().getArg().get("jobRuntime");\r
+       }\r
+\r
+       public void setSelectedJob(IJobRuntime selectedJob) {\r
+               this.selectedJob = selectedJob;\r
+       }\r
+\r
+}
\ No newline at end of file