git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 2 Nov 2017 14:00:00 +0000 (14:00 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 2 Nov 2017 14:00:00 +0000 (14:00 +0000)
24 files changed:
client/DxPlay/App.ico [deleted file]
client/DxPlay/DxPlay.csproj
client/DxPlay/maestro.ico [new file with mode: 0644]
client/Maestro/Configuration/configuration-playout.json
client/Maestro/Maestro.csproj
client/Maestro/Program.cs
client/Maestro/Resources/installforge-installer-project.ifp
client/Maestro/maestro.ico [new file with mode: 0644]
client/PasswordEncrypter/PasswordEncrypter.csproj
client/PasswordEncrypter/maestro.ico [new file with mode: 0644]
server/-configuration/run-mediacube-server-bsh.launch
server/-configuration/scheduledjobs.json
server/user.jobengine.executors/jobtemplates/retrieve-material.xml
server/user.jobengine.executors/jobtemplates/retrieve-ondemand.xml
server/user.jobengine.executors/src/user/jobengine/server/steps/CheckMORPHEUSMissingMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/CheckTrafficMissingMaterialsStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/OutputPathAndNameSelectorStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/TSMRestoreStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/UserNotificationStep.java [new file with mode: 0644]
server/user.jobengine.osgi.server/pages/jobselector.zul
server/user.jobengine.osgi.server/pages/retrieveselector.zul [new file with mode: 0644]
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/RetrieveSelectorModel.java [new file with mode: 0644]
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java
server/user.jobengine.osgi.server/test/user/jobengine/server/steps/JobStepTest.java

diff --git a/client/DxPlay/App.ico b/client/DxPlay/App.ico
deleted file mode 100644 (file)
index 3a5525f..0000000
Binary files a/client/DxPlay/App.ico and /dev/null differ
index 9057acb4e2874d1e297c95be8ad65a1db184b662..107cb7ffda9c309ca3cb6b650729801556e7b5af 100644 (file)
@@ -6,7 +6,7 @@
     <ProjectGuid>{0B44B3D7-52D7-4C0E-9B1C-F48CEEDA36FE}</ProjectGuid>\r
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
-    <ApplicationIcon>App.ico</ApplicationIcon>\r
+    <ApplicationIcon>maestro.ico</ApplicationIcon>\r
     <AssemblyKeyContainerName>\r
     </AssemblyKeyContainerName>\r
     <AssemblyName>DxPlay</AssemblyName>\r
     <Compile Include="VideoTrackBar.cs">\r
       <SubType>Component</SubType>\r
     </Compile>\r
-    <Content Include="App.ico" />\r
     <Compile Include="Properties\AssemblyInfo.cs">\r
       <SubType>Code</SubType>\r
     </Compile>\r
       <DependentUpon>PlayerForm.cs</DependentUpon>\r
     </Compile>\r
     <Content Include="DirectShowLib.dll" />\r
+    <Content Include="maestro.ico" />\r
     <Content Include="MXFFileParser.dll">\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
     </Content>\r
diff --git a/client/DxPlay/maestro.ico b/client/DxPlay/maestro.ico
new file mode 100644 (file)
index 0000000..e81b6ff
Binary files /dev/null and b/client/DxPlay/maestro.ico differ
index abf37876fcd3288f9530bf2444a12837d958be55..27f522f044a3c6200212f3e96115f416ec439ec5 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "Adáslebony",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": true,\r
   "enableCustomMetadataId": true,\r
   "player": {\r
index abd8d0da69a97c356dad19657bbb985f98d2165a..a956c42fd9bcf6afefa6df6d71d610948d58eaf4 100644 (file)
@@ -75,7 +75,7 @@
   </PropertyGroup>\r
   <PropertyGroup />\r
   <PropertyGroup>\r
-    <ApplicationIcon>Resources\mediacube_logo_small.ico</ApplicationIcon>\r
+    <ApplicationIcon>maestro.ico</ApplicationIcon>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">\r
     <DebugSymbols>true</DebugSymbols>\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
     </None>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="Resources\AppIcon.ico" />\r
-  </ItemGroup>\r
   <ItemGroup>\r
     <WCFMetadata Include="Connected Services\" />\r
   </ItemGroup>\r
     <None Include="Resources\Pause.ico" />\r
     <None Include="Resources\Play.ico" />\r
     <None Include="Resources\Stop.ico" />\r
-    <None Include="Resources\mc_logo.ico" />\r
     <None Include="Resources\mediacube_logo_small.ico" />\r
+    <None Include="maestro.ico" />\r
     <Content Include="TODO.txt" />\r
   </ItemGroup>\r
   <ItemGroup>\r
index 158b8073f962cb7660874c4430fff42cb70bf182..676ae4fac0a4281890b97917f6b03ca9734b1381 100644 (file)
@@ -82,15 +82,15 @@ namespace Maestro {
         private void CreateForms() {\r
             string[] files = Directory.GetFiles("./Configuration", "*.json");\r
             if (files.Length == 0) {\r
-                MessageBox.Show("Hiányos konfiguráció!");\r
-                Application.Exit();\r
+                MessageBox.Show(new Form() { TopMost = true }, "Nincs aktív konfiguráció!");\r
+                TerminateApplication();\r
             }\r
             foreach (String file in files) {\r
                 CreateForm(file);\r
             }\r
             if (forms.Count == 0) {\r
                 MessageBox.Show(new Form() { TopMost = true }, "Nincs aktív konfiguráció!");\r
-                //TerminateApplication();\r
+                TerminateApplication();\r
             }\r
         }\r
 \r
index a64b33d3d80a7231d97d71b9725b7fde2c9caef5..ef230307baed3572002fb489d606a9ac057acb9d 100644 (file)
Binary files a/client/Maestro/Resources/installforge-installer-project.ifp and b/client/Maestro/Resources/installforge-installer-project.ifp differ
diff --git a/client/Maestro/maestro.ico b/client/Maestro/maestro.ico
new file mode 100644 (file)
index 0000000..e81b6ff
Binary files /dev/null and b/client/Maestro/maestro.ico differ
index 7feb553678586a190268580426e83a13174e5b44..bcbcbde6c9c27962366ab4b6f09b5a82e5f330a0 100644 (file)
@@ -55,6 +55,9 @@
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>\r
     <Prefer32Bit>true</Prefer32Bit>\r
   </PropertyGroup>\r
+  <PropertyGroup>\r
+    <ApplicationIcon>maestro.ico</ApplicationIcon>\r
+  </PropertyGroup>\r
   <ItemGroup>\r
     <Reference Include="System" />\r
     <Reference Include="System.Core" />\r
@@ -74,5 +77,8 @@
   <ItemGroup>\r
     <None Include="App.config" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <None Include="maestro.ico" />\r
+  </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
 </Project>
\ No newline at end of file
diff --git a/client/PasswordEncrypter/maestro.ico b/client/PasswordEncrypter/maestro.ico
new file mode 100644 (file)
index 0000000..e81b6ff
Binary files /dev/null and b/client/PasswordEncrypter/maestro.ico differ
index 84984baa0e9fa39a5791cc72125f93779c38d913..f957593d008b3d20ebf4c01eb927d5eefa9fa181 100644 (file)
@@ -19,7 +19,7 @@
 <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -console"/>\r
 <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>\r
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.equinox.http.jetty.http.port=8080&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.28:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-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&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.28:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.555"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#13;&#10;-Dorg.eclipse.equinox.http.jetty.http.port=8080&#13;&#10;-Dorg.eclipse.epp.logging.aeri.skipReports=true &#13;&#10;-Declipse.ignoreApp=true &#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Djobengine.jobsteps.root=&quot;${workspace_loc}/user.jobengine.executors/config&quot;&#13;&#10;-Djobengine.jobtemplates.root=&quot;${workspace_loc}/user.jobengine.executors/jobtemplates&quot;&#13;&#10;-Djobengine.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.db.user=db2admin&#13;&#10;-Djobengine.db.password=password&#13;&#10;-Djobengine.loglevel=INFO&#13;&#10;-Dlog4j.configurationFile=&quot;${workspace_loc}/-configuration/log4j2.xml&quot;&#13;&#10;-Djobengine.jobsteps.alternate.root=&quot;${workspace_loc}/user.jobengine.executors/bin/user/jobengine/server/steps&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:}/-configuration/jetty&quot;&#13;&#10;-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&#13;&#10;-Djobengine.octopus.api.address=http://10.10.1.11/api/v1&#13;&#10;-Djobengine.octopus.api.user=mam&#13;&#10;-Djobengine.octopus.api.password=napocska&#13;&#10;-Djobengine.nosql.db.url=jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;&#13;&#10;-Djobengine.nosql.db.user=db2admin&#13;&#10;-Djobengine.nosql.db.password=password&#13;&#10;-Djobengine.nosql.db.schema=test&#13;&#10;-Djobengine.selenio.address=http://10.10.1.71:44000/TranscodeMgrWS?wsdl&#13;&#10;-Djobengine.selenio.projectfilepath=\\10.10.1.71\Data\Blueprints\MP4_H264_AAC_v4.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Dnexio.host=10.10.1.555"/>\r
 <stringAttribute key="pde.version" value="3.3"/>\r
 <booleanAttribute key="show_selected_only" value="false"/>\r
 <stringAttribute key="target_bundles" value="cglib@default:default,com.auth0.java-jwt@default:default,com.fasterxml.jackson.core.jackson-annotations@default:default,com.fasterxml.jackson.core.jackson-core@default:default,com.fasterxml.jackson.core.jackson-databind@default:default,com.fasterxml.jackson.datatype.jackson-datatype-joda@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-base@default:default,com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider@default:default,com.fasterxml.jackson.module.jackson-module-jaxb-annotations@default:default,com.google.guava@default:default,com.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,com.sun.el.javax.el@default:default,commons-logging@default:default,javassist@default:default,javax.annotation-api@default:default,javax.inject@default:default,javax.mail@default:default,javax.servlet-api@default:default,javax.servlet.jsp-api@default:default,javax.validation.api@default:default,javax.ws.rs-api@default:default,jcifs@default:default,joda-time@default:default,org.apache.aries.spifly.dynamic.bundle@default:default,org.apache.aries.util@default:default,org.apache.commons.beanutils@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@default:default,org.apache.commons.lang3@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.commons.net@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.httpcomponents.httpclient@default:default,org.apache.httpcomponents.httpcore@default:default,org.apache.jasper.glassfish@default:default,org.apache.logging.log4j.api@1:true,org.apache.logging.log4j.core@default:default,org.apache.logging.log4j.slf4j-impl@default:default,org.apache.servicemix.bundles.quartz@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.util@default:default,org.eclipse.jdt.core.compiler.batch@default:default,org.eclipse.jetty.client@default:default,org.eclipse.jetty.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.jsp@default:default,org.eclipse.jetty.osgi.boot.jsp@default:false,org.eclipse.jetty.osgi.boot@default:true,org.eclipse.jetty.schemas@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.jetty.webapp@default:default,org.eclipse.jetty.websocket.api@default:default,org.eclipse.jetty.websocket.client@default:default,org.eclipse.jetty.websocket.common@default:default,org.eclipse.jetty.websocket.server@default:default,org.eclipse.jetty.websocket.servlet@default:default,org.eclipse.jetty.xml@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.hamcrest.core@default:default,org.jboss.resteasy.client@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.jvnet.mimepull@default:default,org.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,org.reflections@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
index a872b4826a38ae7ef89dc74025a2b1c8fc206a17..58bc474b2dd16cc7f12e47a7167bdb6761a99cb3 100644 (file)
@@ -64,7 +64,7 @@
       ]\r
        },      \r
        {\r
-      "active": true,\r
+      "active": false,\r
          "name" : "OCTOPUS adatok szinkronizálása",\r
       "template": "sync-octopus.xml",\r
       "executeimmediate": true,\r
index 6f381175e003f0a0b3b8c40a5569827fe772a647..b36cf922c73c4a016e181eb9144274111f03c55d 100644 (file)
@@ -5,6 +5,7 @@
                        <parameter name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
                        <parameter name="targetPath" type="java.lang.String" />\r
                        <parameter name="targetNamePattern" type="java.lang.String" />\r
+                       <parameter name="successRecipient" type="java.lang.String" />\r
                </parameters>\r
        </declarations>\r
        <commands>\r
@@ -19,6 +20,9 @@
                                <input>\r
                                        <parameter name="targetNamePattern" />\r
                                </input>\r
+                               <input>\r
+                                       <parameter name="successRecipient" />\r
+                               </input>\r
                        </inputs>\r
                </calljobstep>\r
        </commands>\r
index 10f7884c14acb385f63198cd878198cd6f755f39..53807a4215f05ae66675e8543e3987f0da6e95de 100644 (file)
@@ -2,10 +2,12 @@
 <jobtemplate name="Archivált anyag visszatöltése">\r
        <declarations>\r
                <parameters>\r
-                       <parameter name="trafficOuputPath" type="java.lang.String" />\r
-                       <parameter name="octopusOuputPath" type="java.lang.String" />\r
+                       <parameter name="trafficOutputPath" type="java.lang.String" />\r
+                       <parameter name="octopusOutputPath" type="java.lang.String" />\r
+                       <parameter name="genericOutputPath" type="java.lang.String" />\r
                        <parameter name="mediaCubeMedia" type="user.jobengine.db.Media" />\r
                        <parameter name="houseId" type="java.lang.String" />\r
+                       <parameter name="successRecipient" type="java.lang.String" />\r
                </parameters>\r
                <variables>\r
                        <variable name="targetPath" type="java.lang.String" />\r
                <calljobstep type="user.jobengine.server.steps.OutputPathAndNameSelectorStep" weight="1">\r
                        <inputs>\r
                                <input>\r
-                                       <parameter name="mediaCubeMedia" />\r
+                                       <parameter name="trafficOutputPath" />\r
+                               </input>\r
+                               <input>\r
+                                       <parameter name="octopusOutputPath" />\r
+                               </input>\r
+                               <input>\r
+                                       <parameter name="genericOutputPath" />\r
                                </input>\r
                                <input>\r
                                        <parameter name="houseId" />\r
@@ -42,6 +50,9 @@
                                <input>\r
                                        <parameter name="targetNamePattern" />\r
                                </input>\r
+                               <input>\r
+                                       <parameter name="successRecipient" />\r
+                               </input>\r
                        </inputs>\r
                </calljobstep>\r
        </commands>\r
index 7e494610dc89c0e3623c4f086605c324711b8872..8071c7139583e9a3d51ac2ca01271a96c3e8beee 100644 (file)
@@ -23,11 +23,12 @@ import user.jobengine.server.IJobRuntime;
 \r
 public class CheckMORPHEUSMissingMaterialsStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
-       private static final String TARGET_NAME_PATTERN = "targetNamePattern";\r
+       private static final String SUCCESSRECIPIENT = "successRecipient";\r
+       private static final String TARGETNAMEPATTERN = "targetNamePattern";\r
        private static final String MATERIAL_ID = "Material ID";\r
        private static final String RETRIEVE_MATERIAL = "Adásanyag visszatöltés";\r
-       private static final String TARGET_PATH = "targetPath";\r
-       private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia";\r
+       private static final String TARGETPATH = "targetPath";\r
+       private static final String MEDIACUBEMEDIA = "mediaCubeMedia";\r
        private static final String JOBTEMPLATE = "retrieve-material.xml";\r
        private static final String CSV_EXT = ".csv";\r
        private String targetPath;\r
@@ -65,7 +66,8 @@ public class CheckMORPHEUSMissingMaterialsStep extends JobStep {
                        return;\r
                }\r
 \r
-               jobEngine.submit(JOBTEMPLATE, RETRIEVE_MATERIAL, ListUtils.asMap(MEDIA_CUBE_MEDIA, medias.get(0), TARGET_PATH, targetPath, TARGET_NAME_PATTERN, "%s"));\r
+               jobEngine.submit(JOBTEMPLATE, RETRIEVE_MATERIAL,\r
+                               ListUtils.asMap(MEDIACUBEMEDIA, medias.get(0), TARGETPATH, targetPath, TARGETNAMEPATTERN, "%s", SUCCESSRECIPIENT, null));\r
        }\r
 \r
        private void processMissingMaterialCSV(Path csvFilePath) throws Exception {\r
index d4f096e67178a7eafc59f68c6ac2b81fe18e83a1..39c1648f72b8f78cb0b0767ac2686165799b8d67 100644 (file)
@@ -26,6 +26,7 @@ public class CheckTRAFFICMissingMaterialsStep extends JobStep {
        private static final String SQLSERVER_JDBC_SQL_SERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";\r
        private static final String SQL = "{call dbo.clIFsp_EC_MAM(1001, 32, Null,  Null, ?)}";\r
        private static final String JOBTEMPLATE = "retrieve-material.xml";\r
+       private static final String SUCCESSRECIPIENT = "successRecipient";\r
 \r
        @StepEntry\r
        public Object[] execute(String dbUrl, String userName, String password, int lookupDays, String targetPath, IJobEngine jobEngine, IJobRuntime jobRuntime)\r
@@ -82,7 +83,8 @@ public class CheckTRAFFICMissingMaterialsStep extends JobStep {
                }\r
 \r
                String title = "Traffic adásanyag visszatöltés: " + trafficId;\r
-               jobEngine.submit(JOBTEMPLATE, title, ListUtils.asMap(MEDIA_CUBE_MEDIA, medias.get(0), TARGET_PATH, targetPath, TARGET_NAME_PATTERN, "%s"));\r
+               jobEngine.submit(JOBTEMPLATE, title,\r
+                               ListUtils.asMap(MEDIA_CUBE_MEDIA, medias.get(0), TARGET_PATH, targetPath, TARGET_NAME_PATTERN, "%s", SUCCESSRECIPIENT, null));\r
        }\r
 \r
 }\r
index eab9db4d68bd368cc9b24d6d8524370d965984b8..e24df838471e49a071a39384c201bf5073e8d1b7 100644 (file)
@@ -1,34 +1,74 @@
 package user.jobengine.server.steps;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
-import user.jobengine.db.Media;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
-/**\r
- * Elinditja minden mediara az archivalo folyamatot.\r
- *\r
- * @author robi\r
- */\r
 public class OutputPathAndNameSelectorStep extends JobStep {\r
-       private static final String ARCHIVE = "Archiválás";\r
-       private static final String GLOBAL_SOURCE_PATH = "globalSourcePath";\r
+       private enum MetadataType {\r
+               TRAFFIC, OCTOPUS, GENERIC\r
+       }\r
+\r
+       private static final String TARGETNAMEPATTERN = "-ARCH-%s";\r
+\r
        private static final Logger logger = LogManager.getLogger();\r
-       private static final String JOBTEMPLATE = "archive-material.xml";\r
-       private static final String ARCHIVE_ITEM = "archiveItem";\r
+       private static final String REGEXP_TRAFFIC = "^[MRP]{1}[0-9]{6}[A-Z]{1}$";\r
+       private static final String REGEXP_OCTOPUSPLACEHOLDERID = "^[0-9]+_[0-9]+$";\r
+       private static final String REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID = "^[0-9]+_[0-9]+-[0-9]{3}$";\r
+\r
+       private void check(String trafficOutputPath, String octopusOutputPath, String genericOutputPath, String houseId) {\r
+               if (StringUtils.isBlank(trafficOutputPath)) {\r
+                       logger.error(getMarker(), "A folyamat 'trafficOutputPath' bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'trafficOutputPath' input parameter missing.");\r
+               }\r
+               if (StringUtils.isBlank(octopusOutputPath)) {\r
+                       logger.error(getMarker(), "A folyamat 'octopusOutputPath' bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'octopusOutputPath' input parameter missing.");\r
+               }\r
+               if (StringUtils.isBlank(genericOutputPath)) {\r
+                       logger.error(getMarker(), "A folyamat 'genericOutputPath' bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'genericOutputPath' input parameter missing.");\r
+               }\r
+               if (StringUtils.isBlank(houseId)) {\r
+                       logger.error(getMarker(), "A folyamat 'houseId' bemeneti paramétere üres.");\r
+                       throw new NullPointerException("System is not configured properly, 'houseId' input parameter missing.");\r
+               }\r
+       }\r
 \r
        @StepEntry\r
-       public Object[] execute(Media mediaCubeMedia, String houseId, IJobEngine jobEngine, IJobRuntime jobRuntime) {\r
-               String targetPath = "";\r
-               String targetNamePattern = "";\r
+       public Object[] execute(String trafficOutputPath, String octopusOutputPath, String genericOutputPath, String houseId, IJobEngine jobEngine,\r
+                       IJobRuntime jobRuntime) {\r
+               check(trafficOutputPath, octopusOutputPath, genericOutputPath, houseId);\r
 \r
-               try {\r
-               } catch (Exception e) {\r
-                       logger.catching(e);\r
+               String id = houseId.toUpperCase();\r
+               MetadataType mdType = GuessMetadataType(id);\r
+               String targetPath = null;\r
+               switch (mdType) {\r
+               case GENERIC:\r
+                       targetPath = genericOutputPath;\r
+                       break;\r
+               case OCTOPUS:\r
+                       targetPath = octopusOutputPath;\r
+                       break;\r
+               case TRAFFIC:\r
+                       targetPath = genericOutputPath;\r
+                       break;\r
                }\r
+               String targetNamePattern = houseId + TARGETNAMEPATTERN;\r
                return new Object[] { targetPath, targetNamePattern };\r
        }\r
 \r
+       private MetadataType GuessMetadataType(String id) {\r
+               if (id.matches(REGEXP_TRAFFIC))\r
+                       return MetadataType.TRAFFIC;\r
+               if (id.matches(REGEXP_OCTOPUSPLACEHOLDERID))\r
+                       return MetadataType.OCTOPUS;\r
+               if (id.matches(REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID))\r
+                       return MetadataType.OCTOPUS;\r
+               return MetadataType.GENERIC;\r
+       }\r
+\r
 }\r
index 6077455097f01fd10397a74dc6b072327ff23b7d..a82c3cd5bf594888da02133d8cf32357ada22001 100644 (file)
@@ -5,7 +5,9 @@ import java.util.List;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
 \r
+import user.commons.MediaCubeMarker;\r
 import user.commons.RemoteFile;\r
 import user.commons.StoreUri;\r
 import user.commons.remotestore.IProgressEventListener;\r
@@ -28,7 +30,8 @@ public class TSMRestoreStep extends JobStep {
        private String sourceFileName;\r
 \r
        @StepEntry\r
-       public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+       public Object[] execute(Media mediaCubeMedia, String targetPath, String targetNamePattern, String successRecipient, IJobEngine jobEngine,\r
+                       IJobRuntime jobRuntime) throws Exception {\r
                setAndCheck(mediaCubeMedia, targetPath, targetNamePattern, jobEngine);\r
                try {\r
                        //TODO check file existance?\r
@@ -52,17 +55,19 @@ public class TSMRestoreStep extends JobStep {
                        logger.catching(e);\r
                        throw e;\r
                }\r
+\r
+               Marker marker = StringUtils.isBlank(successRecipient) ? getMarker() : new MediaCubeMarker(successRecipient);\r
+               logger.info(marker, "");\r
                return null;\r
        }\r
 \r
-       private String getSourceFileName(Media mediaCubeMedia, Store targetStore) {\r
+       private String getSourceFileName(Media mediaCubeMedia, Store store) {\r
                List<MediaFile> mediaFiles = mediaCubeMedia.getMediaFiles();\r
                if (mediaFiles == null)\r
                        return null;\r
                for (MediaFile mediaFile : mediaFiles) {\r
-                       if (mediaFile.getStore().getId() == targetStore.getId()) {\r
+                       if (mediaFile.getStore().getId() == store.getId())\r
                                return mediaFile.getRelativePath();\r
-                       }\r
                }\r
                return null;\r
        }\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/UserNotificationStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/UserNotificationStep.java
new file mode 100644 (file)
index 0000000..0886c95
--- /dev/null
@@ -0,0 +1,19 @@
+package user.jobengine.server.steps;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
+import user.commons.MediaCubeMarker;\r
+\r
+public class UserNotificationStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+\r
+       @StepEntry\r
+       public Object[] execute(String to, String notification) {\r
+               if (StringUtils.isNotBlank(to) && StringUtils.isNotBlank(notification))\r
+                       logger.info(new MediaCubeMarker(to), notification);\r
+               return null;\r
+       }\r
+\r
+}\r
index f2202b803b6478402580dd89170726dc94e562bd..9e794f6ec87fbcdf91a4daa07bcf024ca8731e35 100644 (file)
@@ -11,8 +11,8 @@
            </listitem>\r
        </template>\r
        </listbox>\r
-    <hbox width="100%" pack="center">\r
-        <button id="closeButton" label="Bezárás" onClick="@command('close')" />\r
+    <hbox width="100%" pack="tight">\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
diff --git a/server/user.jobengine.osgi.server/pages/retrieveselector.zul b/server/user.jobengine.osgi.server/pages/retrieveselector.zul
new file mode 100644 (file)
index 0000000..fc98246
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<window id="resultWin" title="Visszatöltés azonosító" width="500px" border="normal" apply="org.zkoss.bind.BindComposer" viewModel="@id('jlm') @init('user.jobengine.zk.model.RetrieveSelectorModel')">\r
+       <grid>\r
+               <columns>\r
+                       <column width="120px" />\r
+                       <column width="100%"/>\r
+               </columns>\r
+               <rows>\r
+                       <row>\r
+                               <label value="Azonosító:" />\r
+                               <textbox value="@bind(jlm.houseId)" width="100%" tabindex="1" constraint="no empty: Kérem adjon meg egy TRAFFIC vagy egy OCTOPUS azonosítót!"/>\r
+                       </row>\r
+                       <row>\r
+                               <label value="Értesítési cím:"/>\r
+                               <textbox value="@bind(jlm.email)" width="100%" tabindex="2" constraint="/.+@.+\.[a-z]+/: Kérem adjon meg egy email címet!" />\r
+                       </row>\r
+               </rows>\r
+       </grid>\r
+       <hbox width="100%" pack="right">\r
+        <button id="closeButton" label="Mégsem" onClick="@command('close')" />\r
+        <button id="executeButton" label="Végrehajtás" onClick="@command('execute')" />\r
+    </hbox>\r
+</window>\r
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/RetrieveSelectorModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/RetrieveSelectorModel.java
new file mode 100644 (file)
index 0000000..00dd97f
--- /dev/null
@@ -0,0 +1,96 @@
+package user.jobengine.zk.model;\r
+\r
+import java.util.Map;\r
+\r
+import org.apache.commons.lang.StringUtils;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\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.util.resource.Labels;\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.Messagebox;\r
+import org.zkoss.zul.Window;\r
+\r
+import user.commons.ListUtils;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.server.IJobEngine;\r
+import user.jobengine.server.IJobRuntime;\r
+import user.jobengine.server.JobEngine;\r
+\r
+public class RetrieveSelectorModel extends BaseModel {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String MEDIACUBEMEDIA = "mediaCubeMedia";\r
+       private static final String SUCCESSRECIPIENT = "successRecipient";\r
+       private static final String GENERICOUTPUTPATH = "genericOutputPath";\r
+       private static final String OCTOPUSOUTPUTPATH = "octopusOutputPath";\r
+       private static final String TRAFFICOUTPUTPATH = "trafficOutputPath";\r
+       private static final String HOUSEID = "houseId";\r
+       private static final String RESTORE = "Visszatöltés";\r
+       private static final String JOBTEMPLATE = "retrieve-ondemand.xml";\r
+\r
+       @Wire("#resultWin")\r
+       private Window resultWin;\r
+       private Media selectedMedia;\r
+       private String houseId;\r
+       private String email;\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
+       @Command\r
+       public void execute() {\r
+               try {\r
+                       String trafficOutputPath = "/mnt/ISILON/PLAYOUT_NLE";\r
+                       String octopusOutputPath = "/mnt/ISILON/OCTOPUS";\r
+                       String genericOutputPath = "/mnt/ISILON/RESTORE";\r
+                       if (StringUtils.isBlank(houseId))\r
+                               throw new Exception("Az azonosító megadása kötelező!");\r
+                       Map<String, Object> parameters = ListUtils.asMap(TRAFFICOUTPUTPATH, trafficOutputPath, OCTOPUSOUTPUTPATH, octopusOutputPath, GENERICOUTPUTPATH,\r
+                                       genericOutputPath, MEDIACUBEMEDIA, this.selectedMedia, HOUSEID, houseId, SUCCESSRECIPIENT, email);\r
+                       IJobEngine jobEngine = JobEngine.getInstance();\r
+                       IJobRuntime runtime1 = jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
+                       close();\r
+               } catch (Exception e) {\r
+                       Messagebox.show(e.getMessage(), Labels.getLabel("dialogger.warning"), Messagebox.OK, Messagebox.ERROR, defaultOKEventListener);\r
+                       logger.catching(e);\r
+               }\r
+\r
+       }\r
+\r
+       public String getEmail() {\r
+               return email;\r
+       }\r
+\r
+       public String getHouseId() {\r
+               return houseId;\r
+       }\r
+\r
+       @Init\r
+       public void init() {\r
+               Map<?, ?> args = Executions.getCurrent().getArg();\r
+               this.selectedMedia = (Media) args.get(MEDIACUBEMEDIA);\r
+       }\r
+\r
+       public void setEmail(String email) {\r
+               this.email = email;\r
+       }\r
+\r
+       public void setHouseId(String houseId) {\r
+               this.houseId = houseId;\r
+       }\r
+\r
+}
\ No newline at end of file
index 96383ab17d79b400493f68699015503faf449aa5..3fd3d1a3277448baf57b54168bab1936b117ab5a 100644 (file)
@@ -2,6 +2,7 @@ package user.jobengine.zk.model;
 \r
 import java.io.File;\r
 import java.nio.file.Paths;\r
+import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
 \r
@@ -11,31 +12,21 @@ import org.zkoss.bind.annotation.BindingParam;
 import org.zkoss.bind.annotation.Command;\r
 import org.zkoss.bind.annotation.NotifyChange;\r
 import org.zkoss.util.resource.Labels;\r
+import org.zkoss.zk.ui.Executions;\r
 import org.zkoss.zul.Messagebox;\r
+import org.zkoss.zul.Window;\r
 \r
-import user.commons.ListUtils;\r
 import user.commons.StoreUri;\r
 import user.commons.remotestore.RemoteStoreProtocol;\r
 import user.jobengine.db.Item;\r
 import user.jobengine.db.Media;\r
 import user.jobengine.db.MediaFile;\r
 import user.jobengine.db.Store;\r
-import user.jobengine.server.IJobEngine;\r
-import user.jobengine.server.IJobRuntime;\r
-import user.jobengine.server.JobEngine;\r
 \r
 public class SearchModel extends BaseModel {\r
-       private static final String TARGET_NAME_PATTERN = "targetNamePattern";\r
-\r
-       private static final String RESTORE = "Visszatöltés";\r
-\r
-       private static final String JOBTEMPLATE = "retrieve-material.xml";\r
-\r
-       private static final String MEDIA_CUBE_MEDIA = "mediaCubeMedia";\r
-\r
-       private static final String TARGET_PATH = "targetPath";\r
-\r
        private static final Logger logger = LogManager.getLogger();\r
+       private static final String MEDIACUBEMEDIA = "mediaCubeMedia";\r
+       private static final String PAGES_RETRIEVESELECTOR_ZUL = "/pages/retrieveselector.zul";\r
 \r
        private String searchValue = null;\r
        protected CachedListModel searchResult = null;\r
@@ -45,6 +36,7 @@ public class SearchModel extends BaseModel {
        @Command\r
        @NotifyChange({ "mold", "paging", "searchResult", "selectedItem", "selectedMedia", "hasLowresMediaFile" })\r
        public void doSearch() {\r
+               Messagebox.show(Labels.getLabel("error.search"), Labels.getLabel("dialogger.warning"), Messagebox.OK, Messagebox.ERROR, defaultOKEventListener);\r
                try {\r
                        //do search ++++++++\r
                        this.selectedItem = null;\r
@@ -63,17 +55,12 @@ public class SearchModel extends BaseModel {
 \r
        @Command\r
        public void downloadMedia() {\r
-               if (getHasTSMMediaFile()) {\r
-                       try {\r
-                               Map<String, Object> parameters = ListUtils.asMap(MEDIA_CUBE_MEDIA, this.selectedMedia, TARGET_PATH, "/mnt/ISILON/RESTORE", TARGET_NAME_PATTERN,\r
-                                               "%s");\r
-                               IJobEngine jobEngine = JobEngine.getInstance();\r
-                               IJobRuntime runtime1 = jobEngine.submit(JOBTEMPLATE, RESTORE, parameters);\r
-                       } catch (Exception exc) {\r
-                               logger.error("", exc);\r
-                       }\r
-               }\r
-\r
+               if (!getHasTSMMediaFile())\r
+                       return;\r
+               Map<String, Object> arguments = new HashMap<String, Object>();\r
+               arguments.put(MEDIACUBEMEDIA, this.selectedMedia);\r
+               Window window = (Window) Executions.createComponents(PAGES_RETRIEVESELECTOR_ZUL, null, arguments);\r
+               window.doModal();\r
        }\r
 \r
        public boolean getHasLowresMediaFile() {\r
@@ -153,7 +140,7 @@ public class SearchModel extends BaseModel {
                        }\r
                        return ret;\r
                }\r
-       \r
+\r
                public boolean getHasSelectedMediaFile(){\r
                        String mediaFilePath =getMediaFilePath();\r
                        return (mediaFilePath != null && !"".equals(mediaFilePath));\r
index bb970b1ca4297863c8f6393a13e4ab4a650e8532..fd03db325a2358f45891c8a2cc366bf25b44f0e7 100644 (file)
@@ -1,6 +1,8 @@
 package user.jobengine.server.steps;\r
 \r
 import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertFalse;\r
+import static org.junit.Assert.assertTrue;\r
 \r
 import java.util.concurrent.Semaphore;\r
 \r
@@ -14,6 +16,12 @@ import user.jobengine.server.Program;
 \r
 public class JobStepTest {\r
 \r
+       private static final String REGEXP_TRAFFIC = "^[MRP]{1}[0-9]{6}[A-Z]{1}$";\r
+\r
+       private static final String REGEXP_OCTOPUSPLACEHOLDERID = "^[0-9]+_[0-9]+$";\r
+\r
+       private static final String REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID = "^[0-9]+_[0-9]+-[0-9]{3}$";\r
+\r
        @Test\r
        public void testBatchRun() throws Exception {\r
                int c = 2;\r
@@ -43,6 +51,29 @@ public class JobStepTest {
                barrier.acquire(c);\r
        }\r
 \r
+       @Test\r
+       public void testRegexpOctopus() throws Exception {\r
+               assertTrue("000111_12".matches(REGEXP_OCTOPUSPLACEHOLDERID));\r
+               assertTrue("000111_12-000".matches(REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID));\r
+               assertTrue("123456_345".matches(REGEXP_OCTOPUSPLACEHOLDERID));\r
+               assertFalse("000111_12-00".matches(REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID));\r
+               assertFalse("123456-345".matches(REGEXP_OCTOPUSPLACEHOLDERID));\r
+               assertFalse("1234565".matches(REGEXP_OCTOPUSPLACEHOLDERID));\r
+               assertFalse("M000111A".matches(REGEXP_OCTOPUSPLACEHOLDERID));\r
+       }\r
+\r
+       @Test\r
+       public void testRegexpTraffic() throws Exception {\r
+               assertTrue("M000111A".matches(REGEXP_TRAFFIC));\r
+               assertTrue("P000111A".matches(REGEXP_TRAFFIC));\r
+               assertTrue("R000111A".matches(REGEXP_TRAFFIC));\r
+               assertFalse("m000111A".matches(REGEXP_TRAFFIC));\r
+               assertFalse("MA00111A".matches(REGEXP_TRAFFIC));\r
+               assertFalse("MA00111.".matches(REGEXP_TRAFFIC));\r
+               assertFalse("MA00111A1".matches(REGEXP_TRAFFIC));\r
+               assertFalse("P0001111A".matches(REGEXP_TRAFFIC));\r
+       }\r
+\r
        @Test\r
        public void testRun() throws Exception {\r
                // Fixture\r