From 232403685dfefaa6322e73d1a37138ac57c854ac Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1s=C3=A1ry=20D=C3=A1niel?= Date: Fri, 9 Aug 2019 14:11:02 +0000 Subject: [PATCH] git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31471 --- .../run-mediacube-server.launch | 4 +- .../mediacube/executors/tests/Support.java | 35 +++++-- .../META-INF/MANIFEST.MF | 3 +- .../user/commons/nexio/NexioDispatcher.java | 8 +- .../metadata/interfaces/IMetadata.java | 5 + .../interfaces/IMetadataListOptions.java | 5 + .../interfaces}/IMetadataProvider.java | 2 +- .../interfaces/MetadataProviderType.java | 5 + .../OSGI-INF/componentBinder.xml | 4 +- .../osgi/server/ComponentBinder.java | 27 ++++-- .../OSGI-INF/componentBinder.xml | 1 - .../jobengine/osgi/rest/ComponentBinder.java | 2 + server/user.mediacube.metadata/.project | 5 + .../META-INF/MANIFEST.MF | 10 +- .../OSGI-INF/component.xml | 7 ++ .../user.mediacube.metadata/build.properties | 3 +- .../user/mediabube/metadata/IMetadata.java | 5 - .../metadata/IMetadataListOptions.java | 5 - .../metadata/MetadataProviderFactory.java | 22 ----- .../metadata/MetadataProviderType.java | 5 - .../metadata/planair/IPlanAirADMapper.java | 26 ++--- .../planair/IPlanAirMaterialMapper.java | 8 +- .../metadata/planair/IPlanAirPromoMapper.java | 28 +++--- .../mediabube/metadata/planair/PlanAirAD.java | 39 ++++++++ .../metadata/planair/PlanAirMaterial.java | 20 +++- .../planair/PlanAirMetadataListOptions.java | 2 +- .../planair/PlanAirMetadataProvider.java | 17 ++-- .../metadata/planair/PlanAirPromo.java | 76 +++++++++++++++ .../metadata/MetadataProviderFactory.java | 25 +++++ .../metadata/PlanAirMetadataTest.java | 95 +++++++++++++++++-- 30 files changed, 383 insertions(+), 116 deletions(-) create mode 100644 server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java create mode 100644 server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataListOptions.java rename server/{user.mediacube.metadata/src/user/mediabube/metadata => user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces}/IMetadataProvider.java (72%) create mode 100644 server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java create mode 100644 server/user.mediacube.metadata/OSGI-INF/component.xml delete mode 100644 server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java delete mode 100644 server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataListOptions.java delete mode 100644 server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderFactory.java delete mode 100644 server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderType.java create mode 100644 server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirAD.java create mode 100644 server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirPromo.java create mode 100644 server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java diff --git a/server/-configuration/run-mediacube-server.launch b/server/-configuration/run-mediacube-server.launch index 994fd795..c4e4b391 100644 --- a/server/-configuration/run-mediacube-server.launch +++ b/server/-configuration/run-mediacube-server.launch @@ -22,9 +22,9 @@ - + - + diff --git a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java index 92041c9e..2a2dfd8a 100644 --- a/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java +++ b/server/hu.user.mediacube.executors.tests/src/hu/user/mediacube/executors/tests/Support.java @@ -43,6 +43,7 @@ import user.jobengine.server.steps.ProjectCleanupMountedLocationStep; import user.jobengine.server.steps.RundownArchive; import user.tsm.client.TSMBackupFileObject; import user.tsm.client.TSMClient; +import user.tsm.client.TSMException; public class Support { @@ -272,21 +273,37 @@ public class Support { @Test public void testTSM() throws Exception { //System.setProperty("PATH", "c:\\_workspace\\USER\\MediaCube\\server\\user.tsm.client\\apilib\\;%PATH%"); - TSMClient client = null; + TSMClient c = null; try { - client = new TSMClient("JOBENGINE"); - client.connect("mediacube", "password"); + final TSMClient client = new TSMClient("JOBENGINE"); + c = client; + client.connect("mediacube", "password", "/"); + + 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"; + manager.executeQuery(query, rs -> { + + TSMBackupFileObject[] objects = null; + String houseId = null; + try { + houseId = rs.getString("houseid"); + objects = client.queryActiveBackupObjects("/JOBENGINE", "/JOBENGINE", "/" + houseId); + } catch (TSMException e) { + e.printStackTrace(); + } + + if (objects != null && objects.length != 1) { + System.out.println(houseId + " count: " + objects.length + " archived: " + rs.getTimestamp("archived")); + } else - TSMBackupFileObject[] objects = client.queryActiveBackupObjects("/JOBENGINE", File.separator + "JOBENGINE/", - File.separator + "0606_RAZZIA_CLEANFEED_MIX-20180531113140.MXF"); + System.out.println(houseId); + return true; + }, null); - if (objects != null) - System.out.println(objects.length); } catch (Exception e) { System.out.println(e.getMessage()); } finally { - if (client != null) - client.disconnect(); + if (c != null) + c.disconnect(); } } diff --git a/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF b/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF index 512c3e68..b136357d 100644 --- a/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF +++ b/server/user.jobengine.osgi.commons/META-INF/MANIFEST.MF @@ -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, diff --git a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java index 05b5b923..3d00baab 100644 --- a/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java +++ b/server/user.jobengine.osgi.commons/src/user/commons/nexio/NexioDispatcher.java @@ -307,14 +307,14 @@ public class NexioDispatcher implements ClipEventListener { } /* - + int c = connection.read(buffer, 0, 2); //2 bytes hosszan az idokozben hozzaadott id-k szamossaga if (c < 2) { throw new ProtocolException("c, 2, 2"); } //MSB, LSB - + return nofIds; */ return ret; @@ -403,6 +403,8 @@ public class NexioDispatcher implements ClipEventListener { } private void shutdown() { + if (disabled) + return; logger.info("Shutting down Nexio service"); if (mediaListener != null) { mediaListener.disconnect(); @@ -415,6 +417,8 @@ public class NexioDispatcher implements ClipEventListener { } public void startup() { + if (disabled) + return; logger.info("Starting up Nexio service"); this.controller = new Controller(NEXIO_HOST); try { 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 index 00000000..8d6178a4 --- /dev/null +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadata.java @@ -0,0 +1,5 @@ +package user.mediacube.metadata.interfaces; + +public interface IMetadata { + +} 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 index 00000000..236474ba --- /dev/null +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataListOptions.java @@ -0,0 +1,5 @@ +package user.mediacube.metadata.interfaces; + +public interface IMetadataListOptions { + +} diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataProvider.java b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java similarity index 72% rename from server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataProvider.java rename to server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java index 40c443dc..00dee5e9 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataProvider.java +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/IMetadataProvider.java @@ -1,4 +1,4 @@ -package user.mediabube.metadata; +package user.mediacube.metadata.interfaces; import java.util.List; 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 index 00000000..31e0357c --- /dev/null +++ b/server/user.jobengine.osgi.commons/src/user/mediacube/metadata/interfaces/MetadataProviderType.java @@ -0,0 +1,5 @@ +package user.mediacube.metadata.interfaces; + +public enum MetadataProviderType { + PLANAIR +} diff --git a/server/user.jobengine.osgi.server/OSGI-INF/componentBinder.xml b/server/user.jobengine.osgi.server/OSGI-INF/componentBinder.xml index c1c20235..58597f11 100644 --- a/server/user.jobengine.osgi.server/OSGI-INF/componentBinder.xml +++ b/server/user.jobengine.osgi.server/OSGI-INF/componentBinder.xml @@ -1,5 +1,7 @@ - + + + diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ComponentBinder.java b/server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ComponentBinder.java index 3faa7506..95000e55 100644 --- a/server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ComponentBinder.java +++ b/server/user.jobengine.osgi.server/src/user/jobengine/osgi/server/ComponentBinder.java @@ -4,11 +4,13 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import user.commons.nexio.INexioAPI; +import user.mediacube.metadata.interfaces.IMetadataProviderFactory; public class ComponentBinder { private static final String MEDIACUBE = "MEDIACUBE"; private static final Logger logger = LogManager.getLogger(); private static INexioAPI nexioAPI; + private static IMetadataProviderFactory metadataProviderFactory; public static INexioAPI getNexioAPI() { if (nexioAPI == null) @@ -16,19 +18,28 @@ public class ComponentBinder { return nexioAPI; } - public synchronized void bindService(Object service) { + public synchronized void bindMetadataProviderFactory(Object service) { + if (service instanceof IMetadataProviderFactory) { + metadataProviderFactory = (IMetadataProviderFactory) service; + logger.info("IMetadataProviderFactory service binded"); + } + } + + public synchronized void bindNexioService(Object service) { if (service instanceof INexioAPI) { nexioAPI = (INexioAPI) service; logger.info("INexioAPI service binded"); - return; } } - public synchronized void unbindService(Object service) { - if (service instanceof INexioAPI) { - nexioAPI = null; - logger.info("INexioAPI service unbinded"); - return; - } + public synchronized void unbindMetadataProviderFactory(Object service) { + metadataProviderFactory = null; + logger.info("IMetadataProviderFactory service unbinded"); + } + + public synchronized void unbindNexioService(Object service) { + nexioAPI = null; + logger.info("INexioAPI service unbinded"); } + } diff --git a/server/user.jobengine.osgi.services/OSGI-INF/componentBinder.xml b/server/user.jobengine.osgi.services/OSGI-INF/componentBinder.xml index a29dc9aa..058565c1 100644 --- a/server/user.jobengine.osgi.services/OSGI-INF/componentBinder.xml +++ b/server/user.jobengine.osgi.services/OSGI-INF/componentBinder.xml @@ -6,5 +6,4 @@ - diff --git a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java index 3733ef71..72f0b0ac 100644 --- a/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java +++ b/server/user.jobengine.osgi.services/src/user/jobengine/osgi/rest/ComponentBinder.java @@ -52,6 +52,8 @@ public class ComponentBinder { } public synchronized void bindService(Object service) { + //logger.info("Ref {}", service.getClass()); + if (service instanceof IJobEngine) { jobengine = (IJobEngine) service; logger.info("IJobEngine service binded"); diff --git a/server/user.mediacube.metadata/.project b/server/user.mediacube.metadata/.project index abaf97fb..3e54ac1e 100644 --- a/server/user.mediacube.metadata/.project +++ b/server/user.mediacube.metadata/.project @@ -20,6 +20,11 @@ + + org.eclipse.pde.ds.core.builder + + + org.eclipse.pde.PluginNature diff --git a/server/user.mediacube.metadata/META-INF/MANIFEST.MF b/server/user.mediacube.metadata/META-INF/MANIFEST.MF index d0cdd11a..f3711cb6 100644 --- a/server/user.mediacube.metadata/META-INF/MANIFEST.MF +++ b/server/user.mediacube.metadata/META-INF/MANIFEST.MF @@ -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 index 00000000..95870415 --- /dev/null +++ b/server/user.mediacube.metadata/OSGI-INF/component.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/server/user.mediacube.metadata/build.properties b/server/user.mediacube.metadata/build.properties index 41eb6ade..a65755cb 100644 --- a/server/user.mediacube.metadata/build.properties +++ b/server/user.mediacube.metadata/build.properties @@ -1,4 +1,5 @@ source.. = src/ output.. = bin/ bin.includes = META-INF/,\ - . + .,\ + OSGI-INF/ 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 index 1aaec720..00000000 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadata.java +++ /dev/null @@ -1,5 +0,0 @@ -package user.mediabube.metadata; - -public interface IMetadata { - -} 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 index bd8431cf..00000000 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/IMetadataListOptions.java +++ /dev/null @@ -1,5 +0,0 @@ -package user.mediabube.metadata; - -public interface IMetadataListOptions { - -} 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 index 54330713..00000000 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -package user.mediabube.metadata; - -import java.util.HashMap; -import java.util.Map; - -import user.mediabube.metadata.planair.PlanAirMetadataProvider; - -public class MetadataProviderFactory { - - private static Map providers = new HashMap<>(); - - static { - try { - providers.put(MetadataProviderType.PLANAIR, new PlanAirMetadataProvider()); - } catch (Exception e) { - } - } - - public static IMetadataProvider getProvider(MetadataProviderType type) { - return providers.get(type); - } -} 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 index 9b5959b8..00000000 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/MetadataProviderType.java +++ /dev/null @@ -1,5 +0,0 @@ -package user.mediabube.metadata; - -public enum MetadataProviderType { - PLANAIR -} diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java index 73ff6c8d..06a78538 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirADMapper.java @@ -14,23 +14,15 @@ public interface IPlanAirADMapper { // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null - 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 - // item.v_EpisodeID = ReadString(reader, ref f); - // item.v_VariantID = ReadInt(reader, ref f); - // item.v_MediaID = ReadString(reader, ref f); - // item.v_ProgTitle = ReadString(reader, ref f); - // item.v_EpTitle = ReadString(reader, ref f); - // item.v_Episode = ReadShort(reader, ref f); - // item.v_VariantNrSegments = ReadInt(reader, ref f); - // item.v_FirstBroadcastDate = ReadDateTime(reader, ref f); - // item.v_NextBroadcastDate = ReadDateTime(reader, ref f); + 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 + // item.t_SpotID = (int)ReadInt(reader, ref f); + // item.t_MediaID = ReadString(reader, ref f); + // item.v_Title = ReadString(reader, ref f); + // item.v_OkForAirs = ReadString(reader, ref f); - @Select(value = MATERIAL_SQL) + @Select(value = AD_SQL) @Options(statementType = StatementType.CALLABLE) - @Results(value = { @Result(property = "episodeID", column = "v_EpisodeID"), @Result(property = "variantID", column = "v_VariantID"), - @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"), - @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"), - @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"), - @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate") }) - public List getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay); + @Results(value = { @Result(property = "spotID", column = "t_SpotID"), @Result(property = "mediaID", column = "t_MediaID"), + @Result(property = "title", column = "v_Title"), @Result(property = "okForAirs", column = "v_OkForAirs") }) + public List getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay); } diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java index 78907055..0f0981ee 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirMaterialMapper.java @@ -14,7 +14,7 @@ public interface IPlanAirMaterialMapper { // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null - 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 + 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 // item.v_EpisodeID = ReadString(reader, ref f); // item.v_VariantID = ReadInt(reader, ref f); // item.v_MediaID = ReadString(reader, ref f); @@ -24,6 +24,9 @@ public interface IPlanAirMaterialMapper { // item.v_VariantNrSegments = ReadInt(reader, ref f); // item.v_FirstBroadcastDate = ReadDateTime(reader, ref f); // item.v_NextBroadcastDate = ReadDateTime(reader, ref f); + // item.v_OkForAir = ReadBool(reader, ref f); + // item.v_SegNr = ReadInt(reader, ref f); + // item.v_SegID = ReadInt(reader, ref f); @Select(value = MATERIAL_SQL) @Options(statementType = StatementType.CALLABLE) @@ -31,6 +34,7 @@ public interface IPlanAirMaterialMapper { @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"), @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"), @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"), - @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate") }) + @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate"), @Result(property = "okForAir", column = "v_OkForAir"), + @Result(property = "segNr", column = "v_SegNr"), @Result(property = "segID", column = "v_SegID") }) public List getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay); } diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java index 2e8879a4..15585dd8 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/IPlanAirPromoMapper.java @@ -14,23 +14,21 @@ public interface IPlanAirPromoMapper { // @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null, // @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null - 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 - // item.v_EpisodeID = ReadString(reader, ref f); - // item.v_VariantID = ReadInt(reader, ref f); - // item.v_MediaID = ReadString(reader, ref f); + + 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 + // item.t_SpotID = (int)ReadInt(reader, ref f); + // item.t_MediaID = ReadString(reader, ref f); + // item.v_Title = ReadString(reader, ref f); // item.v_ProgTitle = ReadString(reader, ref f); - // item.v_EpTitle = ReadString(reader, ref f); // item.v_Episode = ReadShort(reader, ref f); - // item.v_VariantNrSegments = ReadInt(reader, ref f); - // item.v_FirstBroadcastDate = ReadDateTime(reader, ref f); - // item.v_NextBroadcastDate = ReadDateTime(reader, ref f); + // item.t_PSStart = ReadDateTime(reader, ref f); + // item.v_OkForAirs = ReadString(reader, ref f); - @Select(value = MATERIAL_SQL) + @Select(value = PROMO_SQL) @Options(statementType = StatementType.CALLABLE) - @Results(value = { @Result(property = "episodeID", column = "v_EpisodeID"), @Result(property = "variantID", column = "v_VariantID"), - @Result(property = "mediaID", column = "v_MediaID"), @Result(property = "progTitle", column = "v_ProgTitle"), - @Result(property = "epTitle", column = "v_EpTitle"), @Result(property = "episode", column = "v_Episode"), - @Result(property = "variantNrSegments", column = "v_VariantNrSegments"), @Result(property = "firstBroadcastDate", column = "v_FirstBroadcastDate"), - @Result(property = "nextBroadcastDate", column = "v_NextBroadcastDate") }) - public List getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay); + @Results(value = { @Result(property = "spotID", column = "t_SpotID"), @Result(property = "mediaID", column = "t_MediaID"), + @Result(property = "title", column = "v_Title"), @Result(property = "progTitle", column = "v_ProgTitle"), + @Result(property = "episode", column = "v_Episode"), @Result(property = "psStart", column = "t_PSStart"), + @Result(property = "okForAirs", column = "v_OkForAirs") }) + public List getMaterials(@Param("options") Integer options, @Param("search") String search, @Param("broadcastDay") Date broadcastDay); } 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 index 00000000..96937b99 --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirAD.java @@ -0,0 +1,39 @@ +package user.mediabube.metadata.planair; + +import user.mediacube.metadata.interfaces.IMetadata; + +public class PlanAirAD implements IMetadata { + private String mediaID; //t_MediaID + private String title; //v_Title + private int spotID;//t_SpotID + private String okForAirs; //v_OkForAirs + + public String getMediaID() { + return mediaID; + } + + public int getSpotID() { + return spotID; + } + + public String getTitle() { + return title; + } + + public boolean isOkForAir() { + return "OK".equals(okForAirs); + } + + public void setMediaID(String mediaID) { + this.mediaID = mediaID; + } + + public void setSpotID(int spotID) { + this.spotID = spotID; + } + + public void setTitle(String title) { + this.title = title; + } + +} \ No newline at end of file diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java index 0399abda..dfc813d3 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMaterial.java @@ -2,7 +2,7 @@ package user.mediabube.metadata.planair; import java.util.Date; -import user.mediabube.metadata.IMetadata; +import user.mediacube.metadata.interfaces.IMetadata; public class PlanAirMaterial implements IMetadata { private String episodeID; @@ -15,6 +15,8 @@ public class PlanAirMaterial implements IMetadata { private int variantNrSegments; private Date nextBroadcastDate; private Date firstBroadcastDate; + private int segNr; + private int segID; public short getEpisode() { return episode; @@ -44,6 +46,14 @@ public class PlanAirMaterial implements IMetadata { return progTitle; } + public int getSegID() { + return segID; + } + + public int getSegNr() { + return segNr; + } + public int getVariantID() { return variantID; } @@ -88,6 +98,14 @@ public class PlanAirMaterial implements IMetadata { this.progTitle = progTitle; } + public void setSegID(int segID) { + this.segID = segID; + } + + public void setSegNr(int segNr) { + this.segNr = segNr; + } + public void setVariantID(int variantID) { this.variantID = variantID; } diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java index c86f121c..5d5a487b 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataListOptions.java @@ -2,7 +2,7 @@ package user.mediabube.metadata.planair; import java.util.Date; -import user.mediabube.metadata.IMetadataListOptions; +import user.mediacube.metadata.interfaces.IMetadataListOptions; public class PlanAirMetadataListOptions implements IMetadataListOptions { private Date broadcastDay; diff --git a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java index 2631189f..ad215422 100644 --- a/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirMetadataProvider.java @@ -14,10 +14,9 @@ import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import com.microsoft.sqlserver.jdbc.SQLServerDriver; -import user.commons.ListUtils; -import user.mediabube.metadata.IMetadata; -import user.mediabube.metadata.IMetadataListOptions; -import user.mediabube.metadata.IMetadataProvider; +import user.mediacube.metadata.interfaces.IMetadata; +import user.mediacube.metadata.interfaces.IMetadataListOptions; +import user.mediacube.metadata.interfaces.IMetadataProvider; public class PlanAirMetadataProvider implements IMetadataProvider { private static final String JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; @@ -42,6 +41,8 @@ public class PlanAirMetadataProvider implements IMetadataProvider { Environment environment = new Environment("Development", new JdbcTransactionFactory(), dataSource); Configuration configuration = new Configuration(environment); configuration.addMapper(IPlanAirMaterialMapper.class); + configuration.addMapper(IPlanAirPromoMapper.class); + configuration.addMapper(IPlanAirADMapper.class); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); return builder.build(configuration); } @@ -55,12 +56,16 @@ public class PlanAirMetadataProvider implements IMetadataProvider { switch (opt.getType()) { case AD: + IPlanAirADMapper adMapper = session.getMapper(IPlanAirADMapper.class); + result = (List) (List) adMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay()); break; case Material: - IPlanAirMaterialMapper mapper = session.getMapper(IPlanAirMaterialMapper.class); - result = ListUtils.cast(mapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay())); + IPlanAirMaterialMapper materialMapper = session.getMapper(IPlanAirMaterialMapper.class); + result = (List) (List) materialMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay()); break; case Promo: + IPlanAirPromoMapper promoMapper = session.getMapper(IPlanAirPromoMapper.class); + result = (List) (List) promoMapper.getMaterials(problematic, opt.getSearch(), opt.getBroadcastDay()); break; default: throw new Exception("Missing metadata type"); 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 index 00000000..52296780 --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediabube/metadata/planair/PlanAirPromo.java @@ -0,0 +1,76 @@ +package user.mediabube.metadata.planair; + +import java.util.Date; + +import user.mediacube.metadata.interfaces.IMetadata; + +public class PlanAirPromo implements IMetadata { + private String mediaID; //t_MediaID + private String title; //v_Title + private String progTitle;//v_ProgTitle + private short episode;//v_Episode + private Date psStart;//t_PSStart + private int spotID;//t_SpotID + private String okForAirs; //v_OkForAirs + + public short getEpisode() { + return episode; + } + + public String getMediaID() { + return mediaID; + } + + public String getOkForAirs() { + return okForAirs; + } + + public String getProgTitle() { + return progTitle; + } + + public Date getPsStart() { + return psStart; + } + + public int getSpotID() { + return spotID; + } + + public String getTitle() { + return title; + } + + public boolean isOkForAir() { + return "OK".equals(okForAirs); + } + + public void setEpisode(short episode) { + this.episode = episode; + } + + public void setMediaID(String mediaID) { + this.mediaID = mediaID; + } + + public void setOkForAirs(String okForAirs) { + this.okForAirs = okForAirs; + } + + public void setProgTitle(String progTitle) { + this.progTitle = progTitle; + } + + public void setPsStart(Date psStart) { + this.psStart = psStart; + } + + public void setSpotID(int spotID) { + this.spotID = spotID; + } + + public void setTitle(String title) { + this.title = title; + } + +} \ 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 index 00000000..e875eead --- /dev/null +++ b/server/user.mediacube.metadata/src/user/mediacube/metadata/MetadataProviderFactory.java @@ -0,0 +1,25 @@ +package user.mediacube.metadata; + +import java.util.HashMap; +import java.util.Map; + +import user.mediabube.metadata.planair.PlanAirMetadataProvider; +import user.mediacube.metadata.interfaces.IMetadataProvider; +import user.mediacube.metadata.interfaces.IMetadataProviderFactory; +import user.mediacube.metadata.interfaces.MetadataProviderType; + +public class MetadataProviderFactory implements IMetadataProviderFactory { + + private Map providers = new HashMap<>(); + + public MetadataProviderFactory() { + try { + providers.put(MetadataProviderType.PLANAIR, new PlanAirMetadataProvider()); + } catch (Exception e) { + } + } + + public IMetadataProvider getProvider(MetadataProviderType type) { + return providers.get(type); + } +} diff --git a/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java b/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java index 8e1a2630..063bd628 100644 --- a/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java +++ b/server/user.mediacube.metadata/test/user/mediabube/metadata/PlanAirMetadataTest.java @@ -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 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 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); + } } -- 2.54.0