git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 7 Aug 2019 11:35:39 +0000 (11:35 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 7 Aug 2019 11:35:39 +0000 (11:35 +0000)
40 files changed:
client/MXFFileParser/Properties/AssemblyInfo.cs
client/Maestro/Configuration/-UJ-configuration-tqc-check.json [moved from client/Maestro/Configuration/UJ-configuration-tqc-check.json with 100% similarity]
client/Maestro/Configuration/-configuration - Copy.json [moved from client/Maestro/Configuration/configuration - Copy.json with 100% similarity]
client/Maestro/Configuration/-configuration.json [moved from client/Maestro/Configuration/configuration.json with 100% similarity]
client/Maestro/Configuration/ACTIVE-configuration-promo.json [new file with mode: 0644]
client/Maestro/Configuration/dani-teszt-vezerlo.json [new file with mode: 0644]
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.resx
client/Maestro/Properties/AssemblyInfo.cs
server/-configuration/run-mediacube-server.launch
server/-dependencies/jobengine.target
server/-dependencies/pom.xml
server/-modules/pom.xml
server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/api/ClipEventListener.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/api/MediaListener.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/api/samples/ListMetabaseContents.java
server/user.jobengine.osgi.commons/src/user/commons/nexio/server/protocol/TCPConnection.java
server/user.jobengine.osgi.server/WEB-INF/web.xml
server/user.jobengine.osgi.server/pages/menu.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/JobListModel.java
server/user.mediacube.metadata/.classpath [new file with mode: 0644]
server/user.mediacube.metadata/.project [new file with mode: 0644]
server/user.mediacube.metadata/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
server/user.mediacube.metadata/META-INF/MANIFEST.MF [new file with mode: 0644]
server/user.mediacube.metadata/build.properties [new file with mode: 0644]
server/user.mediacube.metadata/pom.xml [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataListOptions.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataProvider.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderFactory.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderType.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/MetadataType.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java [new file with mode: 0644]
server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java [new file with mode: 0644]

index 95a916f9e6164393973c71ba2ec55329044fc7ac..7bf29ca644458b84436693419130d20f01693510 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.2.0.5")]\r
-[assembly: AssemblyFileVersion("2.2.0.5")]\r
+[assembly: AssemblyVersion("2.2.0.6")]\r
+[assembly: AssemblyFileVersion("2.2.0.6")]\r
diff --git a/client/Maestro/Configuration/ACTIVE-configuration-promo.json b/client/Maestro/Configuration/ACTIVE-configuration-promo.json
new file mode 100644 (file)
index 0000000..30d4f39
--- /dev/null
@@ -0,0 +1,140 @@
+{\r
+  "title": "PROMO SZAKOSZTÁLY",\r
+  "active": true,\r
+  "startInTray": false,\r
+  "enableCustomMetadataId": true,\r
+  "defaultWindowColor": "#4DB6AC",\r
+  "partialWindowColor": "#00796B",\r
+  "player": {\r
+    "enabled": true,\r
+    "autoStart": false,\r
+    "segmentEditor": true\r
+  },\r
+  "source": {\r
+    "$type": "UNCSource",\r
+    "filter": "avi,wav,mxf",\r
+    "foldersAutoExpand": true,\r
+    "local": {\r
+      "address": "file://c:/_video"\r
+    }\r
+  },\r
+  "metadatas": [\r
+    {\r
+      "$type": "OctopusMetadata",\r
+      "disableStoryCheck": true,\r
+      "server": {\r
+        "address": "http://10.10.1.27/services/rest/octopus/",\r
+        "timeout": 1000\r
+      },\r
+      "projectSettings": {\r
+        "templateRoot": {\r
+          "address": "file://10.10.1.105/BRAAVOS/.MAESTRO",\r
+          "userName": "mediacube",\r
+          "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+          "timeout": 1000\r
+        },\r
+        "templateName": "ALAPTIMELINE.ezp",\r
+        "target": {\r
+          "label": "Projekt létrehozása",\r
+          "processor": "UNCTargetProcessor",\r
+          "killDateDays": 14,\r
+          "outputFormat": "%ID%",\r
+          "subFolderFormat": "%IDROOT%-%TEXT%/PROJECT",\r
+          "disableFileVersioning": true,\r
+          "remote": {\r
+            "address": "file://c:/_video/PROJECTS",\r
+            "userName": "mediacube",\r
+            "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+            "timeout": 1000\r
+          }\r
+        },\r
+        "disableOpenProject": false,\r
+        "disableOpenSourceFolder": false\r
+      }\r
+    },\r
+    {\r
+      "$type": "TrafficMetadata",\r
+      "server": {\r
+        "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
+        "userName": "MAM",\r
+        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
+        "timeout": 1000\r
+      },\r
+      "projectSettings": {\r
+        "templateRoot": {\r
+          "address": "file://10.10.1.105/BRAAVOS/PROMO_NLE/!PROMO_MINTATIMELINE_190404/",\r
+          "userName": "mediacube",\r
+          "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+          "timeout": 1000\r
+        },\r
+        "templateName": "PROMO_MINTATIMELINE_190404.ezp",\r
+        "target": {\r
+          "label": "Projekt létrehozása",\r
+          "processor": "UNCTargetProcessor",\r
+          "outputFormat": "%ID%",\r
+          "subFolderFormat": "%IDROOT%-%TEXT%/PROJECT",\r
+          "disableFileVersioning": true,\r
+          "killDateDays": 14,\r
+          "remote": {\r
+            "address": "file://c:/_video/PROJECTS",\r
+            "userName": "mediacube",\r
+            "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+            "timeout": 1000\r
+          }\r
+        },\r
+        "disableOpenProject": false,\r
+        "disableOpenSourceFolder": false\r
+      }\r
+    },\r
+    {\r
+      "$type": "MediaCubeMetadata",\r
+      "server": {\r
+        "address": "http://10.10.1.27/services/rest/jobengine/",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+  ],\r
+  "targets": [\r
+    {\r
+      "label": "TQC promo",\r
+      "processor": "FTPTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "tag": "Betöltés",\r
+      "killDateDays": 0,\r
+      "saveArchiveMetadata": false,\r
+      "remote": {\r
+        "address": "ftp://10.10.1.105/TQC/PROMO",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "TQC reklám",\r
+      "processor": "FTPTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "tag": "Betöltés",\r
+      "killDateDays": 0,\r
+      "saveArchiveMetadata": false,\r
+      "remote": {\r
+        "address": "ftp://10.10.1.105/TQC/REKLAM",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Archiválás",\r
+      "processor": "FTPTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "tag": "Archiválás",\r
+      "saveArchiveMetadata": true,\r
+      "remote": {\r
+        "address": "ftp://10.10.1.105/ARCHIVE",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+  ]\r
+}\r
diff --git a/client/Maestro/Configuration/dani-teszt-vezerlo.json b/client/Maestro/Configuration/dani-teszt-vezerlo.json
new file mode 100644 (file)
index 0000000..a9ac65b
--- /dev/null
@@ -0,0 +1,93 @@
+{\r
+  "title": "Vezérlő",\r
+  "active": true,\r
+  "startInTray": false,\r
+  "enableCustomMetadataId": true,\r
+  "filter": "avi",\r
+  "player": {\r
+  },\r
+  "source": {\r
+    "$type": "NEXIOSource",\r
+    "local": {\r
+      "address": "ws://10.10.1.27/services/nexio"\r
+    },\r
+    "remote": {\r
+      "address": "ftp://10.10.1.55:2098",\r
+      "userName": "administrator",\r
+      "password": "+QtkeQdCTiOvZOgK/kUND4pO4/D+//r7ZIyluwMMdiqMEgO8iJErAG10ooWhPfiljQeXrdeyMzo7gWEZtcWpNSomGeDIbdMyQwtpqmMo1VEM3A27ZfzigY09YD46ECRh"\r
+    }\r
+  },\r
+  "metadatas": [\r
+    {\r
+      "$type": "OctopusMetadata",\r
+      "server": {\r
+        "address": "http://10.10.1.27/services/rest/octopus",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "$type": "TrafficMetadata",\r
+      "server": {\r
+        "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
+        "userName": "MAM",\r
+        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "$type": "MediaCubeMetadata",\r
+      "server": {\r
+        "address": "http://10.10.1.27/services/rest/jobengine",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+  ],\r
+  "targets": [\r
+    {\r
+      "label": "T1",\r
+      "processor": "FXPTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "tag": "Archiválás",\r
+      "saveArchiveMetadata": true,\r
+      "remote": {\r
+      "address": "ftp://10.10.1.105/TESZT",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Jó Reggelt Archiválás",\r
+      "processor": "FXPTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "sourceNexioAgency": "ARCHIVED_JOREGG",\r
+      "sourceNexioKillDateDays": 3, \r
+      "tag": "Archiválás",\r
+      "saveArchiveMetadata": true,\r
+      "remote": {\r
+      "address": "ftp://10.10.1.105/TESZT",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "CLEAN Archiválás",\r
+      "processor": "FXPTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "sourceNexioAgency": "ARCHIVED_CLEAN",\r
+      "sourceNexioKillDateDays": 8, \r
+      "tag": "Archiválás",\r
+      "saveArchiveMetadata": true,\r
+      "remote": {\r
+      "address": "ftp://10.10.1.105/TESZT",\r
+        "userName": "mediacube",\r
+        "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+        "timeout": 1000\r
+      }\r
+\r
+    }\r
+  ]\r
+}\r
index a55d12db132a1007cb35931058cd6eefdffd9615..1c93d4bc167af6c704dcbcc2e52c82c9369a5ead 100644 (file)
     <Compile Include="MaestroForm.Source.cs">\r
       <SubType>Form</SubType>\r
     </Compile>\r
-    <None Include="Configuration\configuration - Copy.json">\r
+    <None Include="Configuration\ACTIVE-configuration-promo.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\configuration.json">\r
+    <None Include="Configuration\-configuration - Copy.json">\r
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+    </None>\r
+    <None Include="Configuration\-configuration.json">\r
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+    </None>\r
+    <None Include="Configuration\dani-teszt-vezerlo.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
     <None Include="Configuration\global.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\UJ-configuration-tqc-check.json">\r
+    <None Include="Configuration\-UJ-configuration-tqc-check.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
     <None Include="Connected Services\packages.config" />\r
index b5bf3046c32e0681a995f3059d9bd17c089cbc01..dafec937d1e8644614cb77949777367e48a7f15b 100644 (file)
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w\r
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS\r
-        CAAAAk1TRnQBSQFMAgEBAgEAAYABAgGAAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
+        CAAAAk1TRnQBSQFMAgEBAgEAAZABAgGQAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
         AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA\r
         AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5\r
         AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA\r
index da87d941492975462121bc87022ca43f0979fc0f..0bb442fabddf5bbd319c57c7252364df5d101a48 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.9.5")]\r
-[assembly: AssemblyFileVersion("2.0.9.5")]\r
+[assembly: AssemblyVersion("2.0.9.6")]\r
+[assembly: AssemblyFileVersion("2.0.9.6")]\r
index c0b215726a5d18fd63d00cd560b713fb97e3e11c..994fd7956de8408c338ad49adf7a28bc1b83f5ae 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.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.228.198.1:50000/mediaarc: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/&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;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#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.228.198.1:50000/mccache: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.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Djobengine.maestro.config=&quot;${workspace_loc}/-configuration/maestro.json&quot;&#13;&#10;-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;&#13;&#10;-Djobengine.nexio.db.user=sa&#13;&#10;-Djobengine.nexio.db.password=resolve&#13;&#10;-Dnexio.host=192.168.0.12&#13;&#10;-Djobengine.nexio.name=testnexioclips&#13;&#10;-Dnexio.useMOSGateway=false&#13;&#10;-Dnexio.disable=false&#13;&#10;-Djobengine.octopus.rundowns.name=rundowns181026&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders181026&#13;&#10;-Djobengine.octopus.stories.name=stories181026&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\r
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Djavax.ws.rs.ext.RuntimeDelegate=org.jboss.resteasy.spi.ResteasyProviderFactory&#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.228.198.1:50000/mediaarc: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/&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;-Dorg.eclipse.jetty.webapp.basetempdir=c:\temp\jetty&#13;&#10;-Djava.io.tmpdir=c:\temp\jetty&#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.228.198.1:50000/mccache: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.zenium&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.json&quot;&#13;&#10;-Djobengine.maestro.config=&quot;${workspace_loc}/-configuration/maestro.json&quot;&#13;&#10;-Djobengine.nexio.db.url=jdbc:sqlserver://10.10.1.59:1433;databaseName=NXDB;&#13;&#10;-Djobengine.nexio.db.user=sa&#13;&#10;-Djobengine.nexio.db.password=resolve&#13;&#10;-Djobengine.planair.db.url=jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;&#13;&#10;-Djobengine.planair.db.user=MAM&#13;&#10;-Djobengine.planair.db.password=Echotv.hu&#13;&#10;-Dnexio.host=192.168.0.12&#13;&#10;-Djobengine.nexio.name=testnexioclips&#13;&#10;-Dnexio.useMOSGateway=false&#13;&#10;-Dnexio.disable=true&#13;&#10;-Djobengine.octopus.rundowns.name=rundowns181026&#13;&#10;-Djobengine.octopus.storyfolders.name=storyfolders181026&#13;&#10;-Djobengine.octopus.stories.name=stories181026&#13;&#10;-Dmediacube.auth.location=&quot;${workspace_loc}/-configuration/mediacube-auth.properties&quot;"/>\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,humble.video.noarch@default:default,humble.video.windows@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.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.objectweb.asm.commons@default:default,org.objectweb.asm.tree@default:default,org.objectweb.asm@default:default,slf4j.api@default:default,slf4j.simple@default:false"/>\r
index 61066195432df0f62fb3ecd060c160bc952549aa..9d95d521790bc8201ec43fdab54a9741a52646bd 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<?pde version="3.8"?><target name="JobEngine" sequenceNumber="289">\r
+<?pde version="3.8"?><target name="JobEngine" sequenceNumber="293">\r
 <locations>\r
 <location path="${eclipse_home}" type="Profile"/>\r
 <location path="${workspace_loc}/-dependencies/target/repository/plugins" type="Directory"/>\r
 <plugin id="org.junit"/>\r
 <plugin id="org.mortbay.jasper.apache-jsp"/>\r
 <plugin id="org.mortbay.jasper.apache-jsp.source"/>\r
+<plugin id="org.mybatis.mybatis"/>\r
 <plugin id="org.objectweb.asm" version="5.0.1"/>\r
 <plugin id="org.objectweb.asm.commons"/>\r
 <plugin id="org.objectweb.asm.tree" version="5.0.1"/>\r
index 89bfc1247a425ee1b4717f828296a0e88aa87421..4b89aaca30099dbfe40c8700a647ff9bda174bc2 100644 (file)
                                                <id>default-cli</id>\r
                                                <configuration>\r
                                                        <artifacts>\r
+                                                               <artifact>\r
+                                                                       <id>org.mybatis:mybatis:3.5.2</id>\r
+                                                               </artifact>\r
+                                                       \r
                                                                <!-- <artifact> -->\r
                                                                <!-- <id>org.apache.solr:solr-sorlj:7.5.0</id> -->\r
                                                                <!-- </artifact> -->\r
index 7a85d6cb5ebed30edfc6923d8177390f12113ab1..7dc37ce90d55a775b2ec050d04892a4574af5bdc 100644 (file)
@@ -7,6 +7,7 @@
        <version>1.0.0</version>\r
        <packaging>pom</packaging>\r
        <modules>\r
+               <module>../user.mediacube.metadata</module>\r
                <module>../user.jobengine.executors</module>\r
                <module>../user.jobengine.osgi.commons</module>\r
                <module>../user.jobengine.osgi.db</module>\r
index e6c0ddaf3d830bd70cf83f426d266f6eae9fbf1b..05b5b923a36ca028ee0b46fd6c42ef7917c16e0d 100644 (file)
@@ -9,6 +9,7 @@ import com.ibm.nosql.json.api.BasicDBObject;
 import com.ibm.nosql.json.api.DB;\r
 import com.ibm.nosql.json.api.DBCollection;\r
 \r
+import user.commons.MediaCubeMarker;\r
 import user.commons.nexio.api.Clip;\r
 import user.commons.nexio.api.ClipEvent;\r
 import user.commons.nexio.api.ClipEventListener;\r
@@ -81,6 +82,7 @@ public class NexioDispatcher implements ClipEventListener {
        }\r
 \r
        private boolean restartInProgress;\r
+       private Object lock = new Object();\r
 \r
        private INexioChangeListener nexioChangeListener;\r
        private DB db;\r
@@ -127,9 +129,8 @@ public class NexioDispatcher implements ClipEventListener {
                                jsClip.put(ID, evt.getClip().getId().get());\r
                                removeDeleted(jsClip);\r
                        } else if (evt.getEventType() == ClipEventType.LISTENER_RESTART_NEEDED) {\r
-                               shutdown();\r
-                               startup();\r
-                               logger.info("Nexio dispatcher restarted");\r
+                               logger.info(new MediaCubeMarker(), "In progress {}", isRestartInProgress());\r
+                               logger.info(new MediaCubeMarker(), "A kommunikácó a NEXIO eszközzel megszakadt. A szinkronizáció újraindítása szükséges.");\r
                        }\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
@@ -248,7 +249,6 @@ public class NexioDispatcher implements ClipEventListener {
                                logger.info("Initial clip import completed");\r
                                Mediabase mediabase = NexioDispatcher.this.controller.getMediabase();\r
                                mediaListener = mediabase.createMediaListener(disabled, NexioDispatcher.this);\r
-                               setRestartInProgress(false);\r
 \r
                                try {\r
                                        nexioChangeListener.refreshClients();\r
@@ -257,6 +257,8 @@ public class NexioDispatcher implements ClipEventListener {
                                }\r
 \r
                                mediaListener.startListener();\r
+                               setRestartInProgress(false);\r
+                               logger.info(new MediaCubeMarker(), "Thread progress {}", isRestartInProgress());\r
 \r
                        } catch (Exception e) {\r
                                logger.catching(e);\r
@@ -265,8 +267,10 @@ public class NexioDispatcher implements ClipEventListener {
                worker.start();\r
        }\r
 \r
-       synchronized public boolean isRestartInProgress() {\r
-               return restartInProgress;\r
+       public boolean isRestartInProgress() {\r
+               synchronized (lock) {\r
+                       return restartInProgress;\r
+               }\r
        }\r
 \r
        /*\r
@@ -303,14 +307,14 @@ public class NexioDispatcher implements ClipEventListener {
                }\r
 \r
                /*\r
-               \r
+\r
                                int c = connection.read(buffer, 0, 2);\r
                                //2 bytes hosszan az idokozben hozzaadott id-k szamossaga\r
                                if (c < 2) {\r
                                        throw new ProtocolException("c, 2, 2");\r
                                }\r
                                //MSB, LSB\r
-               \r
+\r
                                return nofIds;\r
                        */\r
                return ret;\r
@@ -342,9 +346,19 @@ public class NexioDispatcher implements ClipEventListener {
        }\r
 \r
        @Override\r
-       public void restart() {\r
-               logger.info("Restart (already in progress {})", restartInProgress);\r
+       public int restart() {\r
+               if (disabled) {\r
+                       logger.info("Nexio service is disabled");\r
+                       return 1;\r
+               }\r
+               if (isRestartInProgress()) {\r
+                       logger.info("Nexio service restart is in progress");\r
+                       return 2;\r
+               }\r
+               setRestartInProgress(true);\r
                shutdown();\r
+               startup();\r
+               return controller == null ? 3 : 0;\r
        }\r
 \r
        private void saveClipIntoMongo(BasicDBObject clip) {\r
@@ -382,20 +396,14 @@ public class NexioDispatcher implements ClipEventListener {
                this.nexioChangeListener = nexioChangeListener;\r
        }\r
 \r
-       synchronized public void setRestartInProgress(boolean restartInProgress) {\r
-               this.restartInProgress = restartInProgress;\r
-               logger.info("Restart in progress {}", isRestartInProgress());\r
-       }\r
-\r
-       public void shutdown() {\r
-               if (disabled)\r
-                       return;\r
-               if (isRestartInProgress()) {\r
-                       return;\r
+       public void setRestartInProgress(boolean restartInProgress) {\r
+               synchronized (lock) {\r
+                       this.restartInProgress = restartInProgress;\r
                }\r
+       }\r
 \r
+       private void shutdown() {\r
                logger.info("Shutting down Nexio service");\r
-               setRestartInProgress(true);\r
                if (mediaListener != null) {\r
                        mediaListener.disconnect();\r
                        mediaListener = null;\r
@@ -407,18 +415,14 @@ public class NexioDispatcher implements ClipEventListener {
        }\r
 \r
        public void startup() {\r
-               if (disabled) {\r
-                       logger.info("Nexio service is disabled");\r
-                       return;\r
-               }\r
-\r
                logger.info("Starting up Nexio service");\r
-               setRestartInProgress(true);\r
                this.controller = new Controller(NEXIO_HOST);\r
                try {\r
                        this.controller.connect();\r
                } catch (Exception e) {\r
-                       logger.catching(e);\r
+                       logger.error("Can not start NEXIO sync", e);\r
+                       this.controller = null;\r
+                       this.mediaListener = null;\r
                        setRestartInProgress(false);\r
                        return;\r
                }\r
index a3002c3dc83064d97e3d3f87a78a41fd1d55786d..583ad55f69c39b4abb6d0d6859e5ba5cb7024376 100644 (file)
@@ -3,5 +3,5 @@ package user.commons.nexio.api;
 public interface ClipEventListener {\r
        public void clipEventPerformed(ClipEvent evt);\r
 \r
-       void restart();\r
+       int restart();\r
 }\r
index 52cfbca3c75223649c4b81b12c9aa519acbd2a07..661e56fb5fef41bed0398e221b076953f2244e8e 100644 (file)
@@ -5,7 +5,6 @@ import java.util.ArrayList;
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
-import user.commons.nexio.server.protocol.Connection;\r
 import user.commons.nexio.server.protocol.Id;\r
 import user.commons.nexio.server.protocol.TCPConnection;\r
 \r
@@ -27,6 +26,8 @@ public class MediaListener {
        //00 00 00 01           0x00                    IDs in Added List               BC=0x01, NN=0x00, DATA=none\r
        //00 00 00 02           0x01                    IDs in Deleted List             BC=0x01, NN=0x01, DATA=none\r
        static private final byte[] CHANGE_NOTIFICATION_REQ = { (byte) 0xC4, (byte) 0xA5, 0, 0, 0, 0x03 }; //C4A5 + MASK=ADD+DELETE\r
+       static private final byte[] PING = { (byte) 0x00, (byte) 0x11 }; //0011 -> 1211 = ok\r
+       static private final String PING_OK = "1211";\r
        //10 01 response immediately\r
        static private final byte[] ACK = { (byte) 0x10, (byte) 0x01 };\r
        //CF A6 BC NN DATA              NN=0 -> IDs are in added list, NN=1 -> IDs are in deleted list\r
@@ -62,7 +63,7 @@ public class MediaListener {
        private Mediabase mediaBase = null;\r
        private int nexioPort = 557;\r
        private String nexioHost = null;\r
-       private Connection connection = null;\r
+       private TCPConnection connection = null;\r
        private ArrayList<Integer> notificationList = new ArrayList<Integer>();\r
 \r
        public MediaListener(Mediabase _mediaBase, String _nexioHost, int _nexioPort) {\r
@@ -100,7 +101,7 @@ public class MediaListener {
        }\r
 \r
        private void createNexioConnection() throws Exception {\r
-               this.connection = TCPConnection.getInstance(this.nexioHost, this.nexioPort);\r
+               this.connection = (TCPConnection) TCPConnection.getInstance(this.nexioHost, this.nexioPort);\r
                logger.info("NEXIO MediaListener is connected to " + this.nexioHost + ":" + this.nexioPort);\r
        }\r
 \r
@@ -132,17 +133,6 @@ public class MediaListener {
                }\r
        }\r
 \r
-       private void forceRestart() {\r
-               logger.info("MediaListener stopping...");\r
-               try {\r
-                       fireEvent(null, NN_LISTENER_RESTART);\r
-                       //                      if (this.connection != null)\r
-                       //                              this.connection.disconnect();\r
-               } catch (Exception e) {\r
-                       logger.catching(e);\r
-               }\r
-       }\r
-\r
        private void handleNotification(int notificationNumber) throws Exception {\r
                //LIST_FIRST_ID_LIST\r
                /*\r
@@ -166,13 +156,29 @@ public class MediaListener {
 \r
        }\r
 \r
+       public boolean isAlive() {\r
+               boolean result = false;\r
+\r
+               try {\r
+                       writeBytes(PING);\r
+                       byte[] buffer = readBytes(2);\r
+                       result = PING_OK.equals(bytesToHex(buffer));\r
+                       logger.info("Connection is alive: {}", result);\r
+               } catch (Exception e) {\r
+                       logger.error(e);\r
+               }\r
+               return result;\r
+       }\r
+\r
        private void listen() {\r
                try {\r
+                       byte[] buffer;\r
+\r
                        //SEND CHANGE NOTIFICATION REQ\r
                        writeBytes(CHANGE_NOTIFICATION_REQ);\r
+                       buffer = readBytes(2);\r
 \r
                        //ACK\r
-                       byte[] buffer = readBytes(2);\r
                        logger.info("NEXIO MediaListener listeninig");\r
 \r
                        while (true) {\r
@@ -215,9 +221,16 @@ public class MediaListener {
                                }\r
                        }\r
                } catch (Exception e) {\r
-                       //logger.catching(e);\r
-                       logger.error(e.getMessage());\r
-                       forceRestart();\r
+                       logger.catching(e);\r
+                       notifyRestartNeeded();\r
+               }\r
+       }\r
+\r
+       public void notifyRestartNeeded() {\r
+               try {\r
+                       fireEvent(null, NN_LISTENER_RESTART);\r
+               } catch (Exception e) {\r
+                       logger.catching(e);\r
                }\r
        }\r
 \r
index a197e622bd99670a69cd690ecdfe1448e0e9182a..7d52478686159c29beb541cb6065628030c8648b 100644 (file)
@@ -80,52 +80,52 @@ public class ListMetabaseContents implements ClipEventListener {
        public static void main(String[] args) throws UnknownHostException, IOException, ProtocolException, ClipNotFoundException {
                ListMetabaseContents lmc = new ListMetabaseContents();
 
-               /*              
-                               
-                               
+               /*
+
+
                                //MASK REQ                      RESP_NOT_NUM
                                //00 00 00 01           0x00                    IDs in Added List               BC=0x01, NN=0x00, DATA=none
                                //00 00 00 02           0x01                    IDs in Deleted List             BC=0x01, NN=0x01, DATA=none
                                byte[] CHANGE_NOTIFICATION_REQ = { (byte) 0xC4, (byte)0xA5, 0,0,0,0x03};        //+C4A5 + MASK
-               
+
                                //10 01 response immediately
                                byte[] ACK = { (byte) 0x10, (byte)0x01};
-               
-                               //CF A6 BC NN DATA              NN=0 -> IDs are in added list, NN=1 -> IDs are in deleted list  
+
+                               //CF A6 BC NN DATA              NN=0 -> IDs are in added list, NN=1 -> IDs are in deleted list
                                byte[] CHANGE_NOTIFICATION_RESP = { (byte) 0xCF, (byte)0xA6};
-               
-                               //List First ID List (C1 4C)    
+
+                               //List First ID List (C1 4C)
                                byte[] LIST_FIRST_ID_LIST_ADDED =       { (byte) 0xC1, (byte)0x4C, (byte)0x02}; //2 added, 3 deleted
                                byte[] LIST_FIRST_ID_LIST_DELETED = { (byte) 0xC1, (byte)0x4C, (byte)0x03};     //2 added, 3 deleted
-               
-                               //List First ID List (C0 4D)    
+
+                               //List First ID List (C0 4D)
                                byte[] LIST_NEXT_ID_LIST = { (byte) 0xC0, (byte)0x4D};
-                               
-                               
+
+
                                Connection connection = TCPConnection.getInstance(NEXIO_HOST, 557);
                //              connection.write(ID_LIST);
                //              connection.flush();
-               
+
                        connection.write(CHANGE_NOTIFICATION_REQ);
                        connection.flush();
                        //ACK
                        byte[] buffer = new byte[2];
                        int c = connection.read(buffer, 0, 2);
-                       
-                       
+
+
                        while("1".equals("1")){
-                       
+
                                //CHANGE_NOTIFICATION_RESP (blocking read)
                                buffer = new byte[4];
                                c = connection.read(buffer,0,4);                                //CFA6 BC NN -> 0=added, 1=deleted
                                System.out.println("change notification resp: " + bytesToHex(buffer));
-                               
+
                                //ACK sending back
                                connection.write(ACK);
                                connection.flush();
-                       
+
                                //LIST_FIRST_ID_LIST
-                               
+
                                //0x01  Main ID Handle List     D8 4C ID
                                //0x02  ID Handles Added List   D8 4C ID
                                //0x03  ID Handles Deleted List D8 4C ID
@@ -135,7 +135,7 @@ public class ListMetabaseContents implements ClipEventListener {
                                //0x21  Main ID Handle/Extended ID List DF 4C BC ID XID *
                                //0x22  ID Handles/Extended IDs Added List      DF 4C BC ID XID *
                                //0x23  ID Handles/Extended IDs Deleted List    DF 4C BC ID XID *
-                               
+
                                if(buffer[3] == 0){
                                        connection.write(LIST_FIRST_ID_LIST_ADDED);
                                        System.out.println("NN ADDED");
@@ -145,33 +145,33 @@ public class ListMetabaseContents implements ClipEventListener {
                                        System.out.println("NN DELETED");
                                }
                                connection.flush();
-                       
+
                                //READ FIRST ID
                                buffer = new byte[2];
                                c = connection.read(buffer, 0, 2);
                                if("D84C".equals(bytesToHex(buffer))){
                                        System.out.println("reading first id...");
-                                       
+
                                        //added or deleted
                                        buffer = new byte[8];
                                        c = connection.read(buffer, 0, 8);
                                        System.out.println("FIRST ID: " + new String(buffer));
-                               
+
                                        //C0 4D List Next ID List
                                        connection.write(LIST_NEXT_ID_LIST);
                                        connection.flush();
-                                       
+
                                        buffer = new byte[2];
                                        //D04D amikor elfogy
                                        for(connection.read(buffer, 0, 2);      bytesToHex(buffer).equals("D84D");      connection.read(buffer, 0, 2)){
-                       
+
                                                buffer = new byte[8];
                                                c = connection.read(buffer, 0, 8);
                                                System.out.println("NEXT ID: " + new String(buffer));
-                                       
+
                                                connection.write(LIST_NEXT_ID_LIST);
                                                connection.flush();
-                                               
+
                                                buffer = new byte[2];
                                        }
                                        //System.out.println("LIST_NEXT_ID_LIST RESP: " + bytesToHex(buffer));
@@ -182,8 +182,8 @@ public class ListMetabaseContents implements ClipEventListener {
                                        System.out.println("Error in list first id list response: " + bytesToHex( buffer));
                                }
                        }
-                       
-                       
+
+
                                //int i = connection.read();
                                connection.disconnect();
                */
@@ -207,7 +207,7 @@ public class ListMetabaseContents implements ClipEventListener {
                        createNexioConnection();
                        this.testAddDelete();
 
-                       /*                      
+                       /*
                                                Controller controller = new Controller(nexioHost);
                                                controller.connect();
                                                System.out.println("Connected.");
@@ -229,11 +229,11 @@ public class ListMetabaseContents implements ClipEventListener {
                                                        int videoFormat = clip.getVideoFormat();
                                                        //Video Bitrate
                                                        int videoBitrate = clip.getVideoBitrate();
-                                                                                                       
+
                                                        System.out.println(String.format("ID = '%s'\tXID = '%s'\tDuration = '%s'\tModified = '%s'\tVideoFormat = '%s'\tVideoBitrate = '%s'",
                                                                        id, xid, duration, modifiedTimestamp.getTime(), videoFormat, videoBitrate));
                                                }
-                       
+
                                                //Clip clip = mediabase.getClip(new Xid("xdcam-pal-d10-imx30-8"));
                                                //long duration2 = clip.getDuration();
                                                //System.out.println(clip + " dur: "+  duration2);
@@ -266,9 +266,8 @@ public class ListMetabaseContents implements ClipEventListener {
        }
 
        @Override
-       public void restart() {
-               // TODO Auto-generated method stub
-
+       public int restart() {
+               return 0;
        }
 
        public void testAddDelete() {
@@ -317,7 +316,7 @@ public class ListMetabaseContents implements ClipEventListener {
                                        buffer = readBytes(2);
                                        if (LIST_FIRST_ID_LIST_FOUND.equals(bytesToHex(buffer))) {
                                                /*
-                                                *                                              //extended id version 0x22, 0x23                                                
+                                                *                                              //extended id version 0x22, 0x23
                                                                                                //found 2, BC 1, ID 8, XID {BC-8}
                                                                                                buffer = readBytes(1);
                                                                                                int bc = buffer[0];
@@ -387,7 +386,7 @@ public class ListMetabaseContents implements ClipEventListener {
        private void writeBytes(byte[] toWrite) throws Exception {
                try {
                        //testcode calc checksum
-                       /*                      
+                       /*
                                                byte[] finalbytes = Arrays.copyOf(toWrite, toWrite.length + 1);
                                                long chksum = 0;
                                                for(int c=0; c<toWrite.length; c++){
index 99ca5fddab065fbbfd254d8cdbe72284c3d843f4..cf542904f5d5ee63bf183f4d588f6c7d0a4dc6ba 100644 (file)
@@ -9,15 +9,16 @@ import java.util.Arrays;
 
 public class TCPConnection implements Connection {
 
+       static public Connection getInstance(String host, int port) throws UnknownHostException, IOException {
+               return new TCPConnection(host, port);
+       }
+
        protected InputStream input;
        protected OutputStream output;
        protected Socket socket = null;
        private String host = null;
-       private int port = 0; 
-       
-       static public Connection getInstance(String host, int port) throws UnknownHostException, IOException {
-               return new TCPConnection(host, port);
-       }
+
+       private int port = 0;
 
        public TCPConnection(String _host, int _port) throws UnknownHostException, IOException {
                this.host = _host;
@@ -29,7 +30,7 @@ public class TCPConnection implements Connection {
 
        @Override
        public void disconnect() throws IOException {
-               if (socket != null) {
+               if (socket != null && !socket.isClosed()) {
                        socket.close();
                }
        }
@@ -39,6 +40,21 @@ public class TCPConnection implements Connection {
                output.flush();
        }
 
+       @Override
+       public String getHost() {
+               return this.host;
+       }
+
+       @Override
+       public int getPort() {
+               return this.port;
+       }
+
+       @Override
+       public int read() throws IOException {
+               return input.read();
+       }
+
        @Override
        public int read(byte[] b) throws IOException {
                Arrays.fill(b, (byte) 0);
@@ -53,11 +69,6 @@ public class TCPConnection implements Connection {
                return input.read(b, off, len);
        }
 
-       public int read() throws IOException {
-               return input.read();
-       }
-       
-       
        @Override
        public void write(byte[] b) throws IOException {
                output.write(b);
@@ -67,12 +78,4 @@ public class TCPConnection implements Connection {
        public void write(int b) throws IOException {
                output.write(b);
        }
-
-       public String getHost(){
-               return this.host;
-       }
-       
-       public int getPort(){
-               return this.port;
-       }
 }
index b31cb705d3046182745183f81903f063d57e1bca..5d7d95a8962114767810c31faa2082666aaf31d2 100644 (file)
@@ -70,7 +70,8 @@
                <welcome-file>index.zul</welcome-file>\r
                <welcome-file>index.zhtml</welcome-file>\r
        </welcome-file-list>\r
-\r
+<!-- Enable http to https redirect -->\r
+<!-- \r
        <security-constraint>\r
                <web-resource-collection>\r
                        <web-resource-name>Everything on the app</web-resource-name>\r
@@ -80,4 +81,5 @@
                        <transport-guarantee>CONFIDENTIAL</transport-guarantee>\r
                </user-data-constraint>\r
        </security-constraint>\r
+ -->\r
 </web-app>\r
index 89283a79c8d57ced8686c0873363a6036a8298fb..e568dacad1c85b6e6a97876f6ed2eb73e68dcf76 100644 (file)
@@ -55,6 +55,7 @@
                        <menu sclass="whitemenu" label="Archívum" >\r
                                <menupopup>\r
                                        <menuitem sclass="rozsda" label="Keresés" onClick="@command('navigate', action='/')" disabled="false" />\r
+                                       <menuitem sclass="rozsda" label="Maestro" onClick="@command('navigate', action='maestro')" disabled="false" />\r
                                        <menuitem sclass="rozsda" label="Folyamatok" onClick="@command('navigate', action='jobs')" disabled="${not sessionScope.userPrincipal.admin or sessionScope.userPrincipal.anonymous}" />\r
                                        <menuitem sclass="rozsda" label="Hiányzó anyagok" onClick="@command('navigate', action='missingmaterials')" disabled="${not sessionScope.userPrincipal.submitter or sessionScope.userPrincipal.anonymous}" />\r
                                </menupopup>\r
index e927663f6af02b5e9ac2ef7642e196d74d1a1b6c..aa668dca040b375d21ff2a6d0b103cf714e87232 100644 (file)
@@ -185,7 +185,23 @@ public class JobListModel extends AsyncBaseModel implements IJobChangedListener
                        if (evt.getName().equals("onCancel"))\r
                                return;\r
                        try {\r
-                               dispatcher.restart();\r
+                               int ret = dispatcher.restart();\r
+\r
+                               switch (ret) {\r
+                               case 0:\r
+                                       Messagebox.show("A NEXIO kapcsolat újraindítása sikeres volt.");\r
+                                       break;\r
+                               case 1:\r
+                                       Messagebox.show("A NEXIO kapcsolat le van tiltva.");\r
+                                       break;\r
+                               case 2:\r
+                                       Messagebox.show("A NEXIO kapcsolat újraindítás már folyamatban van.");\r
+                                       break;\r
+                               case 3:\r
+                                       Messagebox.show("Nem lehet csatlakozni a NEXIO rendszerhez.");\r
+                                       break;\r
+                               }\r
+\r
                        } catch (Exception e) {\r
                                Messagebox.show(e.getMessage());\r
                        }\r
diff --git a/server/user.mediacube.metadata/.classpath b/server/user.mediacube.metadata/.classpath
new file mode 100644 (file)
index 0000000..069739a
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>\r
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+       <classpathentry kind="src" path="src"/>\r
+       <classpathentry kind="src" path="test"/>\r
+       <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
diff --git a/server/user.mediacube.metadata/.project b/server/user.mediacube.metadata/.project
new file mode 100644 (file)
index 0000000..abaf97f
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+       <name>user.mediacube.metadata</name>\r
+       <comment></comment>\r
+       <projects>\r
+       </projects>\r
+       <buildSpec>\r
+               <buildCommand>\r
+                       <name>org.eclipse.jdt.core.javabuilder</name>\r
+                       <arguments>\r
+                       </arguments>\r
+               </buildCommand>\r
+               <buildCommand>\r
+                       <name>org.eclipse.pde.ManifestBuilder</name>\r
+                       <arguments>\r
+                       </arguments>\r
+               </buildCommand>\r
+               <buildCommand>\r
+                       <name>org.eclipse.pde.SchemaBuilder</name>\r
+                       <arguments>\r
+                       </arguments>\r
+               </buildCommand>\r
+       </buildSpec>\r
+       <natures>\r
+               <nature>org.eclipse.pde.PluginNature</nature>\r
+               <nature>org.eclipse.jdt.core.javanature</nature>\r
+       </natures>\r
+</projectDescription>\r
diff --git a/server/user.mediacube.metadata/.settings/org.eclipse.jdt.core.prefs b/server/user.mediacube.metadata/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..295926d
--- /dev/null
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8\r
+org.eclipse.jdt.core.compiler.compliance=1.8\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.8\r
diff --git a/server/user.mediacube.metadata/META-INF/MANIFEST.MF b/server/user.mediacube.metadata/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..d0cdd11
--- /dev/null
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Metadata
+Bundle-SymbolicName: user.mediacube.metadata
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: user.mediabube.metadata
+Require-Bundle: org.mybatis.mybatis;bundle-version="3.5.2",
+ org.junit;bundle-version="4.12.0",
+ com.microsoft.sqlserver.sqljdbc,
+ user.jobengine.osgi.commons
diff --git a/server/user.mediacube.metadata/build.properties b/server/user.mediacube.metadata/build.properties
new file mode 100644 (file)
index 0000000..41eb6ad
--- /dev/null
@@ -0,0 +1,4 @@
+source.. = src/\r
+output.. = bin/\r
+bin.includes = META-INF/,\\r
+               .\r
diff --git a/server/user.mediacube.metadata/pom.xml b/server/user.mediacube.metadata/pom.xml
new file mode 100644 (file)
index 0000000..5ceca0c
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r
+       <parent>\r
+               <relativePath>../-modules</relativePath>\r
+               <groupId>user.jobengine</groupId>\r
+               <artifactId>MediaCube</artifactId>\r
+               <version>1.0.0</version>\r
+       </parent>\r
+       <modelVersion>4.0.0</modelVersion>\r
+       <artifactId>user.jobengine.metadata</artifactId>\r
+       <packaging>eclipse-plugin</packaging>\r
+       <version>1.0.0</version>\r
+\r
+</project>
\ No newline at end of file
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java
new file mode 100644 (file)
index 0000000..1aaec72
--- /dev/null
@@ -0,0 +1,5 @@
+package user.mediabube.metadata;\r
+\r
+public interface IMetadata {\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataListOptions.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataListOptions.java
new file mode 100644 (file)
index 0000000..bd8431c
--- /dev/null
@@ -0,0 +1,5 @@
+package user.mediabube.metadata;\r
+\r
+public interface IMetadataListOptions {\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataProvider.java
new file mode 100644 (file)
index 0000000..40c443d
--- /dev/null
@@ -0,0 +1,8 @@
+package user.mediabube.metadata;\r
+\r
+import java.util.List;\r
+\r
+public interface IMetadataProvider {\r
+\r
+       List<IMetadata> list(IMetadataListOptions options) throws Exception;\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderFactory.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderFactory.java
new file mode 100644 (file)
index 0000000..5433071
--- /dev/null
@@ -0,0 +1,22 @@
+package user.mediabube.metadata;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import user.mediabube.metadata.planair.PlanAirMetadataProvider;\r
+\r
+public class MetadataProviderFactory {\r
+\r
+       private static Map<MetadataProviderType, IMetadataProvider> providers = new HashMap<>();\r
+\r
+       static {\r
+               try {\r
+                       providers.put(MetadataProviderType.PLANAIR, new PlanAirMetadataProvider());\r
+               } catch (Exception e) {\r
+               }\r
+       }\r
+\r
+       public static IMetadataProvider getProvider(MetadataProviderType type) {\r
+               return providers.get(type);\r
+       }\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderType.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderType.java
new file mode 100644 (file)
index 0000000..9b5959b
--- /dev/null
@@ -0,0 +1,5 @@
+package user.mediabube.metadata;\r
+\r
+public enum MetadataProviderType {\r
+       PLANAIR\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java
new file mode 100644 (file)
index 0000000..73ff6c8
--- /dev/null
@@ -0,0 +1,36 @@
+package user.mediabube.metadata.planair;\r
+\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+import org.apache.ibatis.annotations.Options;\r
+import org.apache.ibatis.annotations.Param;\r
+import org.apache.ibatis.annotations.Result;\r
+import org.apache.ibatis.annotations.Results;\r
+import org.apache.ibatis.annotations.Select;\r
+import org.apache.ibatis.mapping.StatementType;\r
+\r
+public interface IPlanAirADMapper {\r
+\r
+       //      @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null,\r
+       //                      @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null\r
+       static final String MATERIAL_SQL = "{CALL dbo.clIFsp_EC_MAM(1002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid\r
+       //    item.v_EpisodeID = ReadString(reader, ref f);\r
+       //    item.v_VariantID = ReadInt(reader, ref f);\r
+       //    item.v_MediaID = ReadString(reader, ref f);\r
+       //    item.v_ProgTitle = ReadString(reader, ref f);\r
+       //    item.v_EpTitle = ReadString(reader, ref f);\r
+       //    item.v_Episode = ReadShort(reader, ref f);\r
+       //    item.v_VariantNrSegments = ReadInt(reader, ref f);\r
+       //    item.v_FirstBroadcastDate = ReadDateTime(reader, ref f);\r
+       //    item.v_NextBroadcastDate = ReadDateTime(reader, ref f);\r
+\r
+       @Select(value = MATERIAL_SQL)\r
+       @Options(statementType = StatementType.CALLABLE)\r
+       @Results(value = { @Result(property = "episodeID", column = "v_EpisodeID"), @Result(property = "variantID", column = "v_VariantID"),\r
+                       @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"),\r
+                       @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"),\r
+                       @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"),\r
+                       @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate") })\r
+       public List<PlanAirMaterial> getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay);\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java
new file mode 100644 (file)
index 0000000..7890705
--- /dev/null
@@ -0,0 +1,36 @@
+package user.mediabube.metadata.planair;\r
+\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+import org.apache.ibatis.annotations.Options;\r
+import org.apache.ibatis.annotations.Param;\r
+import org.apache.ibatis.annotations.Result;\r
+import org.apache.ibatis.annotations.Results;\r
+import org.apache.ibatis.annotations.Select;\r
+import org.apache.ibatis.mapping.StatementType;\r
+\r
+public interface IPlanAirMaterialMapper {\r
+\r
+       //      @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null,\r
+       //                      @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null\r
+       static final String MATERIAL_SQL = "{CALL dbo.clIFsp_EC_MAM(1002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid\r
+       //    item.v_EpisodeID = ReadString(reader, ref f);\r
+       //    item.v_VariantID = ReadInt(reader, ref f);\r
+       //    item.v_MediaID = ReadString(reader, ref f);\r
+       //    item.v_ProgTitle = ReadString(reader, ref f);\r
+       //    item.v_EpTitle = ReadString(reader, ref f);\r
+       //    item.v_Episode = ReadShort(reader, ref f);\r
+       //    item.v_VariantNrSegments = ReadInt(reader, ref f);\r
+       //    item.v_FirstBroadcastDate = ReadDateTime(reader, ref f);\r
+       //    item.v_NextBroadcastDate = ReadDateTime(reader, ref f);\r
+\r
+       @Select(value = MATERIAL_SQL)\r
+       @Options(statementType = StatementType.CALLABLE)\r
+       @Results(value = { @Result(property = "episodeID", column = "v_EpisodeID"), @Result(property = "variantID", column = "v_VariantID"),\r
+                       @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"),\r
+                       @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"),\r
+                       @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"),\r
+                       @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate") })\r
+       public List<PlanAirMaterial> getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay);\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java
new file mode 100644 (file)
index 0000000..2e8879a
--- /dev/null
@@ -0,0 +1,36 @@
+package user.mediabube.metadata.planair;\r
+\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+import org.apache.ibatis.annotations.Options;\r
+import org.apache.ibatis.annotations.Param;\r
+import org.apache.ibatis.annotations.Result;\r
+import org.apache.ibatis.annotations.Results;\r
+import org.apache.ibatis.annotations.Select;\r
+import org.apache.ibatis.mapping.StatementType;\r
+\r
+public interface IPlanAirPromoMapper {\r
+\r
+       //      @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null,\r
+       //                      @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null\r
+       static final String MATERIAL_SQL = "{CALL dbo.clIFsp_EC_MAM(1002, #{options, mode=IN, jdbcType=INTEGER}, Null, Null, Null, Null, #{search, mode=IN, jdbcType=VARCHAR}, Null, #{broadcastDay, mode=IN, jdbcType=DATE}, #{broadcastDay, mode=IN, jdbcType=DATE})}";//musorid\r
+       //    item.v_EpisodeID = ReadString(reader, ref f);\r
+       //    item.v_VariantID = ReadInt(reader, ref f);\r
+       //    item.v_MediaID = ReadString(reader, ref f);\r
+       //    item.v_ProgTitle = ReadString(reader, ref f);\r
+       //    item.v_EpTitle = ReadString(reader, ref f);\r
+       //    item.v_Episode = ReadShort(reader, ref f);\r
+       //    item.v_VariantNrSegments = ReadInt(reader, ref f);\r
+       //    item.v_FirstBroadcastDate = ReadDateTime(reader, ref f);\r
+       //    item.v_NextBroadcastDate = ReadDateTime(reader, ref f);\r
+\r
+       @Select(value = MATERIAL_SQL)\r
+       @Options(statementType = StatementType.CALLABLE)\r
+       @Results(value = { @Result(property = "episodeID", column = "v_EpisodeID"), @Result(property = "variantID", column = "v_VariantID"),\r
+                       @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"),\r
+                       @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"),\r
+                       @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"),\r
+                       @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate") })\r
+       public List<PlanAirMaterial> getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay);\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/MetadataType.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/MetadataType.java
new file mode 100644 (file)
index 0000000..3f0d530
--- /dev/null
@@ -0,0 +1,5 @@
+package user.mediabube.metadata.planair;\r
+\r
+public enum MetadataType {\r
+       Material, Promo, AD\r
+}
\ No newline at end of file
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java
new file mode 100644 (file)
index 0000000..0399abd
--- /dev/null
@@ -0,0 +1,98 @@
+package user.mediabube.metadata.planair;\r
+\r
+import java.util.Date;\r
+\r
+import user.mediabube.metadata.IMetadata;\r
+\r
+public class PlanAirMaterial implements IMetadata {\r
+       private String episodeID;\r
+       private int variantID;\r
+       private String mediaID;\r
+       private String epTitle;\r
+       private String progTitle;\r
+       private short episode;\r
+       private boolean okForAir;\r
+       private int variantNrSegments;\r
+       private Date nextBroadcastDate;\r
+       private Date firstBroadcastDate;\r
+\r
+       public short getEpisode() {\r
+               return episode;\r
+       }\r
+\r
+       public String getEpisodeID() {\r
+               return episodeID;\r
+       }\r
+\r
+       public String getEpTitle() {\r
+               return epTitle;\r
+       }\r
+\r
+       public Date getFirstBroadcastDate() {\r
+               return firstBroadcastDate;\r
+       }\r
+\r
+       public String getMediaID() {\r
+               return mediaID;\r
+       }\r
+\r
+       public Date getNextBroadcastDate() {\r
+               return nextBroadcastDate;\r
+       }\r
+\r
+       public String getProgTitle() {\r
+               return progTitle;\r
+       }\r
+\r
+       public int getVariantID() {\r
+               return variantID;\r
+       }\r
+\r
+       public int getVariantNrSegments() {\r
+               return variantNrSegments;\r
+       }\r
+\r
+       public boolean isOkForAir() {\r
+               return okForAir;\r
+       }\r
+\r
+       public void setEpisode(short episode) {\r
+               this.episode = episode;\r
+       }\r
+\r
+       public void setEpisodeID(String episodeID) {\r
+               this.episodeID = episodeID;\r
+       }\r
+\r
+       public void setEpTitle(String epTitle) {\r
+               this.epTitle = epTitle;\r
+       }\r
+\r
+       public void setFirstBroadcastDate(Date firstBroadcastDate) {\r
+               this.firstBroadcastDate = firstBroadcastDate;\r
+       }\r
+\r
+       public void setMediaID(String mediaID) {\r
+               this.mediaID = mediaID;\r
+       }\r
+\r
+       public void setNextBroadcastDate(Date nextBroadcastDate) {\r
+               this.nextBroadcastDate = nextBroadcastDate;\r
+       }\r
+\r
+       public void setOkForAir(boolean okForAir) {\r
+               this.okForAir = okForAir;\r
+       }\r
+\r
+       public void setProgTitle(String progTitle) {\r
+               this.progTitle = progTitle;\r
+       }\r
+\r
+       public void setVariantID(int variantID) {\r
+               this.variantID = variantID;\r
+       }\r
+\r
+       public void setVariantNrSegments(int variantNrSegments) {\r
+               this.variantNrSegments = variantNrSegments;\r
+       }\r
+}
\ No newline at end of file
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java
new file mode 100644 (file)
index 0000000..c86f121
--- /dev/null
@@ -0,0 +1,45 @@
+package user.mediabube.metadata.planair;\r
+\r
+import java.util.Date;\r
+\r
+import user.mediabube.metadata.IMetadataListOptions;\r
+\r
+public class PlanAirMetadataListOptions implements IMetadataListOptions {\r
+       private Date broadcastDay;\r
+       private boolean problematic;\r
+       private String search;\r
+       private MetadataType type;\r
+\r
+       public Date getBroadcastDay() {\r
+               return broadcastDay;\r
+       }\r
+\r
+       public String getSearch() {\r
+               return search;\r
+       }\r
+\r
+       public MetadataType getType() {\r
+               return type;\r
+       }\r
+\r
+       public boolean isProblematic() {\r
+               return problematic;\r
+       }\r
+\r
+       public void setBroadcastDay(Date broadcastDay) {\r
+               this.broadcastDay = broadcastDay;\r
+       }\r
+\r
+       public void setProblematic(boolean problematic) {\r
+               this.problematic = problematic;\r
+       }\r
+\r
+       public void setSearch(String search) {\r
+               this.search = search;\r
+       }\r
+\r
+       public void setType(MetadataType type) {\r
+               this.type = type;\r
+       }\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java
new file mode 100644 (file)
index 0000000..2631189
--- /dev/null
@@ -0,0 +1,74 @@
+package user.mediabube.metadata.planair;\r
+\r
+import java.util.List;\r
+\r
+import javax.sql.DataSource;\r
+\r
+import org.apache.ibatis.datasource.pooled.PooledDataSource;\r
+import org.apache.ibatis.mapping.Environment;\r
+import org.apache.ibatis.session.Configuration;\r
+import org.apache.ibatis.session.SqlSession;\r
+import org.apache.ibatis.session.SqlSessionFactory;\r
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;\r
+import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;\r
+\r
+import com.microsoft.sqlserver.jdbc.SQLServerDriver;\r
+\r
+import user.commons.ListUtils;\r
+import user.mediabube.metadata.IMetadata;\r
+import user.mediabube.metadata.IMetadataListOptions;\r
+import user.mediabube.metadata.IMetadataProvider;\r
+\r
+public class PlanAirMetadataProvider implements IMetadataProvider {\r
+       private static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";\r
+       private static final String JDBC_URL = System.getProperty("jobengine.planair.db.url", "jdbc:sqlserver://10.10.1.45;databaseName=PA_Echo;");\r
+       private static final String JDBC_USER = System.getProperty("jobengine.planair.db.user", "MAM");\r
+       private static final String JDBC_PWD = System.getProperty("jobengine.planair.db.password", "Echotv.hu");\r
+\r
+       private final SqlSessionFactory sqlSessionFactory;\r
+\r
+       public PlanAirMetadataProvider() throws Exception {\r
+               try {\r
+\r
+                       Class<SQLServerDriver> forName = (Class<SQLServerDriver>) Class.forName(JDBC_DRIVER);\r
+                       sqlSessionFactory = buildqlSessionFactory();\r
+               } catch (Exception e) {\r
+                       throw e;\r
+               }\r
+       }\r
+\r
+       private SqlSessionFactory buildqlSessionFactory() {\r
+               DataSource dataSource = new PooledDataSource(JDBC_DRIVER, JDBC_URL, JDBC_USER, JDBC_PWD);\r
+               Environment environment = new Environment("Development", new JdbcTransactionFactory(), dataSource);\r
+               Configuration configuration = new Configuration(environment);\r
+               configuration.addMapper(IPlanAirMaterialMapper.class);\r
+               SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();\r
+               return builder.build(configuration);\r
+       }\r
+\r
+       @Override\r
+       public List<IMetadata> list(IMetadataListOptions options) throws Exception {\r
+               List<IMetadata> result = null;\r
+               try (SqlSession session = sqlSessionFactory.openSession()) {\r
+                       PlanAirMetadataListOptions opt = (PlanAirMetadataListOptions) options;\r
+                       int problematic = opt.isProblematic() ? 1 : 0;\r
+\r
+                       switch (opt.getType()) {\r
+                       case AD:\r
+                               break;\r
+                       case Material:\r
+                               IPlanAirMaterialMapper mapper = session.getMapper(IPlanAirMaterialMapper.class);\r
+                               result = ListUtils.cast(mapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay()));\r
+                               break;\r
+                       case Promo:\r
+                               break;\r
+                       default:\r
+                               throw new Exception("Missing metadata type");\r
+                       }\r
+               } catch (Exception e) {\r
+                       throw e;\r
+               }\r
+               return result;\r
+       }\r
+\r
+}\r
diff --git a/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java b/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java
new file mode 100644 (file)
index 0000000..8e1a263
--- /dev/null
@@ -0,0 +1,41 @@
+package user.mediabube.metadata;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Date;
+import java.util.List;
+
+import org.junit.Test;
+
+import user.mediabube.metadata.planair.PlanAirMetadataListOptions;
+
+public class PlanAirMetadataTest {
+
+       @Test
+       public void testConnection() throws Exception {
+               // Fixture
+               // Exercise
+               IMetadataProvider sut = MetadataProviderFactory.getProvider(MetadataProviderType.PLANAIR);
+
+               // Verify
+               assertNotNull(sut);
+       }
+
+       @Test
+       public void testListMaterialsByBroadcastDay() throws Exception {
+               // Fixture
+               IMetadataProvider sut = MetadataProviderFactory.getProvider(MetadataProviderType.PLANAIR);
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setBroadcastDay(new Date());
+               opt.setProblematic(false);
+
+               // Exercise
+               List<IMetadata> result = sut.list(opt);
+
+               // Verify
+               assertNotNull(result);
+               assertTrue(result.size() > 0);
+       }
+
+}