git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 18 Oct 2019 19:07:51 +0000 (19:07 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 18 Oct 2019 19:07:51 +0000 (19:07 +0000)
32 files changed:
server/-configuration/run-mediacube-server-mv.launch [new file with mode: 0644]
server/-configuration/scheduledjobs.json
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/HSMMigrateListBuilderStepTest.java
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/SmallTests.java
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java
server/user.jobengine.executors/config/config.xml
server/user.jobengine.executors/config/scheduledjobs.json
server/user.jobengine.executors/jobtemplates/migrate-hsm.xml [new file with mode: 0644]
server/user.jobengine.executors/src/user/jobengine/server/steps/EscortFiles.java
server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java [deleted file]
server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateStep.java [new file with mode: 0644]
server/user.jobengine.osgi.commons/src/user/commons/nosql/NoSQLUtils.java
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java
server/user.jobengine.osgi.server/src/user/jobengine/server/JobStepExecutor.java
server/user.jobengine.osgi.server/src/user/jobengine/server/steps/IJobStep.java
server/user.jobengine.osgi.server/src/user/jobengine/server/steps/JobStep.java
server/user.jobengine.osgi.server/test/user/jobengine/server/scheduler/CronExpressionTest.java [new file with mode: 0644]
server/user.jobengine.osgi.server/test/user/jobengine/server/steps/JobStepTest.java
server/user.mediacube.metadata/META-INF/MANIFEST.MF
server/user.mediacube.metadata/src/user/mediacube/metadata/MyBatisMetadataProvider.java
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMContent.java
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMMetadataProvider.java
server/user.mediacube.metadata/src/user/mediacube/metadata/hsm/HSMVolume.java
server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirAD.java
server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMaterial.java
server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataListOptions.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataProvider.java
server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirPromo.java
server/user.mediacube.metadata/test/user/mediabube/metadata/HSMMetadataTest.java
server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java

diff --git a/server/-configuration/run-mediacube-server-mv.launch b/server/-configuration/run-mediacube-server-mv.launch
new file mode 100644 (file)
index 0000000..5a7f168
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<launchConfiguration type="org.eclipse.pde.ui.EquinoxLauncher">\r
+<booleanAttribute key="append.args" value="true"/>\r
+<booleanAttribute key="automaticAdd" value="false"/>\r
+<booleanAttribute key="automaticValidate" value="true"/>\r
+<stringAttribute key="bootstrap" value=""/>\r
+<stringAttribute key="checked" value="[NONE]"/>\r
+<booleanAttribute key="clearConfig" value="true"/>\r
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/run-mediacube-server-mv"/>\r
+<booleanAttribute key="default" value="true"/>\r
+<booleanAttribute key="default_auto_start" value="false"/>\r
+<intAttribute key="default_start_level" value="4"/>\r
+<booleanAttribute key="includeOptional" value="false"/>\r
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">\r
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>\r
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>\r
+</listAttribute>\r
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>\r
+<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.11.1.90: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/&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.11.1.90: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.zenium&#13;&#10;-Djobengine.transcoder.address=http://10.11.1.111:65445/api/json/v1/&#13;&#10;-Djobengine.transcoder.template=MP4&#13;&#10;-Djobengine.transcoder.version=1&#13;&#10;-Djobengine.jobscheduling.config=&quot;${workspace_loc}/-configuration/scheduledjobs.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.11.254.86;databaseName=PA_Vivantis;&#13;&#10;-Djobengine.planair.db.user=MAM&#13;&#10;-Djobengine.planair.db.password=VDani&#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;-Djobengine.maestro.config=&quot;${workspace_loc}/-configuration/maestro.json&quot;&#13;&#10;-Djobengine.mediacube.config=&quot;${workspace_loc}/-configuration/mediacube.json&quot;&#13;&#10;-Dgui.statistics.disable=true&#13;&#10;-Dgui.help.disable=true&#13;&#10;-Dgui.editor.disable=true&#13;&#10;-Djobengine.mediafinder.external=false"/>\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.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.ibm.db2jcc4@default:default,com.ibm.nosql@default:default,com.microsoft.sqlserver.sqljdbc@default:default,humble.video.noarch@default:default,humble.video.windows@default:default,javax.annotation-api@default:default,javax.mail@default:default,javax.servlet-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.collections@default:default,org.apache.commons.digester@default:default,org.apache.commons.io@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.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.deploy@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,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.jackson2-provider@default:default,org.jboss.resteasy.jaxrs-api@default:default,org.jboss.resteasy.jaxrs@default:default,org.jmock.junit4@default:default,org.jmock@default:default,org.junit@default:default,org.mybatis.mybatis@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
+<booleanAttribute key="tracing" value="false"/>\r
+<booleanAttribute key="useCustomFeatures" value="false"/>\r
+<booleanAttribute key="useDefaultConfigArea" value="true"/>\r
+<stringAttribute key="workspace_bundles" value="user.commons.log4j2@default:false,user.jobengine.osgi.commons@default:true,user.jobengine.osgi.db@default:default,user.jobengine.osgi.server@default:default,user.jobengine.osgi.services@default:default,user.mediacube.metadata@default:default,user.tsm.client@default:default"/>\r
+</launchConfiguration>\r
index d98c1e1cc05d6203efe70c59c5dec6c9d24c778e..e53315e801a4d40f0fd3972330fc5691d363cf85 100644 (file)
@@ -1,4 +1,12 @@
 {"joblist":[\r
+       {\r
+         "name" : "sys: Migrate HSM",\r
+      "template": "migrate-hsm.xml",\r
+      "parameters": [ \r
+       {"name": "sourceLocation", "value": "//10.11.1.89", "type": "java.lang.String"},\r
+       {"name": "targetLocation", "value": "c:/_video", "type": "java.lang.String"}\r
+      ]\r
+       },\r
        {\r
       "active": false,\r
       "executeimmediate": false,\r
index f27008c3b87d1cfd940781648628e1cd7d6be759..9557733223ca983f3f475ab55ebabcea9fa18cc9 100644 (file)
@@ -1,16 +1,71 @@
 package hu.user.mediacube.executors.tests;\r
 \r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertNull;\r
+\r
+import org.junit.BeforeClass;\r
 import org.junit.Test;\r
 \r
-import user.jobengine.server.steps.HSMMigrateListBuilderStep;\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
+import user.jobengine.server.steps.HSMMigrateStep;\r
+import user.mediacube.metadata.MetadataProviderFactory;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
+import user.mediacube.metadata.interfaces.MetadataProviderType;\r
 \r
 public class HSMMigrateListBuilderStepTest {\r
 \r
+       @BeforeClass\r
+       static public void setUpConnection() {\r
+               System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+               System.setProperty("jobengine.nosql.db.user", "db2admin");\r
+               System.setProperty("jobengine.nosql.db.password", "password");\r
+       }\r
+\r
+       private HSMMigrateStep createSUT() {\r
+               HSMMigrateStep sut = new HSMMigrateStep() {\r
+                       @Override\r
+                       protected IMetadataProvider getMetadataProvider(MetadataProviderType type) {\r
+                               IMetadataProviderFactory factory = new MetadataProviderFactory();\r
+                               return factory.getProvider(type);\r
+                       }\r
+               };\r
+               return sut;\r
+       }\r
+\r
        @Test\r
-       public void test1() throws Exception {\r
-               HSMMigrateListBuilderStep sut = new HSMMigrateListBuilderStep();\r
-               sut.execute("//10.11.1.89/OMARCHIVE", 0);\r
+       public void testExecute() throws Exception {\r
+               HSMMigrateStep sut = createSUT();\r
+               sut.execute("//10.11.1.89", "/_video/migrate");\r
                //              System.out.println(Arrays.toString(sut));\r
        }\r
 \r
+       @Test\r
+       public void testQueryException_FileNameExclude() throws Exception {\r
+               HSMMigrateStep sut = new HSMMigrateStep();\r
+               BasicDBObject actual = sut.queryExclude("12-90670-0012");\r
+               assertNotNull(actual);\r
+       }\r
+\r
+       @Test\r
+       public void testQueryException_FullPathExclude() throws Exception {\r
+               HSMMigrateStep sut = new HSMMigrateStep();\r
+               BasicDBObject actual = sut.queryExclude("/gpfs/OMARCHIVE/2011-mxf/11-01771-0002-2.mxf");\r
+               assertNotNull(actual);\r
+       }\r
+\r
+       @Test\r
+       public void testQueryException_NoException() throws Exception {\r
+               HSMMigrateStep sut = new HSMMigrateStep();\r
+               BasicDBObject actual = sut.queryExclude("test.mxf");\r
+               assertNull(actual);\r
+       }\r
+\r
+       @Test\r
+       public void testQueryHistory() throws Exception {\r
+               HSMMigrateStep sut = new HSMMigrateStep();\r
+               BasicDBObject actual = sut.queryFileHistory("/OMARCHIVE/6.3.4.200-TIV-TSMALL-Linuxx86_64.bin");\r
+               assertNotNull(actual);\r
+       }\r
 }\r
index d693a2d751ef63581159de89e30f0bead25674a5..0b37d49ac3221d5c09aede12cefb9d9002faa846 100644 (file)
@@ -35,7 +35,7 @@ public class SmallTests {
        }\r
 \r
        @Test\r
-       public void test3() throws Exception {\r
+       public void test3() throws Throwable {\r
                TSMExtendedRetrieveStep sut = new TSMExtendedRetrieveStep();\r
                Media mediaCubeMedia = new Media();\r
                String targetPath = "/mnt/PROMISE/TRANSCODER/ARCHIVE_RESTORE/TTT";\r
@@ -67,4 +67,5 @@ public class SmallTests {
        void xxx(int x, boolean y) {\r
                System.out.println("call");\r
        }\r
+\r
 }\r
index 2a2dfd8a9cad16cb876fe787d58aade8072e94a9..b18139a3c09e88f71a7966256df21f58ba48436f 100644 (file)
@@ -61,11 +61,11 @@ public class Support {
                System.setProperty("jobengine.octopus.stories.name", "stories181217");\r
                System.setProperty("jobengine.octopus.storyfolders.name", "storyfolders181217");\r
 \r
-               System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+               System.setProperty("jobengine.nosql.db.url", "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
                System.setProperty("jobengine.nosql.db.user", "db2admin");\r
                System.setProperty("jobengine.nosql.db.password", "password");\r
                System.setProperty("nexio.host", "10.10.1.55");\r
-               System.setProperty(ItemManager.DBURL, "jdbc:db2://10.10.1.27:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
+               System.setProperty(ItemManager.DBURL, "jdbc:db2://10.11.1.90:50000/mc:retrieveMessagesFromServerOnGetMessage=true;");\r
                System.setProperty(ItemManager.DBUSERNAME, "db2admin");\r
                System.setProperty(ItemManager.DBPASSWORD, "password");\r
                System.setProperty(LogUtils.LOGLEVEL, "INFO");\r
@@ -270,6 +270,29 @@ public class Support {
                System.out.println("itemid=" + i.getId() + " AND mediaid=" + m.getId() + " AND mediafileid=" + mf.getId());\r
        }\r
 \r
+       @Test\r
+       public void testLoadMVExclude() throws Exception {\r
+               DB db = NoSQLUtils.getNoSQLDB();\r
+               DBCollection collection = db.getCollection("hsm_migrate_exclude");\r
+               List<String> lines = Files.readAllLines(Paths.get("/opt/mv-migrate-exclude.txt"));\r
+               for (String line : lines) {\r
+                       BasicDBObject d = new BasicDBObject();\r
+                       d.put("name", line.trim());\r
+                       collection.save(d);\r
+               }\r
+\r
+       }\r
+\r
+       @Test\r
+       public void testLoadMVExclude1() throws Exception {\r
+               DB db = NoSQLUtils.getNoSQLDB();\r
+               DBCollection collection = db.getCollection("hsm_migrate_exclude");\r
+               BasicDBObject d = new BasicDBObject();\r
+               d.put("name", "/OMARCHIVE/6.3.4.200-TIV-TSMALL-Linuxx86_64.bin");\r
+               collection.save(d);\r
+\r
+       }\r
+\r
        @Test\r
        public void testTSM() throws Exception {\r
                //System.setProperty("PATH", "c:\\_workspace\\USER\\MediaCube\\server\\user.tsm.client\\apilib\\;%PATH%");\r
index 056e06f17868f38218dce2c30c8c00d4b417e098..a5ebba02b55f9b491011251c95c313026d4cde41 100644 (file)
@@ -19,6 +19,7 @@
        <executor className="user.jobengine.server.steps.FakeNoParamsStep" maxConcurrent="20"/>\r
        <executor className="user.jobengine.server.steps.FakeStep" maxConcurrent="20"/>\r
        <executor className="user.jobengine.server.steps.GenerateMorpheusMetadataStep" maxConcurrent="10"/>\r
+       <executor className="user.jobengine.server.steps.HSMMigrateStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.ImportMORPHEUSMissingMaterialsStep" maxConcurrent="1"/>\r
        <executor className="user.jobengine.server.steps.ImportStatisticsStep" maxConcurrent="7"/>\r
        <executor className="user.jobengine.server.steps.MetadataTransformStep" maxConcurrent="1"/>\r
index ca6353a9a45993010c62ce661f305ad96be54879..43e716cf4fcc0f6d0cbf3d09d6f37ebbe4dda5a2 100644 (file)
@@ -1,4 +1,12 @@
 {"joblist":[\r
+       {\r
+         "name" : "sys: Migrate HSM",\r
+      "template": "migrate-hsm.xml",\r
+      "parameters": [ \r
+       {"name": "sourceLocation", "value": "/OMARCHIVE", "type": "java.lang.String"},\r
+       {"name": "targetLocation", "value": "/mediacube/data", "type": "java.lang.String"}\r
+      ]\r
+       },\r
        {\r
          "name" : "sys: Remove duplicates",\r
       "template": "duplicate-remover.xml",\r
diff --git a/server/user.jobengine.executors/jobtemplates/migrate-hsm.xml b/server/user.jobengine.executors/jobtemplates/migrate-hsm.xml
new file mode 100644 (file)
index 0000000..93f62ba
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<jobtemplate name="HSM migráció">\r
+       <declarations>\r
+               <parameters>\r
+                       <parameter name="sourceLocation" type="java.lang.String" />\r
+                       <parameter name="targetLocation" type="java.lang.String" />\r
+               </parameters>\r
+       </declarations>\r
+       <commands>\r
+               <calljobstep id="step1" type="user.jobengine.server.steps.HSMMigrateStep" weight="1">\r
+                       <inputs>\r
+                               <input>\r
+                                       <parameter name="sourceLocation" />\r
+                               </input>\r
+                               <input>\r
+                                       <parameter name="targetLocation" />\r
+                               </input>\r
+                       </inputs>\r
+               </calljobstep>\r
+       </commands>\r
+</jobtemplate>
\ No newline at end of file
index 4be1b405c369a609663c9eed5c93ab3faab269d3..298b456dfb66e227dba9e7ca8ce93fc59054dfcc 100644 (file)
@@ -65,6 +65,13 @@ public class EscortFiles {
                return String.format(KILLDATE_FILENAME, fileName, composeKillDate(days));\r
        }\r
 \r
+       public static void createMetadata(String filePath, String fileName, String metadata, Marker marker) throws IOException {\r
+               ensureUNCFolder(filePath, STATUSFOLDER);\r
+               String metadataFileName = fileName + ".json";\r
+               Path metadataPath = Paths.get(filePath, STATUSFOLDER, metadataFileName);\r
+               Files.write(metadataPath, metadata.getBytes());\r
+       }\r
+\r
        public static void createMorpheusXML(String filePath, String fileName, String content) throws IOException {\r
                ensureUNCFolder(filePath, STATUSFOLDER);\r
                Path xmlPath = Paths.get(filePath, fileName);\r
index fb3c72d1724ef5ea020cb179af9559baecbf3f12..9573db74b8660806590e59b5e8cf52b539ea5f91 100644 (file)
@@ -5,16 +5,22 @@ import org.apache.logging.log4j.Logger;
 \r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
+import user.mediacube.metadata.interfaces.MetadataProviderType;\r
 \r
 public class FakeStep extends JobStep {\r
        private static final Logger logger = LogManager.getLogger();\r
        private int count = 10;\r
        private StringBuilder sb = new StringBuilder();\r
+       private IMetadataProvider metadataProvider;\r
 \r
        @StepEntry\r
        public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
                Object[] result = { itemID + 1 };\r
 \r
+               test();\r
+\r
                //((MediaCubeMarker) jobRuntime.getMarker()).setTo("vasary@elgekko.net");\r
 \r
                //logger.info(jobRuntime.getMarker(), "<a href='UNC://\\10.10.1.100\\BRAAVOS\\ARCHIVE' target='blank'>usefullink</a>");\r
@@ -40,4 +46,10 @@ public class FakeStep extends JobStep {
                return result;\r
        }\r
 \r
+       public void test() {\r
+               IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class);\r
+               metadataProvider = factory.getProvider(MetadataProviderType.HSM);\r
+               logger.info(jobRuntime.getMarker(), metadataProvider);\r
+       }\r
+\r
 }\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateListBuilderStep.java
deleted file mode 100644 (file)
index cd0e370..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-package user.jobengine.server.steps;\r
-\r
-import java.io.File;\r
-import java.nio.file.Path;\r
-import java.util.LinkedHashMap;\r
-import java.util.LinkedList;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.apache.commons.io.FileUtils;\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.mediacube.metadata.MetadataProviderFactory;\r
-import user.mediacube.metadata.hsm.HSMContent;\r
-import user.mediacube.metadata.hsm.HSMListOptions;\r
-import user.mediacube.metadata.interfaces.IMetadata;\r
-import user.mediacube.metadata.interfaces.IMetadataProvider;\r
-import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
-import user.mediacube.metadata.interfaces.MetadataProviderType;\r
-\r
-public class HSMMigrateListBuilderStep extends JobStep {\r
-       private static final Logger logger = LogManager.getLogger();\r
-       private static final String MXFEXT = ".mxf";\r
-       private static final String MOVEXT = ".mov";\r
-       private Marker marker = null;\r
-       private IMetadataProvider metadataProvider;\r
-       private List<ArchiveItem> archiveList;\r
-       private Map<String, HSMContent> tapeContents = new LinkedHashMap<>();\r
-\r
-       @StepEntry\r
-       public Object[] execute(String sourcePath, int limit) {\r
-               if (jobRuntime != null)\r
-                       marker = jobRuntime.getMarker();\r
-               IMetadataProviderFactory factory = new MetadataProviderFactory();\r
-               metadataProvider = factory.getProvider(MetadataProviderType.HSM);\r
-               archiveList = new LinkedList<ArchiveItem>();\r
-\r
-               try {\r
-                       //                      Files.walkFileTree(Paths.get(sourcePath), new SimpleFileVisitor<Path>() {\r
-                       //                              @Override\r
-                       //                              public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {\r
-                       //                                      processPathItem(file);\r
-                       //                                      return super.visitFile(file, attrs);\r
-                       //                              }\r
-                       //                      });\r
-\r
-                       List<IMetadata> volumes = metadataProvider.list(null);\r
-                       for (IMetadata volume : volumes) {\r
-                               System.out.println("---Volume " + volume.getTitle());\r
-                               long size = 0;\r
-                               List<IMetadata> contents = getContents(volume.getTitle());\r
-                               for (IMetadata content : contents) {\r
-                                       HSMContent c = (HSMContent) content;\r
-                                       if (!tapeContents.containsKey(c.getFileName())) {\r
-                                               tapeContents.put(c.getFileName(), c);\r
-                                               System.out.println("Content " + c.getFileName() + " " + c.getSegment() + " " + c.getStart());\r
-                                               size += c.getFileSize();\r
-                                       }\r
-\r
-                               }\r
-\r
-                               System.out.println(">>>  " + size);\r
-                       }\r
-               } catch (Exception e) {\r
-                       logger.catching(e);\r
-                       logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", e.getMessage());\r
-               } finally {\r
-               }\r
-\r
-               System.out.println("Summary " + tapeContents.size());\r
-\r
-               return new Object[] { archiveList };\r
-       }\r
-\r
-       private String getCompatibleFileName(Path mediaFilePath) {\r
-               String fileName = mediaFilePath.toString().replace("\\", "/").replace("//", "");\r
-               fileName = fileName.substring(fileName.indexOf("/"));\r
-               System.out.println("Visited " + fileName);\r
-               return fileName;\r
-       }\r
-\r
-       private List<IMetadata> getContents(String volumeName) {\r
-               List<IMetadata> contents = null;\r
-               HSMListOptions listOptions = new HSMListOptions();\r
-               listOptions.setVolumeName(volumeName);\r
-               try {\r
-                       contents = metadataProvider.list(listOptions);\r
-               } catch (Exception e) {\r
-                       System.out.println(e.getMessage());\r
-               }\r
-               return contents;\r
-       }\r
-\r
-       private boolean processPathItem(Path mediaFilePath) {\r
-               File mediaFile = mediaFilePath.toFile();\r
-\r
-               //              if (mediaFile.length() > 0)\r
-               //                      return false;\r
-\r
-               if (!mediaFile.getName().toLowerCase().endsWith(MOVEXT.toLowerCase()) && !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase()))\r
-                       return false;\r
-\r
-               String fileName = getCompatibleFileName(mediaFilePath);\r
-\r
-               HSMContent hsmContent = null;\r
-               HSMListOptions listOptions = new HSMListOptions();\r
-               listOptions.setFileName(fileName);\r
-               try {\r
-                       List<IMetadata> contents = metadataProvider.list(listOptions);\r
-                       if (contents.size() != 1)\r
-                               throw new Exception("Contents size is " + contents.size());\r
-                       hsmContent = (HSMContent) contents.get(0);\r
-\r
-                       String volumeName = hsmContent.getVolumeName();\r
-               } catch (Exception e) {\r
-                       System.out.println(e.getMessage());\r
-                       return false;\r
-               }\r
-               return true;\r
-       }\r
-}\r
diff --git a/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateStep.java b/server/user.jobengine.executors/src/user/jobengine/server/steps/HSMMigrateStep.java
new file mode 100644 (file)
index 0000000..5e2d2a1
--- /dev/null
@@ -0,0 +1,268 @@
+package user.jobengine.server.steps;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+import java.util.Arrays;\r
+import java.util.LinkedHashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import org.apache.commons.io.FilenameUtils;\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
+\r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+import com.ibm.nosql.json.api.DB;\r
+import com.ibm.nosql.json.api.DBCollection;\r
+import com.ibm.nosql.json.api.QueryBuilder;\r
+\r
+import user.commons.MediaCubeMarker;\r
+import user.commons.nosql.NoSQLUtils;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
+import user.mediacube.metadata.interfaces.MetadataProviderType;\r
+\r
+public class HSMMigrateStep extends JobStep {\r
+       private static final Logger logger = LogManager.getLogger();\r
+       private static final String MXFEXT = ".mxf";\r
+       private static final String MOVEXT = ".mov";\r
+       private Marker marker = null;\r
+       private IMetadataProvider hsmProvider;\r
+       private Map<String, BasicDBObject> tapeContents = new LinkedHashMap<>();\r
+       private DBCollection excludes;\r
+       private DBCollection fileHistory;\r
+       private DBCollection volumeHistory;\r
+       private DB db;\r
+       private IMetadataProvider planairProvider;\r
+\r
+       private void cleanupHistory() {\r
+               if (db == null)\r
+                       db = NoSQLUtils.getNoSQLDB();\r
+               if (fileHistory == null)\r
+                       fileHistory = db.getCollection("hsm_migrate_file_history");\r
+               if (volumeHistory == null)\r
+                       volumeHistory = db.getCollection("hsm_migrate_volume_history");\r
+               fileHistory.drop();\r
+               volumeHistory.drop();\r
+       }\r
+\r
+       private BasicDBObject createMetadata(String fileName) {\r
+\r
+               Path filePath = Paths.get(fileName);\r
+               String mediaHouseId = FilenameUtils.removeExtension(filePath.getFileName().toString());\r
+\r
+               //get meta\r
+\r
+               String itemHouseId = "itemHouseId";\r
+               String itemTitle = "itemTitle";\r
+               String itemDesc = "itemDesc";\r
+               String mediaTitle = "mediaTitle";\r
+               String mediaDesc = "mediaDesc";\r
+\r
+               BasicDBObject result = new BasicDBObject();\r
+               result.put("itemHouseId", itemHouseId);\r
+               result.put("itemTitle", itemTitle);\r
+               result.put("itemDescription", itemDesc);\r
+               result.put("userName", "mediacube");\r
+               result.put("mediaHouseId", fileName);\r
+               result.put("mediaTitle", mediaTitle);\r
+               result.put("mediaDescription", mediaDesc);\r
+               result.put("mediaType", "Generic");\r
+               return result;\r
+       }\r
+\r
+       @SuppressWarnings("serial")\r
+       @StepEntry\r
+       public Object[] execute(String sourceLocation, String targetLocation) throws Exception {\r
+               if (jobRuntime != null)\r
+                       marker = jobRuntime.getMarker();\r
+               //remove from prod\r
+               cleanupHistory();\r
+               hsmProvider = getMetadataProvider(MetadataProviderType.HSM);\r
+               if (hsmProvider == null)\r
+                       throw new NullPointerException("No HSM metadata provider available");\r
+               planairProvider = getMetadataProvider(MetadataProviderType.PLANAIR);\r
+               if (planairProvider == null)\r
+                       throw new NullPointerException("No PLANAIR metadata provider available");\r
+               Path targetPath = Paths.get(targetLocation);\r
+               try {\r
+                       List<IMetadata> volumes = hsmProvider.list(new BasicDBObject());\r
+                       for (IMetadata volume : volumes) {\r
+                               String volumeName = volume.getTitle();\r
+\r
+                               BasicDBObject historyResult = queryVolumeHistory(volumeName);\r
+                               if (historyResult != null) {\r
+                                       logger.info(marker, "A kazetta már feldolgozásra került: {}", volumeName);\r
+                                       continue;\r
+                               }\r
+                               logger.info(marker, "A kazetta feldolgozása elindul: {}", volumeName);\r
+                               List<IMetadata> contents = getContents(volumeName);\r
+                               int p = 0;\r
+                               boolean success = false;\r
+                               for (IMetadata content : contents) {\r
+                                       BasicDBObject c = content.asJSON();\r
+                                       String contentFileName = c.getString("fileName");\r
+                                       long contentFileSize = NoSQLUtils.asLong(c, "fileSize");\r
+                                       if (!tapeContents.containsKey(contentFileName)) {\r
+                                               tapeContents.put(contentFileName, c);\r
+                                               Path sourceFilePath = Paths.get(sourceLocation, contentFileName);\r
+                                               if (contentFileSize < Files.getFileStore(targetPath).getUsableSpace()) {\r
+                                                       Path targetFilePath = Paths.get(targetLocation, sourceFilePath.getFileName().toString());\r
+                                                       if (processPathItem(contentFileName, sourceFilePath, targetFilePath)) {\r
+                                                               success = true;\r
+                                                               //throw new Exception("Teszt");\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       setProgress(p++ * 100 / contents.size());\r
+                               }\r
+\r
+                               saveVolumeHistory(volumeName);\r
+                               String subject = "A kazetta eltávolítható a HSM rendszerből: " + volumeName;\r
+                               logger.info(new MediaCubeMarker() {\r
+                                       {\r
+                                               setSubject(subject);\r
+                                       }\r
+                               }, subject);\r
+\r
+                               //ha mar sikerult valamit archivalni kilepunk\r
+                               if (success)\r
+                                       break;\r
+                       }\r
+               } catch (Exception e) {\r
+                       logger.error(marker, "Hiba a migráció során. A rendszer hibaüzenete: {}", e.getMessage());\r
+                       throw e;\r
+               }\r
+\r
+               return null;\r
+       }\r
+\r
+       private List<IMetadata> getContents(String volumeName) throws Exception {\r
+               List<IMetadata> contents = null;\r
+               contents = hsmProvider.list(new BasicDBObject("volumeName", volumeName));\r
+               return contents;\r
+       }\r
+\r
+       protected IMetadataProvider getMetadataProvider(MetadataProviderType type) {\r
+               IMetadataProviderFactory factory = getService(IMetadataProviderFactory.class);\r
+               if (factory == null)\r
+                       return null;\r
+               return factory.getProvider(type);\r
+       }\r
+\r
+       private BasicDBObject getPlanAirMetadata() {\r
+               //              planairProvider\r
+               //              List<IMetadata> result = null;\r
+               //              opt.setType(MetadataType.Material);\r
+               //              result = sut.list(opt);\r
+               //              if (result.size() != 0) {\r
+               //                      System.out.println("Found as MATERIAL");\r
+               //                      return;\r
+               //              }\r
+               //              opt.setType(MetadataType.Promo);\r
+               //              result = sut.list(opt);\r
+               //              if (result.size() != 0) {\r
+               //                      System.out.println("Found as PROMO");\r
+               //                      return;\r
+               //              }\r
+               //              opt.setType(MetadataType.AD);\r
+               //              result = sut.list(opt);\r
+               //              if (result.size() != 0) {\r
+               //                      System.out.println("Found as AD");\r
+               //                      return;\r
+               //              }\r
+               return null;\r
+       }\r
+\r
+       private boolean processPathItem(String contentFileName, Path sourceFilePath, Path targetFilePath) throws IOException {\r
+               BasicDBObject excludeResult = queryExclude(contentFileName);\r
+               if (excludeResult != null) {\r
+                       logger.warn(marker, "Kivételként megjelölt: {}", sourceFilePath, excludeResult.get("name"));\r
+                       return false;\r
+               }\r
+\r
+               File mediaFile = sourceFilePath.toFile();\r
+               if (!mediaFile.exists()) {\r
+                       logger.warn(marker, "A fájl nem elérhető: {}", sourceFilePath);\r
+                       return false;\r
+               }\r
+\r
+               BasicDBObject historyResult = queryFileHistory(contentFileName);\r
+               if (historyResult != null)\r
+                       return false;\r
+\r
+               //              if (!mediaFile.getName().toLowerCase().endsWith(MOVEXT.toLowerCase()) && !mediaFile.getName().toLowerCase().endsWith(MXFEXT.toLowerCase()))\r
+               //                      return;\r
+               //              logger.info("Start copy from {} to {}", sourceFilePath, targetFilePath);\r
+               logger.warn(marker, "Migrálás: {}", sourceFilePath);\r
+\r
+               if (!targetFilePath.toFile().exists())\r
+                       Files.copy(sourceFilePath, targetFilePath);\r
+               else\r
+                       logger.warn(marker, "A fájl már létezik: {}", targetFilePath);\r
+\r
+               String metadata = createMetadata(contentFileName).toString();\r
+               EscortFiles.createMetadata(targetFilePath.getParent().toString(), targetFilePath.getFileName().toString(), metadata, marker);\r
+               saveFileHistory(contentFileName);\r
+               return true;\r
+       }\r
+\r
+       public BasicDBObject queryExclude(String fileName) {\r
+               if (db == null)\r
+                       db = NoSQLUtils.getNoSQLDB();\r
+               if (excludes == null)\r
+                       excludes = db.getCollection("hsm_migrate_exclude");\r
+               Path filePath = Paths.get(fileName);\r
+               String pureFileName = FilenameUtils.removeExtension(filePath.getFileName().toString());\r
+               QueryBuilder qb = QueryBuilder.start("name").in(Arrays.asList(fileName, pureFileName));\r
+               BasicDBObject exceptionResult = NoSQLUtils.asSingle(excludes.find(qb.get()));\r
+               return exceptionResult;\r
+       }\r
+\r
+       public BasicDBObject queryFileHistory(String fileName) {\r
+               if (db == null)\r
+                       db = NoSQLUtils.getNoSQLDB();\r
+               if (fileHistory == null)\r
+                       fileHistory = db.getCollection("hsm_migrate_file_history");\r
+               QueryBuilder qb = QueryBuilder.start("name").in(Arrays.asList(fileName));\r
+               BasicDBObject historyResult = NoSQLUtils.asSingle(fileHistory.find(qb.get()));\r
+               return historyResult;\r
+       }\r
+\r
+       public BasicDBObject queryVolumeHistory(String volumeName) {\r
+               if (db == null)\r
+                       db = NoSQLUtils.getNoSQLDB();\r
+               if (volumeHistory == null)\r
+                       volumeHistory = db.getCollection("hsm_migrate_volume_history");\r
+               QueryBuilder qb = QueryBuilder.start("name").in(Arrays.asList(volumeName));\r
+               BasicDBObject historyResult = NoSQLUtils.asSingle(volumeHistory.find(qb.get()));\r
+               return historyResult;\r
+       }\r
+\r
+       private void saveFileHistory(String fileName) {\r
+               if (db == null)\r
+                       db = NoSQLUtils.getNoSQLDB();\r
+               if (fileHistory == null)\r
+                       fileHistory = db.getCollection("hsm_migrate_file_history");\r
+               BasicDBObject item = new BasicDBObject();\r
+               item.put("name", fileName);\r
+               fileHistory.save(item);\r
+\r
+       }\r
+\r
+       private void saveVolumeHistory(String volumeName) {\r
+               if (db == null)\r
+                       db = NoSQLUtils.getNoSQLDB();\r
+               if (volumeHistory == null)\r
+                       volumeHistory = db.getCollection("hsm_migrate_volume_history");\r
+               BasicDBObject item = new BasicDBObject();\r
+               item.put("name", volumeName);\r
+               volumeHistory.save(item);\r
+\r
+       }\r
+}\r
index ac57183aaf27822dadbe3d6ef142d0aa8a3b0fa8..51d0290f3f1fcfc34d78d9ed414d38bb77c69dce 100644 (file)
@@ -113,6 +113,20 @@ public class NoSQLUtils {
                return result;\r
        }\r
 \r
+       public static BasicDBObject asSingle(DBCursor cursor) {\r
+               BasicDBObject result = null;\r
+               try {\r
+                       cursor.lazyFetch();\r
+                       if (cursor.hasNext()) {\r
+                               DBObject obj = cursor.next();\r
+                               result = (BasicDBObject) obj;\r
+                       }\r
+               } finally {\r
+                       cursor.close();\r
+               }\r
+               return result;\r
+       }\r
+\r
        public static String asString(BasicDBObject obj, String name) {\r
                String result = null;\r
                if (obj != null && obj.containsKey(name))\r
index d9711f754703dbef70e7a6ff210406f82b408081..5566a4e0f0d9357a21b155643a2bfe75c86262f0 100644 (file)
@@ -1,7 +1,11 @@
 package user.mediacube.metadata.interfaces;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 public interface IMetadata {\r
 \r
+       BasicDBObject asJSON();\r
+\r
        String getId();\r
 \r
        String getTitle();\r
index 00dee5e9032ea670ce4a998e328fe78a8971dbfe..3c6b1acdecc9625b0908bda04153b034f2935709 100644 (file)
@@ -2,7 +2,11 @@ package user.mediacube.metadata.interfaces;
 \r
 import java.util.List;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 public interface IMetadataProvider {\r
 \r
+       List<IMetadata> list(BasicDBObject options) throws Exception;\r
+\r
        List<IMetadata> list(IMetadataListOptions options) throws Exception;\r
 }\r
index 4c65cb21932c02f940c98a6c6fc9819df4d86d6c..897fcd76bb4a086f07db27c216bc7d5a0325ca1a 100644 (file)
@@ -10,6 +10,10 @@ import java.util.concurrent.TimeUnit;
 import org.apache.commons.lang.StringUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.wiring.BundleWiring;
 
 import user.commons.JobStatus;
 import user.jobengine.server.messages.JobStepCompletedMessage;
@@ -58,7 +62,7 @@ public class JobStepExecutor implements IJobStepExecutor {
 
                                        outputs = step.run(jobEngine, jobRuntime, inputs);
                                        jobEngine.sendMessage(new JobStepCompletedMessage(jobRuntime.getId(), outputs));
-                               } catch (Exception e) {
+                               } catch (Throwable e) {
                                        logger.error("Error in {}", jobRuntime);
                                        Throwable t = e.getCause() == null ? e : e.getCause();
                                        logger.catching(t);
@@ -136,6 +140,7 @@ public class JobStepExecutor implements IJobStepExecutor {
                // JobEngineException("Illegal concurrent instance count. Must be greater then 0.");
                //DynamicClassLoader loader = new DynamicClassLoader(getClass().getClassLoader());
                try {
+                       //ClassLoader parentClassLoader = getParentClassLoader();
                        URLClassLoader loader = URLClassLoader.newInstance(DynamicClassLocator.makeURLs(), getClass().getClassLoader());
                        stepClass = (Class<IJobStep>) loader.loadClass(className);
                } catch (ClassNotFoundException e) {
@@ -163,6 +168,19 @@ public class JobStepExecutor implements IJobStepExecutor {
                return maxConcurrent;
        }
 
+       private ClassLoader getParentClassLoader() {
+               ClassLoader parentClassLoader = getClass().getClassLoader();
+               Bundle bundle = FrameworkUtil.getBundle(getClass());
+               if (bundle != null) {
+                       BundleContext bundleContext = bundle.getBundleContext();
+                       if (bundleContext != null) {
+                               BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
+                               parentClassLoader = bundleWiring.getClassLoader();
+                       }
+               }
+               return parentClassLoader;
+       }
+
        @Override
        public PriorityBlockingQueue<IJobRuntime> getQueue() {
                return this.queue;
index 4780fdd87ce7149585c88c16ddc5d46273b31965..e84eb5de42518688d0a277c1d70dfee7de2a1aad 100644 (file)
@@ -9,6 +9,6 @@ public interface IJobStep {
 \r
        void cleanup();\r
 \r
-       Object[] run(IJobEngine jobEngine, IJobRuntime jobRuntime, Object[] inputs) throws Exception;\r
+       Object[] run(IJobEngine jobEngine, IJobRuntime jobRuntime, Object[] inputs) throws Throwable;\r
 \r
 }\r
index ae4602f2be4eb75d8f52a2c75c1207a136608b03..4899111c72002c405b1ad08cd6cf75cd2acc1041 100644 (file)
@@ -10,6 +10,10 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;\r
 import org.apache.logging.log4j.Marker;\r
 import org.apache.logging.log4j.MarkerManager;\r
+import org.osgi.framework.Bundle;\r
+import org.osgi.framework.BundleContext;\r
+import org.osgi.framework.FrameworkUtil;\r
+import org.osgi.framework.ServiceReference;\r
 \r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
@@ -54,6 +58,24 @@ public class JobStep implements IJobStep {
        public void cleanup() {\r
        }\r
 \r
+       private Object[] executeMethod(Method method, Object[] extendedInputs) throws Exception {\r
+               Object[] result;\r
+               try {\r
+                       logger.info("Executing {}", method);\r
+                       result = (Object[]) method.invoke(this, extendedInputs);\r
+               } catch (Exception e) {\r
+                       if (e instanceof IllegalArgumentException) {\r
+                               logger.error("Invokation error in {}. Invoke parameters:\r\n{}", getClass().getSimpleName(), Arrays.toString(extendedInputs));\r
+                               if (method.getParameterCount() != extendedInputs.length) {\r
+                                       logger.error("Expected parameter count: {}, invoke parameter count: {}", method.getGenericParameterTypes().length, extendedInputs.length);\r
+                               }\r
+                       }\r
+\r
+                       throw e;\r
+               }\r
+               return result;\r
+       }\r
+\r
        public String getDescription() {\r
                return null;\r
        }\r
@@ -73,34 +95,42 @@ public class JobStep implements IJobStep {
                return jobRuntime.getName();\r
        }\r
 \r
+       protected <T> T getService(Class<T> serviceClass) {\r
+               T service = null;\r
+               Bundle bundle = FrameworkUtil.getBundle(JobStep.class);\r
+               if (bundle != null) {\r
+                       BundleContext bundleContext = bundle.getBundleContext();\r
+                       ServiceReference<T> serviceReference = bundleContext.getServiceReference(serviceClass);\r
+                       if (serviceReference != null) {\r
+                               service = bundleContext.getService(serviceReference);\r
+                       }\r
+               }\r
+               return service;\r
+       }\r
+\r
        @Override\r
-       public Object[] run(IJobEngine jobEngine, IJobRuntime jobRuntime, Object[] inputs) throws Exception {\r
+       public Object[] run(IJobEngine jobEngine, IJobRuntime jobRuntime, Object[] inputs) throws Throwable {\r
                Object[] result = null;\r
                this.jobRuntime = jobRuntime;\r
                //jobRuntime.setDescription("Feldolgozás: " + getClass().getSimpleName());\r
 \r
                if (jobRuntime != null)\r
                        jobRuntime.NotifyUpdate();\r
-               for (Method method : this.getClass().getDeclaredMethods()) {\r
+               Method[] declaredMethods = null;\r
+               try {\r
+                       declaredMethods = this.getClass().getDeclaredMethods();\r
+               } catch (Throwable e) {\r
+                       logger.error("Class analize error", e);\r
+                       throw e;\r
+               }\r
+\r
+               for (Method method : declaredMethods) {\r
                        Annotation annotation = method.getAnnotation(StepEntry.class);\r
                        if (annotation != null) {\r
                                Object[] extendedInputs = inputs;\r
                                extendedInputs = addParameter(method, extendedInputs, IJobEngine.class, jobEngine);\r
                                extendedInputs = addParameter(method, extendedInputs, IJobRuntime.class, jobRuntime);\r
-                               try {\r
-                                       logger.info("Executing {}", method);\r
-                                       result = (Object[]) method.invoke(this, extendedInputs);\r
-                               } catch (Exception e) {\r
-                                       if (e instanceof IllegalArgumentException) {\r
-                                               logger.error("Invokation error in {}. Invoke parameters:\r\n{}", getClass().getSimpleName(), Arrays.toString(extendedInputs));\r
-                                               if (method.getParameterCount() != extendedInputs.length) {\r
-                                                       logger.error("Expected parameter count: {}, invoke parameter count: {}", method.getGenericParameterTypes().length,\r
-                                                                       extendedInputs.length);\r
-                                               }\r
-                                       }\r
-\r
-                                       throw e;\r
-                               }\r
+                               result = executeMethod(method, extendedInputs);\r
                                break;\r
                        }\r
                }\r
diff --git a/server/user.jobengine.osgi.server/test/user/jobengine/server/scheduler/CronExpressionTest.java b/server/user.jobengine.osgi.server/test/user/jobengine/server/scheduler/CronExpressionTest.java
new file mode 100644 (file)
index 0000000..ced165e
--- /dev/null
@@ -0,0 +1,20 @@
+package user.jobengine.server.scheduler;
+
+import java.util.Date;
+
+import org.junit.Test;
+import org.quartz.CronExpression;
+
+public class CronExpressionTest {
+
+       @Test
+       public void test1() throws Exception {
+
+               CronExpression ce = new CronExpression("0/30 0 15-8 * * ?");
+               Date nextTime = new Date();
+               for (int i = 0; i < 1000; i++) {
+                       nextTime = ce.getNextValidTimeAfter(nextTime);
+                       System.out.println(nextTime);
+               }
+       }
+}
index fd03db325a2358f45891c8a2cc366bf25b44f0e7..8d187eebb74dc801c689cccaf881e35eb3e277d7 100644 (file)
@@ -75,7 +75,7 @@ public class JobStepTest {
        }\r
 \r
        @Test\r
-       public void testRun() throws Exception {\r
+       public void testRun() throws Throwable {\r
                // Fixture\r
                final JobStepSpy sut = new JobStepSpy();\r
                final IJobEngine jobEngine = new JobEngine();\r
index 95a15f029208d3c1b3d47eb96543a2ad81e47dbf..ce18ea2c60c4878cff84e6ae2b54b84c6c4151d8 100644 (file)
@@ -13,5 +13,7 @@ Require-Bundle: org.mybatis.mybatis;bundle-version="3.5.2",
  com.microsoft.sqlserver.sqljdbc,
  com.ibm.db2jcc4;bundle-version="4.19.26"
 Bundle-ActivationPolicy: lazy
-Import-Package: user.mediacube.metadata.interfaces
+Import-Package: com.ibm.nosql.bson,
+ com.ibm.nosql.json.api,
+ user.mediacube.metadata.interfaces
 Bundle-ClassPath: .
index c8885a237677a290b95709d9d27ea433f8d7772a..2b0c807bc3bc12b0da4f7f43ea4b81e9e9f6bd6e 100644 (file)
@@ -11,6 +11,8 @@ import org.apache.ibatis.session.SqlSessionFactory;
 import org.apache.ibatis.session.SqlSessionFactoryBuilder;\r
 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
 import user.mediacube.metadata.interfaces.IMetadataProvider;\r
@@ -37,8 +39,15 @@ public abstract class MyBatisMetadataProvider implements IMetadataProvider {
 \r
        abstract protected DataSource createDataSource();\r
 \r
+       abstract protected IMetadataListOptions createOptions(BasicDBObject options);\r
+\r
        abstract protected String getDriverClassName();\r
 \r
+       @Override\r
+       public List<IMetadata> list(BasicDBObject options) throws Exception {\r
+               return list(createOptions(options));\r
+       }\r
+\r
        @Override\r
        public List<IMetadata> list(IMetadataListOptions options) throws Exception {\r
                List<IMetadata> result = null;\r
index 080adaf50c9a0f8c57cb786c18fd72171425754d..e071330a9a0369d01027d3548821daa6377a62df 100644 (file)
@@ -1,5 +1,7 @@
 package user.mediacube.metadata.hsm;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 \r
 public class HSMContent implements IMetadata {\r
@@ -12,6 +14,20 @@ public class HSMContent implements IMetadata {
        private long objectId;\r
        private int start;\r
 \r
+       @Override\r
+       public BasicDBObject asJSON() {\r
+               BasicDBObject result = new BasicDBObject();\r
+               result.put("fileName", fileName);\r
+               result.put("fileSize", fileSize);\r
+               result.put("segment", segment);\r
+               result.put("filespaceName", filespaceName);\r
+               result.put("volumeName", volumeName);\r
+               result.put("nodeName", nodeName);\r
+               result.put("objectId", objectId);\r
+               result.put("start", start);\r
+               return result;\r
+       }\r
+\r
        public String getFileName() {\r
                return fileName;\r
        }\r
index ddd9513ffd46bdef81380bcbaa25c53c08957733..6fe18820dbd97bbe18b6473afd8af51af03ddc9c 100644 (file)
@@ -8,6 +8,8 @@ import org.apache.ibatis.datasource.pooled.PooledDataSource;
 import org.apache.ibatis.session.Configuration;\r
 import org.apache.ibatis.session.SqlSession;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.mediacube.metadata.MyBatisMetadataProvider;\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
@@ -27,6 +29,17 @@ public class HSMMetadataProvider extends MyBatisMetadataProvider {
                return new PooledDataSource(JDBC_DRIVER, JDBC_URL, JDBC_USER, JDBC_PWD);\r
        }\r
 \r
+       @Override\r
+       protected IMetadataListOptions createOptions(BasicDBObject options) {\r
+               HSMListOptions result = new HSMListOptions();\r
+               if (options.containsKey("volumeName"))\r
+                       result.setVolumeName(options.getString("volumeName"));\r
+               if (options.containsKey("fileName"))\r
+                       result.setVolumeName(options.getString("fileName"));\r
+               return result;\r
+\r
+       }\r
+\r
        @Override\r
        protected String getDriverClassName() {\r
                return JDBC_DRIVER;\r
@@ -38,10 +51,10 @@ public class HSMMetadataProvider extends MyBatisMetadataProvider {
                IHSMMaterialMapper mapper = session.getMapper(IHSMMaterialMapper.class);\r
                List<IMetadata> result = null;\r
 \r
-               if (options == null) {\r
+               HSMListOptions listOptions = (HSMListOptions) options;\r
+               if (listOptions.getVolumeName() == null && listOptions.getFileName() == null) {\r
                        result = (List<IMetadata>) (List<?>) mapper.getVolumeNames();\r
                } else {\r
-                       HSMListOptions listOptions = (HSMListOptions) options;\r
                        if (listOptions.getVolumeName() != null)\r
                                result = (List<IMetadata>) (List<?>) mapper.getByVolumeName(listOptions.getVolumeName());\r
                        else if (listOptions.getFileName() != null)\r
index c43ca11f9cde5801797e0ab9914257f52c1de6fe..6cb015a022edcabf3b49b6ad0986c22e9d5de993 100644 (file)
@@ -1,10 +1,19 @@
 package user.mediacube.metadata.hsm;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 \r
 public class HSMVolume implements IMetadata {\r
        private String volumeName;\r
 \r
+       @Override\r
+       public BasicDBObject asJSON() {\r
+               BasicDBObject result = new BasicDBObject();\r
+               result.put("volumeName", volumeName);\r
+               return result;\r
+       }\r
+\r
        @Override\r
        public String getId() {\r
                return null;\r
@@ -22,5 +31,4 @@ public class HSMVolume implements IMetadata {
        public void setVolumeName(String volumeName) {\r
                this.volumeName = volumeName;\r
        }\r
-\r
 }\r
index 31d61dd50b3237e1b217ae30b4c6bc93b629dc97..2f3a1f8aa054a6b55e7af888373ef7a7331ab109 100644 (file)
@@ -1,5 +1,7 @@
 package user.mediacube.metadata.planair;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 \r
 public class PlanAirAD implements IMetadata {\r
@@ -8,6 +10,16 @@ public class PlanAirAD implements IMetadata {
        private int spotID;//t_SpotID\r
        private String okForAirs; //v_OkForAirs\r
 \r
+       @Override\r
+       public BasicDBObject asJSON() {\r
+               BasicDBObject result = new BasicDBObject();\r
+               result.put("mediaID", mediaID);\r
+               result.put("title", title);\r
+               result.put("spotID", spotID);\r
+               result.put("okForAirs", okForAirs);\r
+               return result;\r
+       }\r
+\r
        @Override\r
        public String getId() {\r
                return mediaID;\r
@@ -21,6 +33,7 @@ public class PlanAirAD implements IMetadata {
                return spotID;\r
        }\r
 \r
+       @Override\r
        public String getTitle() {\r
                return title;\r
        }\r
index b0d0060576c60c7e254e2dc8bd0cf9c461ccad6d..3270f64923d629ded6de30deefb3bf96437f101f 100644 (file)
@@ -2,6 +2,8 @@ package user.mediacube.metadata.planair;
 \r
 import java.util.Date;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 \r
 public class PlanAirMaterial implements IMetadata {\r
@@ -18,6 +20,24 @@ public class PlanAirMaterial implements IMetadata {
        private int segNr;\r
        private int segID;\r
 \r
+       @Override\r
+       public BasicDBObject asJSON() {\r
+               BasicDBObject result = new BasicDBObject();\r
+               result.put("episodeID", episodeID);\r
+               result.put("variantID", variantID);\r
+               result.put("mediaID", mediaID);\r
+               result.put("epTitle", epTitle);\r
+               result.put("progTitle", progTitle);\r
+               result.put("episode", episode);\r
+               result.put("okForAir", okForAir);\r
+               result.put("variantNrSegments", variantNrSegments);\r
+               result.put("nextBroadcastDate", nextBroadcastDate);\r
+               result.put("firstBroadcastDate", firstBroadcastDate);\r
+               result.put("segNr", segNr);\r
+               result.put("segID", segID);\r
+               return result;\r
+       }\r
+\r
        public short getEpisode() {\r
                return episode;\r
        }\r
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataListOptions.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/planair/PlanAirMetadataListOptions.java
new file mode 100644 (file)
index 0000000..8002b85
--- /dev/null
@@ -0,0 +1,46 @@
+package user.mediacube.metadata.planair;\r
+\r
+import java.util.Date;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
+import user.mediacube.metadata.interfaces.MetadataType;\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
index e24a8e279ab78de0cc4ee304b95be5aeb7f22d22..1c3b612f9ee422cd6e0f4952f680869adc0479a9 100644 (file)
@@ -5,77 +5,78 @@ import java.util.List;
 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
+import com.ibm.nosql.json.api.BasicDBObject;\r
 \r
+import user.mediacube.metadata.MyBatisMetadataProvider;\r
+import user.mediacube.metadata.hsm.HSMListOptions;\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
-import user.mediacube.metadata.interfaces.IMetadataProvider;\r
 import user.mediacube.metadata.interfaces.PlanAirMetadataListOptions;\r
 \r
-public class PlanAirMetadataProvider implements IMetadataProvider {\r
+public class PlanAirMetadataProvider extends MyBatisMetadataProvider {\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_URL = System.getProperty("jobengine.planair.db.url", "jdbc:sqlserver://10.11.254.86;databaseName=PA_Vivantis;");\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
+       private static final String JDBC_PWD = System.getProperty("jobengine.planair.db.password", "VDani");\r
        public static final String JDBC_PROCEDURE = System.getProperty("jobengine.planair.db.procedure", "clIFsp_ORI_MAM");\r
 \r
-       private final SqlSessionFactory sqlSessionFactory;\r
-\r
        public PlanAirMetadataProvider() throws Exception {\r
-               try {\r
+               super();\r
+       }\r
 \r
-                       Class<SQLServerDriver> forName = (Class<SQLServerDriver>) Class.forName(JDBC_DRIVER);\r
-                       sqlSessionFactory = buildqlSessionFactory();\r
-               } catch (Exception e) {\r
-                       throw e;\r
-               }\r
+       @Override\r
+       protected DataSource createDataSource() {\r
+               return new PooledDataSource(JDBC_DRIVER, JDBC_URL, JDBC_USER, JDBC_PWD);\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
-               configuration.addMapper(IPlanAirPromoMapper.class);\r
-               configuration.addMapper(IPlanAirADMapper.class);\r
-               SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();\r
-               return builder.build(configuration);\r
+       @Override\r
+       protected IMetadataListOptions createOptions(BasicDBObject options) {\r
+               HSMListOptions result = new HSMListOptions();\r
+               if (options.containsKey("volumeName"))\r
+                       result.setVolumeName(options.getString("volumeName"));\r
+               if (options.containsKey("fileName"))\r
+                       result.setVolumeName(options.getString("fileName"));\r
+               return result;\r
        }\r
 \r
        @Override\r
-       public List<IMetadata> list(IMetadataListOptions options) throws Exception {\r
+       protected String getDriverClassName() {\r
+               return JDBC_DRIVER;\r
+       }\r
+\r
+       @SuppressWarnings("unchecked")\r
+       @Override\r
+       protected List<IMetadata> queryList(SqlSession session, IMetadataListOptions options) {\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
-                               IPlanAirADMapper adMapper = session.getMapper(IPlanAirADMapper.class);\r
-                               result = (List<IMetadata>) (List<?>) adMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay());\r
-                               break;\r
-                       case Material:\r
-                               IPlanAirMaterialMapper materialMapper = session.getMapper(IPlanAirMaterialMapper.class);\r
-                               result = (List<IMetadata>) (List<?>) materialMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay());\r
-                               break;\r
-                       case Promo:\r
-                               IPlanAirPromoMapper promoMapper = session.getMapper(IPlanAirPromoMapper.class);\r
-                               result = (List<IMetadata>) (List<?>) promoMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay());\r
-                               break;\r
-                       default:\r
-                               throw new Exception("Missing metadata type");\r
-                       }\r
-               } catch (Exception e) {\r
-                       throw e;\r
+               PlanAirMetadataListOptions opt = (PlanAirMetadataListOptions) options;\r
+               int problematic = opt.isProblematic() ? 1 : 0;\r
+\r
+               switch (opt.getType()) {\r
+               case AD:\r
+                       IPlanAirADMapper adMapper = session.getMapper(IPlanAirADMapper.class);\r
+                       result = (List<IMetadata>) (List<?>) adMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay());\r
+                       break;\r
+               case Material:\r
+                       IPlanAirMaterialMapper materialMapper = session.getMapper(IPlanAirMaterialMapper.class);\r
+                       result = (List<IMetadata>) (List<?>) materialMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay());\r
+                       break;\r
+               case Promo:\r
+                       IPlanAirPromoMapper promoMapper = session.getMapper(IPlanAirPromoMapper.class);\r
+                       result = (List<IMetadata>) (List<?>) promoMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay());\r
+                       break;\r
                }\r
                return result;\r
        }\r
 \r
+       @Override\r
+       protected void registerMappers(Configuration configuration) {\r
+               configuration.addMapper(IPlanAirMaterialMapper.class);\r
+               configuration.addMapper(IPlanAirPromoMapper.class);\r
+               configuration.addMapper(IPlanAirADMapper.class);\r
+       }\r
+\r
 }\r
index 195f29cf8d7f9bc5dd4e5addd0f1587f5ea9d3bb..978894832684dd8b12a185f930893c648c0325d6 100644 (file)
@@ -2,6 +2,8 @@ package user.mediacube.metadata.planair;
 \r
 import java.util.Date;\r
 \r
+import com.ibm.nosql.json.api.BasicDBObject;\r
+\r
 import user.mediacube.metadata.interfaces.IMetadata;\r
 \r
 public class PlanAirPromo implements IMetadata {\r
@@ -13,6 +15,19 @@ public class PlanAirPromo implements IMetadata {
        private int spotID;//t_SpotID\r
        private String okForAirs; //v_OkForAirs\r
 \r
+       @Override\r
+       public BasicDBObject asJSON() {\r
+               BasicDBObject result = new BasicDBObject();\r
+               result.put("mediaID", mediaID);\r
+               result.put("title", title);\r
+               result.put("progTitle", progTitle);\r
+               result.put("episode", episode);\r
+               result.put("psStart", psStart);\r
+               result.put("spotID", spotID);\r
+               result.put("okForAirs", okForAirs);\r
+               return result;\r
+       }\r
+\r
        public short getEpisode() {\r
                return episode;\r
        }\r
@@ -42,6 +57,7 @@ public class PlanAirPromo implements IMetadata {
                return spotID;\r
        }\r
 \r
+       @Override\r
        public String getTitle() {\r
                return title;\r
        }\r
index f607d6cf6b9d8c5b9f5c59495d63d4fccee9f515..7821c11e06daad564ae056ee93af93add35ca138 100644 (file)
@@ -7,6 +7,8 @@ import java.util.List;
 
 import org.junit.Test;
 
+import com.ibm.nosql.json.api.BasicDBObject;
+
 import user.mediacube.metadata.MetadataProviderFactory;
 import user.mediacube.metadata.hsm.HSMListOptions;
 import user.mediacube.metadata.interfaces.IMetadata;
@@ -67,7 +69,7 @@ public class HSMMetadataTest {
                IMetadataProvider sut = factory.getProvider(MetadataProviderType.HSM);
 
                // Exercise
-               List<IMetadata> result = sut.list(null);
+               List<IMetadata> result = sut.list(new BasicDBObject());
 
                // Verify
                assertNotNull(result);
index 4eb8ea4c1fbe6b991d68229f94bed29ea813e977..82711f8199f1dceb3799a7d951da39b14021303a 100644 (file)
@@ -31,6 +31,36 @@ public class PlanAirMetadataTest {
                assertTrue(result.size() > 0);
        }
 
+       @Test
+       public void testAllSearch() throws Exception {
+               // Fixture
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setSearch("09-00165-0006-1");
+               IMetadataProvider sut = factory.getProvider(MetadataProviderType.PLANAIR);
+
+               List<IMetadata> result = null;
+               opt.setType(MetadataType.Material);
+               result = sut.list(opt);
+               if (result.size() != 0) {
+                       System.out.println("Found as MATERIAL");
+                       return;
+               }
+               opt.setType(MetadataType.Promo);
+               result = sut.list(opt);
+               if (result.size() != 0) {
+                       System.out.println("Found as PROMO");
+                       return;
+               }
+               opt.setType(MetadataType.AD);
+               result = sut.list(opt);
+               if (result.size() != 0) {
+                       System.out.println("Found as AD");
+                       return;
+               }
+
+               System.out.println("Not exists");
+       }
+
        @Test
        public void testFactoryConnection() throws Exception {
                // Fixture
@@ -89,7 +119,7 @@ public class PlanAirMetadataTest {
                // Fixture
                PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
                opt.setType(MetadataType.Material);
-               opt.setSearch("105428");
+               opt.setSearch("13-01734-0015-1");
                test(opt);
        }