git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 9 Aug 2019 14:11:02 +0000 (14:11 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 9 Aug 2019 14:11:02 +0000 (14:11 +0000)
30 files changed:
server/-configuration/run-mediacube-server.launch
server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java
server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF
server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java [new file with mode: 0644]
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataListOptions.java [new file with mode: 0644]
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java [moved from server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataProvider.java with 72% similarity]
server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java [new file with mode: 0644]
server/user.jobengine.osgi.server/OSGI-INF/componentBinder.xml
server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ComponentBinder.java
server/user.jobengine.osgi.services/OSGI-INF/componentBinder.xml
server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java
server/user.mediacube.metadata/.project
server/user.mediacube.metadata/META-INF/MANIFEST.MF
server/user.mediacube.metadata/OSGI-INF/component.xml [new file with mode: 0644]
server/user.mediacube.metadata/build.properties
server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java [deleted file]
server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataListOptions.java [deleted file]
server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderFactory.java [deleted file]
server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderType.java [deleted file]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirAD.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java
server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirPromo.java [new file with mode: 0644]
server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java [new file with mode: 0644]
server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java

index 994fd7956de8408c338ad49adf7a28bc1b83f5ae..c4e4b391323318539f8a37ced701b4915b09e1a0 100644 (file)
@@ -22,9 +22,9 @@
 <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
+<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.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.tsm.client@default:default"/>\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 92041c9e28ca624dc0b70b5af8e63134576356f9..2a2dfd8a9cad16cb876fe787d58aade8072e94a9 100644 (file)
@@ -43,6 +43,7 @@ import user.jobengine.server.steps.ProjectCleanupMountedLocationStep;
 import user.jobengine.server.steps.RundownArchive;\r
 import user.tsm.client.TSMBackupFileObject;\r
 import user.tsm.client.TSMClient;\r
+import user.tsm.client.TSMException;\r
 \r
 public class Support {\r
 \r
@@ -272,21 +273,37 @@ public class Support {
        @Test\r
        public void testTSM() throws Exception {\r
                //System.setProperty("PATH", "c:\\_workspace\\USER\\MediaCube\\server\\user.tsm.client\\apilib\\;%PATH%");\r
-               TSMClient client = null;\r
+               TSMClient c = null;\r
                try {\r
-                       client = new TSMClient("JOBENGINE");\r
-                       client.connect("mediacube", "password");\r
+                       final TSMClient client = new TSMClient("JOBENGINE");\r
+                       c = client;\r
+                       client.connect("mediacube", "password", "/");\r
+\r
+                       String query = "select mf.houseid, archived from mediafile mf, media m where mf.mediaid=m.id and mf.storeid=1 and archived > '2019-07-01' and archived < '2019-08-01' order by archived asc";\r
+                       manager.executeQuery(query, rs -> {\r
+\r
+                               TSMBackupFileObject[] objects = null;\r
+                               String houseId = null;\r
+                               try {\r
+                                       houseId = rs.getString("houseid");\r
+                                       objects = client.queryActiveBackupObjects("/JOBENGINE", "/JOBENGINE", "/" + houseId);\r
+                               } catch (TSMException e) {\r
+                                       e.printStackTrace();\r
+                               }\r
+\r
+                               if (objects != null && objects.length != 1) {\r
+                                       System.out.println(houseId + " count: " + objects.length + " archived: " + rs.getTimestamp("archived"));\r
+                               } else\r
 \r
-                       TSMBackupFileObject[] objects = client.queryActiveBackupObjects("/JOBENGINE", File.separator + "JOBENGINE/",\r
-                                       File.separator + "0606_RAZZIA_CLEANFEED_MIX-20180531113140.MXF");\r
+                                       System.out.println(houseId);\r
+                               return true;\r
+                       }, null);\r
 \r
-                       if (objects != null)\r
-                               System.out.println(objects.length);\r
                } catch (Exception e) {\r
                        System.out.println(e.getMessage());\r
                } finally {\r
-                       if (client != null)\r
-                               client.disconnect();\r
+                       if (c != null)\r
+                               c.disconnect();\r
                }\r
 \r
        }\r
index 512c3e68176973ae9318b6baeba165f4c3d208bd..b136357dd500de47880db016017b45b24071bc38 100644 (file)
@@ -34,7 +34,8 @@ Export-Package: user.commons,
  user.commons.selenio.wsclient,
  user.commons.server.protocol,
  user.commons.server.tcp,
- user.commons.strings
+ user.commons.strings,
+ user.mediacube.metadata.interfaces
 Require-Bundle: org.apache.commons.lang;bundle-version="2.4.0",
  user.tsm.client;bundle-version="1.2.0",
  org.apache.commons.digester;bundle-version="3.2.0";visibility:=reexport,
index 05b5b923a36ca028ee0b46fd6c42ef7917c16e0d..3d00baab3c975c5ea3cc92d9002ec782780c660e 100644 (file)
@@ -307,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
@@ -403,6 +403,8 @@ public class NexioDispatcher implements ClipEventListener {
        }\r
 \r
        private void shutdown() {\r
+               if (disabled)\r
+                       return;\r
                logger.info("Shutting down Nexio service");\r
                if (mediaListener != null) {\r
                        mediaListener.disconnect();\r
@@ -415,6 +417,8 @@ public class NexioDispatcher implements ClipEventListener {
        }\r
 \r
        public void startup() {\r
+               if (disabled)\r
+                       return;\r
                logger.info("Starting up Nexio service");\r
                this.controller = new Controller(NEXIO_HOST);\r
                try {\r
diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java
new file mode 100644 (file)
index 0000000..8d6178a
--- /dev/null
@@ -0,0 +1,5 @@
+package user.mediacube.metadata.interfaces;\r
+\r
+public interface IMetadata {\r
+\r
+}\r
diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataListOptions.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataListOptions.java
new file mode 100644 (file)
index 0000000..236474b
--- /dev/null
@@ -0,0 +1,5 @@
+package user.mediacube.metadata.interfaces;\r
+\r
+public interface IMetadataListOptions {\r
+\r
+}\r
diff --git a/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java
new file mode 100644 (file)
index 0000000..31e0357
--- /dev/null
@@ -0,0 +1,5 @@
+package user.mediacube.metadata.interfaces;\r
+\r
+public enum MetadataProviderType {\r
+       PLANAIR\r
+}\r
index c1c2023552d4e98b6be841ac16487e31eac94e5f..58597f111c002ab2a4874c75648704542e42008c 100644 (file)
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="user.jobengine.server.ComponentBinder">\r
    <implementation class="user.jobengine.osgi.server.ComponentBinder"/>\r
-   <reference bind="bindService" cardinality="1..1" interface="user.commons.nexio.INexioAPI" name="INexioAPI" policy="static" unbind="unbindService"/>\r
+   <reference cardinality="1..1" interface="user.commons.nexio.INexioAPI" name="INexioAPI" policy="static" bind="bindNexioService" unbind="unbindNexioService"/>\r
+   <reference bind="bindMetadataProviderFactory" cardinality="1..1" interface="user.mediacube.metadata.interfaces.IMetadataProviderFactory" policy="static"/>\r
+\r
 </scr:component>\r
index 3faa7506a9424009662cbb490da4466d479a6ee0..95000e55c6bcf2f2f8cd64bf482d5c81c8637f1d 100644 (file)
@@ -4,11 +4,13 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;\r
 \r
 import user.commons.nexio.INexioAPI;\r
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;\r
 \r
 public class ComponentBinder {\r
        private static final String MEDIACUBE = "MEDIACUBE";\r
        private static final Logger logger = LogManager.getLogger();\r
        private static INexioAPI nexioAPI;\r
+       private static IMetadataProviderFactory metadataProviderFactory;\r
 \r
        public static INexioAPI getNexioAPI() {\r
                if (nexioAPI == null)\r
@@ -16,19 +18,28 @@ public class ComponentBinder {
                return nexioAPI;\r
        }\r
 \r
-       public synchronized void bindService(Object service) {\r
+       public synchronized void bindMetadataProviderFactory(Object service) {\r
+               if (service instanceof IMetadataProviderFactory) {\r
+                       metadataProviderFactory = (IMetadataProviderFactory) service;\r
+                       logger.info("IMetadataProviderFactory service binded");\r
+               }\r
+       }\r
+\r
+       public synchronized void bindNexioService(Object service) {\r
                if (service instanceof INexioAPI) {\r
                        nexioAPI = (INexioAPI) service;\r
                        logger.info("INexioAPI service binded");\r
-                       return;\r
                }\r
        }\r
 \r
-       public synchronized void unbindService(Object service) {\r
-               if (service instanceof INexioAPI) {\r
-                       nexioAPI = null;\r
-                       logger.info("INexioAPI service unbinded");\r
-                       return;\r
-               }\r
+       public synchronized void unbindMetadataProviderFactory(Object service) {\r
+               metadataProviderFactory = null;\r
+               logger.info("IMetadataProviderFactory service unbinded");\r
+       }\r
+\r
+       public synchronized void unbindNexioService(Object service) {\r
+               nexioAPI = null;\r
+               logger.info("INexioAPI service unbinded");\r
        }\r
+\r
 }\r
index a29dc9aa09493cfdba067da5413adde8ceedc2de..058565c12d2922037fb67833ecc49013d706ad9f 100644 (file)
@@ -6,5 +6,4 @@
    <reference bind="bindService" cardinality="1..1" interface="user.commons.octopus.IOctopusAPI" name="IOctopusAPI" policy="static" unbind="unbindService"/>\r
    <reference bind="bindService" cardinality="1..1" interface="user.commons.nexio.INexioAPI" name="INexioAPI" policy="static" unbind="unbindService"/>\r
    <reference bind="bindService" cardinality="1..1" interface="user.jobengine.osgi.ws.nexio.NexioWSServlet" name="NexioWSServlet" policy="static" unbind="unbindService"/>\r
-\r
 </scr:component>\r
index 3733ef71d6f136634a6b491e7412d3dea4eb946a..72f0b0accf487cfac24436ebb27e8945a282f458 100644 (file)
@@ -52,6 +52,8 @@ public class ComponentBinder {
        }\r
 \r
        public synchronized void bindService(Object service) {\r
+               //logger.info("Ref {}", service.getClass());\r
+\r
                if (service instanceof IJobEngine) {\r
                        jobengine = (IJobEngine) service;\r
                        logger.info("IJobEngine service binded");\r
index abaf97fbd7b04c607b1fa973c42d1718b2631a06..3e54ac1e9f5bb8dc1a514549387da0610a1215f5 100644 (file)
                        <arguments>\r
                        </arguments>\r
                </buildCommand>\r
+               <buildCommand>\r
+                       <name>org.eclipse.pde.ds.core.builder</name>\r
+                       <arguments>\r
+                       </arguments>\r
+               </buildCommand>\r
        </buildSpec>\r
        <natures>\r
                <nature>org.eclipse.pde.PluginNature</nature>\r
index d0cdd11a6ec03e5405b8b4a5e3c2f02f44261a00..f3711cb626f6773e84df12cfd0abff9bb147c96e 100644 (file)
@@ -1,11 +1,15 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Metadata
-Bundle-SymbolicName: user.mediacube.metadata
+Bundle-SymbolicName: user.mediacube.metadata;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: user.mediabube.metadata
+Service-Component: OSGI-INF/component.xml
+DynamicImport-Package: *
 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
+ com.microsoft.sqlserver.sqljdbc
+Bundle-ActivationPolicy: lazy
+Import-Package: user.mediacube.metadata.interfaces
+Bundle-ClassPath: .
diff --git a/server/user.mediacube.metadata/OSGI-INF/component.xml b/server/user.mediacube.metadata/OSGI-INF/component.xml
new file mode 100644 (file)
index 0000000..9587041
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true">\r
+   <implementation class="user.mediacube.metadata.MetadataProviderFactory"/>\r
+   <service>\r
+      <provide interface="user.mediacube.metadata.interfaces.IMetadataProviderFactory"/>\r
+   </service>
+</scr:component>\r
index 41eb6ade2b4f20b43023591aff3c2d34c4d95883..a65755cb2a8c853ab95d72ab0a8fc9ddd270d0ba 100644 (file)
@@ -1,4 +1,5 @@
 source.. = src/\r
 output.. = bin/\r
 bin.includes = META-INF/,\\r
-               .\r
+               .,\\r
+               OSGI-INF/\r
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java
deleted file mode 100644 (file)
index 1aaec72..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-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
deleted file mode 100644 (file)
index bd8431c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package user.mediabube.metadata;\r
-\r
-public interface IMetadataListOptions {\r
-\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
deleted file mode 100644 (file)
index 5433071..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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
deleted file mode 100644 (file)
index 9b5959b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-package user.mediabube.metadata;\r
-\r
-public enum MetadataProviderType {\r
-       PLANAIR\r
-}\r
index 73ff6c8d6ba93d5c4e8696e6f63d769328391582..06a78538ad99845369a0fb0e1b86a36dab32f1cb 100644 (file)
@@ -14,23 +14,15 @@ public interface IPlanAirADMapper {
 \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
+       static final String AD_SQL = "{CALL dbo.clIFsp_EC_MAM(3002, #{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.t_SpotID = (int)ReadInt(reader, ref f);\r
+       //    item.t_MediaID = ReadString(reader, ref f);\r
+       //    item.v_Title = ReadString(reader, ref f);\r
+       //    item.v_OkForAirs = ReadString(reader, ref f);\r
 \r
-       @Select(value = MATERIAL_SQL)\r
+       @Select(value = AD_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
+       @Results(value = { @Result(property = "spotID", column = "t_SpotID"), @Result(property = "mediaID", column = "t_MediaID"),\r
+                       @Result(property = "title", column = "v_Title"), @Result(property = "okForAirs", column = "v_OkForAirs") })\r
+       public List<PlanAirAD> getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay);\r
 }\r
index 7890705536964b996ea1df294fcc3a833fdcd9c6..0f0981eed730a422a957f332921a4bce8ea5e4d1 100644 (file)
@@ -14,7 +14,7 @@ public interface IPlanAirMaterialMapper {
 \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
+       static final String MATERIAL_SQL = "{CALL dbo.clIFsp_EC_MAM(6002, #{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
@@ -24,6 +24,9 @@ public interface IPlanAirMaterialMapper {
        //    item.v_VariantNrSegments = ReadInt(reader, ref f);\r
        //    item.v_FirstBroadcastDate = ReadDateTime(reader, ref f);\r
        //    item.v_NextBroadcastDate = ReadDateTime(reader, ref f);\r
+       //    item.v_OkForAir = ReadBool(reader, ref f);\r
+       //    item.v_SegNr = ReadInt(reader, ref f);\r
+       //    item.v_SegID = ReadInt(reader, ref f);\r
 \r
        @Select(value = MATERIAL_SQL)\r
        @Options(statementType = StatementType.CALLABLE)\r
@@ -31,6 +34,7 @@ public interface IPlanAirMaterialMapper {
                        @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
+                       @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate"), @Result(property = "okForAir", column = "v_OkForAir"),\r
+                       @Result(property = "segNr", column = "v_SegNr"), @Result(property = "segID", column = "v_SegID") })\r
        public List<PlanAirMaterial> getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay);\r
 }\r
index 2e8879a44df8b82ce60196da8a1cdaddef9500d4..15585dd8dad4e0df3b15a1f762df9839e56685a9 100644 (file)
@@ -14,23 +14,21 @@ public interface IPlanAirPromoMapper {
 \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
+\r
+       static final String PROMO_SQL = "{CALL dbo.clIFsp_EC_MAM(2002, #{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.t_SpotID = (int)ReadInt(reader, ref f);\r
+       //    item.t_MediaID = ReadString(reader, ref f);\r
+       //    item.v_Title = 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
+       //    item.t_PSStart = ReadDateTime(reader, ref f);\r
+       //    item.v_OkForAirs = ReadString(reader, ref f);\r
 \r
-       @Select(value = MATERIAL_SQL)\r
+       @Select(value = PROMO_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
+       @Results(value = { @Result(property = "spotID", column = "t_SpotID"), @Result(property = "mediaID", column = "t_MediaID"),\r
+                       @Result(property = "title", column = "v_Title"), @Result(property = "progTitle", column = "v_ProgTitle"),\r
+                       @Result(property = "episode", column = "v_Episode"), @Result(property = "psStart", column = "t_PSStart"),\r
+                       @Result(property = "okForAirs", column = "v_OkForAirs") })\r
+       public List<PlanAirPromo> 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/PlanAirAD.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirAD.java
new file mode 100644 (file)
index 0000000..96937b9
--- /dev/null
@@ -0,0 +1,39 @@
+package user.mediabube.metadata.planair;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+\r
+public class PlanAirAD implements IMetadata {\r
+       private String mediaID; //t_MediaID\r
+       private String title; //v_Title\r
+       private int spotID;//t_SpotID\r
+       private String okForAirs; //v_OkForAirs\r
+\r
+       public String getMediaID() {\r
+               return mediaID;\r
+       }\r
+\r
+       public int getSpotID() {\r
+               return spotID;\r
+       }\r
+\r
+       public String getTitle() {\r
+               return title;\r
+       }\r
+\r
+       public boolean isOkForAir() {\r
+               return "OK".equals(okForAirs);\r
+       }\r
+\r
+       public void setMediaID(String mediaID) {\r
+               this.mediaID = mediaID;\r
+       }\r
+\r
+       public void setSpotID(int spotID) {\r
+               this.spotID = spotID;\r
+       }\r
+\r
+       public void setTitle(String title) {\r
+               this.title = title;\r
+       }\r
+\r
+}
\ No newline at end of file
index 0399abdaf295fc92debe7efc082c572ee968d0f6..dfc813d3d57f0e513c433dcf375ace1053fa0bef 100644 (file)
@@ -2,7 +2,7 @@ package user.mediabube.metadata.planair;
 \r
 import java.util.Date;\r
 \r
-import user.mediabube.metadata.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
 \r
 public class PlanAirMaterial implements IMetadata {\r
        private String episodeID;\r
@@ -15,6 +15,8 @@ public class PlanAirMaterial implements IMetadata {
        private int variantNrSegments;\r
        private Date nextBroadcastDate;\r
        private Date firstBroadcastDate;\r
+       private int segNr;\r
+       private int segID;\r
 \r
        public short getEpisode() {\r
                return episode;\r
@@ -44,6 +46,14 @@ public class PlanAirMaterial implements IMetadata {
                return progTitle;\r
        }\r
 \r
+       public int getSegID() {\r
+               return segID;\r
+       }\r
+\r
+       public int getSegNr() {\r
+               return segNr;\r
+       }\r
+\r
        public int getVariantID() {\r
                return variantID;\r
        }\r
@@ -88,6 +98,14 @@ public class PlanAirMaterial implements IMetadata {
                this.progTitle = progTitle;\r
        }\r
 \r
+       public void setSegID(int segID) {\r
+               this.segID = segID;\r
+       }\r
+\r
+       public void setSegNr(int segNr) {\r
+               this.segNr = segNr;\r
+       }\r
+\r
        public void setVariantID(int variantID) {\r
                this.variantID = variantID;\r
        }\r
index c86f121c445b65e1135fba0f420518617d9d16ee..5d5a487b27b05b67987556eeb68282040b108f6f 100644 (file)
@@ -2,7 +2,7 @@ package user.mediabube.metadata.planair;
 \r
 import java.util.Date;\r
 \r
-import user.mediabube.metadata.IMetadataListOptions;\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
 \r
 public class PlanAirMetadataListOptions implements IMetadataListOptions {\r
        private Date broadcastDay;\r
index 2631189fff2650493bcff7fc1a6960a454e41e42..ad215422150f336d6e47eff92a437f2c826438f6 100644 (file)
@@ -14,10 +14,9 @@ import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
 \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
+import user.mediacube.metadata.interfaces.IMetadata;\r
+import user.mediacube.metadata.interfaces.IMetadataListOptions;\r
+import user.mediacube.metadata.interfaces.IMetadataProvider;\r
 \r
 public class PlanAirMetadataProvider implements IMetadataProvider {\r
        private static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";\r
@@ -42,6 +41,8 @@ public class PlanAirMetadataProvider implements IMetadataProvider {
                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
        }\r
@@ -55,12 +56,16 @@ public class PlanAirMetadataProvider implements IMetadataProvider {
 \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 mapper = session.getMapper(IPlanAirMaterialMapper.class);\r
-                               result = ListUtils.cast(mapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay()));\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
diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirPromo.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirPromo.java
new file mode 100644 (file)
index 0000000..5229678
--- /dev/null
@@ -0,0 +1,76 @@
+package user.mediabube.metadata.planair;\r
+\r
+import java.util.Date;\r
+\r
+import user.mediacube.metadata.interfaces.IMetadata;\r
+\r
+public class PlanAirPromo implements IMetadata {\r
+       private String mediaID; //t_MediaID\r
+       private String title; //v_Title\r
+       private String progTitle;//v_ProgTitle\r
+       private short episode;//v_Episode\r
+       private Date psStart;//t_PSStart\r
+       private int spotID;//t_SpotID\r
+       private String okForAirs; //v_OkForAirs\r
+\r
+       public short getEpisode() {\r
+               return episode;\r
+       }\r
+\r
+       public String getMediaID() {\r
+               return mediaID;\r
+       }\r
+\r
+       public String getOkForAirs() {\r
+               return okForAirs;\r
+       }\r
+\r
+       public String getProgTitle() {\r
+               return progTitle;\r
+       }\r
+\r
+       public Date getPsStart() {\r
+               return psStart;\r
+       }\r
+\r
+       public int getSpotID() {\r
+               return spotID;\r
+       }\r
+\r
+       public String getTitle() {\r
+               return title;\r
+       }\r
+\r
+       public boolean isOkForAir() {\r
+               return "OK".equals(okForAirs);\r
+       }\r
+\r
+       public void setEpisode(short episode) {\r
+               this.episode = episode;\r
+       }\r
+\r
+       public void setMediaID(String mediaID) {\r
+               this.mediaID = mediaID;\r
+       }\r
+\r
+       public void setOkForAirs(String okForAirs) {\r
+               this.okForAirs = okForAirs;\r
+       }\r
+\r
+       public void setProgTitle(String progTitle) {\r
+               this.progTitle = progTitle;\r
+       }\r
+\r
+       public void setPsStart(Date psStart) {\r
+               this.psStart = psStart;\r
+       }\r
+\r
+       public void setSpotID(int spotID) {\r
+               this.spotID = spotID;\r
+       }\r
+\r
+       public void setTitle(String title) {\r
+               this.title = title;\r
+       }\r
+\r
+}
\ No newline at end of file
diff --git a/server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java b/server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java
new file mode 100644 (file)
index 0000000..e875eea
--- /dev/null
@@ -0,0 +1,25 @@
+package user.mediacube.metadata;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import user.mediabube.metadata.planair.PlanAirMetadataProvider;\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 MetadataProviderFactory implements IMetadataProviderFactory {\r
+\r
+       private Map<MetadataProviderType, IMetadataProvider> providers = new HashMap<>();\r
+\r
+       public MetadataProviderFactory() {\r
+               try {\r
+                       providers.put(MetadataProviderType.PLANAIR, new PlanAirMetadataProvider());\r
+               } catch (Exception e) {\r
+               }\r
+       }\r
+\r
+       public IMetadataProvider getProvider(MetadataProviderType type) {\r
+               return providers.get(type);\r
+       }\r
+}\r
index 8e1a26303d00f9065e97ee75abb8302037e2c3a7..063bd6286df60a2055bb5c9c8309a631886460b8 100644 (file)
@@ -8,34 +8,113 @@ import java.util.List;
 
 import org.junit.Test;
 
+import user.mediabube.metadata.planair.MetadataType;
 import user.mediabube.metadata.planair.PlanAirMetadataListOptions;
+import user.mediacube.metadata.MetadataProviderFactory;
+import user.mediacube.metadata.interfaces.IMetadata;
+import user.mediacube.metadata.interfaces.IMetadataProvider;
+import user.mediacube.metadata.interfaces.IMetadataProviderFactory;
+import user.mediacube.metadata.interfaces.MetadataProviderType;
 
 public class PlanAirMetadataTest {
+       private IMetadataProviderFactory factory = new MetadataProviderFactory();
+
+       public void test(PlanAirMetadataListOptions opt) throws Exception {
+               // Fixture
+               IMetadataProvider sut = factory.getProvider(MetadataProviderType.PLANAIR);
+
+               // Exercise
+               List<IMetadata> result = sut.list(opt);
+
+               // Verify
+               assertNotNull(result);
+               assertTrue(result.size() > 0);
+       }
 
        @Test
-       public void testConnection() throws Exception {
+       public void testFactoryConnection() throws Exception {
                // Fixture
                // Exercise
-               IMetadataProvider sut = MetadataProviderFactory.getProvider(MetadataProviderType.PLANAIR);
+               IMetadataProvider sut = factory.getProvider(MetadataProviderType.PLANAIR);
 
                // Verify
                assertNotNull(sut);
        }
 
+       @Test
+       public void testListADByBroadcastDay() throws Exception {
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setBroadcastDay(new Date());
+               opt.setProblematic(false);
+               opt.setType(MetadataType.AD);
+               test(opt);
+       }
+
+       @Test
+       public void testListADByProblematic() throws Exception {
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setProblematic(true);
+               opt.setType(MetadataType.AD);
+               test(opt);
+       }
+
+       @Test
+       public void testListADBySearch() throws Exception {
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setType(MetadataType.AD);
+               opt.setSearch("R000007A");
+               test(opt);
+       }
+
        @Test
        public void testListMaterialsByBroadcastDay() throws Exception {
                // Fixture
-               IMetadataProvider sut = MetadataProviderFactory.getProvider(MetadataProviderType.PLANAIR);
                PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
                opt.setBroadcastDay(new Date());
                opt.setProblematic(false);
+               opt.setType(MetadataType.Material);
+               test(opt);
+       }
 
-               // Exercise
-               List<IMetadata> result = sut.list(opt);
+       @Test
+       public void testListMaterialsByProblematic() throws Exception {
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setProblematic(true);
+               opt.setType(MetadataType.Material);
+               test(opt);
+       }
 
-               // Verify
-               assertNotNull(result);
-               assertTrue(result.size() > 0);
+       @Test
+       public void testListMaterialsBySearch() throws Exception {
+               // Fixture
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setType(MetadataType.Material);
+               opt.setSearch("105428");
+               test(opt);
+       }
+
+       @Test
+       public void testListPromoByBroadcastDay() throws Exception {
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setBroadcastDay(new Date());
+               opt.setProblematic(false);
+               opt.setType(MetadataType.Promo);
+               test(opt);
+       }
+
+       @Test
+       public void testListPromoByProblematic() throws Exception {
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setProblematic(true);
+               opt.setType(MetadataType.Promo);
+               test(opt);
        }
 
+       @Test
+       public void testListPromoBySearch() throws Exception {
+               PlanAirMetadataListOptions opt = new PlanAirMetadataListOptions();
+               opt.setType(MetadataType.Promo);
+               opt.setSearch("P000020A");
+               test(opt);
+       }
 }