git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 23 Nov 2017 09:54:54 +0000 (09:54 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 23 Nov 2017 09:54:54 +0000 (09:54 +0000)
17 files changed:
client/IntegrationTests/MaestroIT.cs
client/IntegrationTests/PlanAIRTests.cs
client/Maestro/MaestroForm.Metadata.cs
client/Maestro/MaestroForm.Source.cs
client/Maestro/MaestroForm.Target.cs
client/MaestroShared/MaestroShared.csproj
client/MaestroShared/Metadata/MetadataType.cs
client/MaestroShared/Metadata/SegmentConverter.cs [deleted file]
client/MaestroShared/Metadata/Timecode.cs
client/MaestroShared/Targets/TargetProcessorParameter.cs
client/MaestroShared/Targets/TargetUpdateTrafficMessage.cs [new file with mode: 0644]
client/MaestroShared/Targets/UNCTargetProcessor.cs
client/MaestroShared/packages.config
client/PlanAIRClient/Segment.cs [deleted file]
client/PlanAIRClient/TrafficAPI.cs
client/PlanAIRClient/TrafficClient.csproj
client/PlanAIRClient/Workers/SegmentWorker.cs

index f0b67ccf6d57d2541430a073f953be1ee396aac3..9c63ea2eaebf5468c27c05f744d5db4a37de0f28 100644 (file)
@@ -141,7 +141,6 @@ namespace IntegrationTests {
                 TargetConfig = configuration,\r
                 InputFileName = @"c:\tmp\watch\tcdrone.MXF",\r
                 ID = "000000",\r
-                Segments = null,\r
                 MediaCubeApi = null,\r
                 ArchiveMetadata = null\r
             };\r
index e78e43c6045cf7672b17b2be0926f9f176196a76..3999eb5f29d2918f9703e655ef52f22f15ac2402 100644 (file)
@@ -1,6 +1,7 @@
 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
 using TrafficClient;\r
 using System.Collections.Generic;\r
+using MaestroShared.Metadata;\r
 \r
 namespace IntegrationTests {\r
     [TestClass]\r
@@ -24,7 +25,7 @@ namespace IntegrationTests {
         [TestMethod]\r
         public void GetSegmentReadyTest() {\r
             //Exercise\r
-            List<Segment> actual = sut.GetMaterialSegments(ITEM_ID);\r
+            List<MovieSegment> actual = sut.GetMaterialSegments(ITEM_ID);\r
 \r
             //Verify\r
             Assert.IsTrue(actual.Count > 0);\r
index 18a10c9ef0177a6142a44323ec94c4f3ed5efc8d..0065614b0e0b17253a2fbf8688e88cec18fa8139 100644 (file)
@@ -12,6 +12,7 @@ using MediaCubeClient;
 using Model;\r
 using MaestroShared.Configuration;\r
 using MaestroShared.Metadata;\r
+using MaestroShared.Targets;\r
 \r
 namespace Maestro {\r
     public partial class MaestroForm {\r
@@ -24,7 +25,6 @@ namespace Maestro {
         private const string REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID = "^[0-9]+_[0-9]+-[0-9]{3}$";\r
 \r
         private MetadataInfo selectedMetadata;\r
-        private List<Segment> segments;\r
         private BindingList<MovieSegment> movieSegments;\r
         private MediaCubeApi mediaCubeApi;\r
         private ArchiveMetadata archiveMetadata;\r
@@ -37,7 +37,7 @@ namespace Maestro {
             }\r
             set {\r
                 selectedMetadata = value;\r
-                segments = null;\r
+                movieSegments = null;\r
                 textSelectedMetadata.Text = value?.ID;\r
                 ttMetadata.SetToolTip(textSelectedMetadata, GetMetadataTypeTooltip(value?.Kind));\r
             }\r
@@ -50,6 +50,12 @@ namespace Maestro {
             textSelectedMetadata.ReadOnly = !Configuration.EnableCustomMetadataId;\r
             UpdateDefineSegmentEnabled();\r
             UpdateEditArchiveMetadataEnabled();\r
+\r
+            MessageBus.Subscribe<TargetUpdateTrafficMessage>(m => OnTargetUpdateTrafficMessage(m));\r
+        }\r
+\r
+        private void OnTargetUpdateTrafficMessage(TargetUpdateTrafficMessage message) {\r
+            trafficIDSelector.trafficAPI.UpdateTrafficInformation(message.VariantID, message.Ready, message.MetadataType, message.Segments);\r
         }\r
 \r
         private void InitializeTrafficSelector() {\r
@@ -152,19 +158,27 @@ namespace Maestro {
             if (SelectedSource?.FileInfo == null)\r
                 return;\r
             Cursor = Cursors.WaitCursor;\r
-            CreateEditableSegments();\r
+            if (movieSegments == null || movieSegments.Count == 0)\r
+                QuerySegments();\r
+            if (movieSegments == null)\r
+                movieSegments = new BindingList<MovieSegment>();\r
             PlayerForm player = new PlayerForm(ref movieSegments);\r
             player.AutoStart = Configuration.Player.AutoStart;\r
             player.SegmentEditor = Configuration.Player.SegmentEditor;\r
             player.Open(SelectedSource.FileInfo);\r
             Cursor = Cursors.Default;\r
             player.ShowDialog();\r
-            CreateSegments(movieSegments);\r
             UpdateDefineSegmentsStatus();\r
         }\r
 \r
+        private void QuerySegments() {\r
+            List<MovieSegment> storedSegments = GetSegments();\r
+            if (storedSegments != null && storedSegments.Count > 0)\r
+                movieSegments = new BindingList<MovieSegment>(storedSegments);\r
+        }\r
+\r
         private void UpdateDefineSegmentsStatus() {\r
-            if(segments == null || segments.Count == 0)\r
+            if(movieSegments == null || movieSegments.Count == 0)\r
                 btnDefineSegments.Image = Properties.Resources.ic_playlist_add_check_black_24dp_1x;\r
             else\r
                 btnDefineSegments.Image = Properties.Resources.ic_playlist_add_check_black_24dp_1x_green;\r
@@ -177,35 +191,9 @@ namespace Maestro {
                 btnEditMetadata.Image = Properties.Resources.ic_receipt_black_24dp_1x_green;\r
         }\r
 \r
-        private void CreateSegments(BindingList<MovieSegment> movieSegments) {\r
-            if (movieSegments == null || movieSegments.Count == 0) {\r
-                segments = null;\r
-                return;\r
-            }\r
-            if (segments != null)\r
-                segments.Clear();\r
-            foreach (MovieSegment actual in movieSegments) {\r
-                Segment actualSegment = segmentConverter.ConvertToSegment(actual);\r
-                if (segments == null)\r
-                    segments = new List<Segment>();\r
-                segments.Add(actualSegment);\r
-            }\r
-        }\r
-\r
-        private void CreateEditableSegments() {\r
-            if (segments == null)\r
-                segments = GetSegments();\r
-            movieSegments = new BindingList<MovieSegment>();\r
-            if (segments != null) {\r
-                foreach (Segment segment in segments) {\r
-                    MovieSegment movieSegment = segmentConverter.ConvertToMovieSegment(segment);\r
-                    movieSegments.Add(movieSegment);\r
-                }\r
-            }\r
-        }\r
 \r
-        private List<Segment> GetSegments() {\r
-            List<Segment> result = null;\r
+        private List<MovieSegment> GetSegments() {\r
+            List<MovieSegment> result = null;\r
             switch (selectedMetadata.Kind) {\r
                 case MetadataType.TrafficMaterial: {\r
                         result = trafficIDSelector.trafficAPI.GetMaterialSegments(selectedMetadata.VariantID);\r
@@ -340,7 +328,6 @@ namespace Maestro {
                 }\r
             }\r
 \r
-            segments = null;\r
             movieSegments = null;\r
             archiveMetadata = null;\r
 \r
index 05abdfcb5f776d36aa701127510f0f86f3251df2..e348ff35dcb761e4ba49a1164784cd5fa52aff42 100644 (file)
@@ -34,7 +34,6 @@ namespace Maestro {
                 }\r
                 textSelectedSource.Text = selectedSource?.Name;\r
                 archiveMetadata = null;\r
-                segments = null;\r
                 movieSegments = null;\r
                 UpdateProcessorButtonsEnabled();\r
                 UpdateDefineSegmentEnabled();\r
index 427a108b3d4a156a53fefdd0f2361eda1280dd8e..6b8361d3aab5a57ff3d310cfea15c39775c6886f 100644 (file)
@@ -3,19 +3,16 @@ using System;
 using System.Linq;\r
 using System.Windows.Forms;\r
 using System.Collections.Generic;\r
-using TrafficClient;\r
 using MaestroShared.Configuration;\r
 using MaestroShared.Metadata;\r
 using MaestroShared.Targets;\r
 using MaestroShared.Target;\r
-using System.Diagnostics;\r
+using System.ComponentModel;\r
 \r
 namespace Maestro {\r
 \r
     public partial class MaestroForm {\r
 \r
-        private SegmentConverter segmentConverter;\r
-\r
         private void InitializeTarget() {\r
             btnExecute.Enabled = false;\r
             if (Configuration.Targets == null)\r
@@ -29,7 +26,6 @@ namespace Maestro {
             }\r
 \r
             UpdateProcessorButtonsEnabled();\r
-            segmentConverter = new SegmentConverter();\r
         }\r
 \r
         private void CreateTarget(Target target) {\r
@@ -102,24 +98,26 @@ namespace Maestro {
 \r
 \r
         private bool EnsureSegments(Target target) {\r
-            if ((target.SaveMorpheusMetadata || target.SaveSegments) && (segments == null || segments.Count == 0)) {\r
-                if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0)\r
-                    segments = GetSegments();\r
-                if (segments == null) {\r
+            if ((target.SaveMorpheusMetadata || target.SaveSegments) && (movieSegments == null || movieSegments.Count == 0)) {\r
+                if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0) {\r
+                    List<MovieSegment> storedSegments = GetSegments();\r
+                    if (storedSegments != null && storedSegments.Count > 0)\r
+                        movieSegments = new BindingList<MovieSegment>(storedSegments);\r
+                }\r
+                if (movieSegments == null) {\r
                     MessageBox.Show(String.Format("A {0} folyamat nem futtatható szegmens adatok nélkül.", target.Label));\r
                     return false;\r
                 }\r
-                CreateEditableSegments();\r
                 switch (selectedMetadata.Kind) {\r
                     case MetadataType.TrafficPromo: {\r
-                            if (segments.Count != 1) {\r
+                            if (movieSegments.Count != 1) {\r
                                 MessageBox.Show(String.Format("Promó anyagnak csak egy szegmens adata lehet."));\r
                                 return false;\r
                             }\r
                             break;\r
                         }\r
                     case MetadataType.TrafficAD: {\r
-                            if (segments.Count != 1) {\r
+                            if (movieSegments.Count != 1) {\r
                                 MessageBox.Show(String.Format("Reklám anyagnak csak egy szegmens adata lehet."));\r
                                 return false;\r
                             }\r
@@ -152,19 +150,18 @@ namespace Maestro {
 \r
         private TargetProcessorParameter CreateProcessorParameter(Target target, ISourceItem sourceItem) {\r
             return new TargetProcessorParameter() {\r
-                TrafficApi = trafficIDSelector.trafficAPI,\r
                 MediaCubeApi = mediaCubeApi,\r
                 SourceConfig = Configuration.Source,\r
                 TargetConfig = target,\r
                 ID = textSelectedMetadata.Text,\r
                 MetadataText = SelectedMetadata?.MetadataText,\r
                 InputFileName = sourceItem.Name,\r
-                Segments = segments == null ? null : new List<Segment>(segments),\r
                 MovieSegments = movieSegments == null ? null : movieSegments.ToList(), \r
                 ArchiveMetadata = ArchiveMetadata.DeepClone(archiveMetadata),\r
                 VariantID = selectedMetadata == null ? 0 : selectedMetadata.VariantID,\r
                 MetadataKind = selectedMetadata == null ? MetadataType.None : selectedMetadata.Kind,\r
-                UserName = TrayApplicationContext.UserName\r
+                UserName = TrayApplicationContext.UserName,\r
+                MessageBus = MessageBus\r
             };\r
         }\r
 \r
index e7f1955ceaee76a45609771f05e8b5d21eb52006..d0282625935f229a682e191ce61e889a065c58db 100644 (file)
@@ -55,6 +55,9 @@
     <Reference Include="FluentFTP, Version=19.1.2.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL">\r
       <HintPath>..\packages\FluentFTP.19.1.2\lib\net45\FluentFTP.dll</HintPath>\r
     </Reference>\r
+    <Reference Include="LinkDotNet.MessageHandling.Contracts, Version=0.2.0.0, Culture=neutral, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\LinkDotNet.MessageBus.Contracts.0.1.1\lib\LinkDotNet.MessageHandling.Contracts.dll</HintPath>\r
+    </Reference>\r
     <Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">\r
       <HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>\r
     </Reference>\r
@@ -93,9 +96,9 @@
     <Compile Include="Targets\FTPTargetProcessor.cs" />\r
     <Compile Include="Targets\FXPTargetProcessor.cs" />\r
     <Compile Include="Targets\ITargetProcessor.cs" />\r
-    <Compile Include="Metadata\SegmentConverter.cs" />\r
     <Compile Include="Targets\TargetProcessor.cs" />\r
     <Compile Include="Targets\TargetProcessorParameter.cs" />\r
+    <Compile Include="Targets\TargetUpdateTrafficMessage.cs" />\r
     <Compile Include="Targets\UNCTargetProcessor.cs" />\r
   </ItemGroup>\r
   <ItemGroup>\r
       <Project>{cefd0348-ded4-453e-bf3a-0b52f8890ab3}</Project>\r
       <Name>MediaCubeClient</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\OctopusClient\OctopusClient.csproj">\r
-      <Project>{8cc7c930-9dbf-487b-aed5-776937a649d5}</Project>\r
-      <Name>OctopusClient</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\PasswordEncrypter\PasswordEncrypter.csproj">\r
       <Project>{8c51d508-1759-4c10-84a4-80965fd074ff}</Project>\r
       <Name>PasswordEncrypter</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\PlanAIRClient\TrafficClient.csproj">\r
-      <Project>{a7a21311-cb0e-465f-8ad6-829faf093f00}</Project>\r
-      <Name>TrafficClient</Name>\r
-    </ProjectReference>\r
   </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
 </Project>
\ No newline at end of file
index 5d54ef7a64409435db1242441122c4b6cc154bc6..537457e3f4e30aeb9304361b39042d95aa1b86a1 100644 (file)
@@ -1,7 +1,5 @@
-using TrafficClient;\r
-\r
-namespace MaestroShared.Metadata {\r
+namespace MaestroShared.Metadata {\r
     public enum MetadataType {\r
-        None = 6, MediaCube = 5, OctopusStory = 4, OctopusPlaceHolder = 3, TrafficMaterial = TrafficMetadataType.TrafficMaterial, TrafficPromo = TrafficMetadataType.TrafficPromo, TrafficAD = TrafficMetadataType.TrafficAD \r
+        None, MediaCube, OctopusStory, OctopusPlaceHolder, TrafficMaterial, TrafficPromo, TrafficAD\r
     }\r
 }\r
diff --git a/client/MaestroShared/Metadata/SegmentConverter.cs b/client/MaestroShared/Metadata/SegmentConverter.cs
deleted file mode 100644 (file)
index 1f631ac..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-using TrafficClient;\r
-\r
-namespace MaestroShared.Metadata {\r
-    public class SegmentConverter {\r
-\r
-        public MovieSegment ConvertToMovieSegment(Segment source) {\r
-            Timecode tcIn = new Timecode();\r
-            Timecode tcOut = new Timecode();\r
-            tcIn.Set((int)source.TCIn);\r
-            tcOut.Set((int)source.TCOut);\r
-            MovieSegment result = new MovieSegment() {\r
-                Comment = source.Comment,\r
-                Optional = source.Optional,\r
-                TCIn = tcIn,\r
-                TCOut = tcOut\r
-            };\r
-            return result;\r
-        }\r
-\r
-        public Segment ConvertToSegment(MovieSegment source) {\r
-            Segment result = new Segment() {\r
-                Comment = source.Comment,\r
-                Optional = source.Optional,\r
-                TCIn = source.TCIn.Frames,\r
-                TCOut = source.TCOut.Frames\r
-            };\r
-            return result;\r
-        }\r
-    }\r
-}\r
index 6d92c1f177e8cc415df0bf9a1eb8a5cccfd65300..506ca6905cb733e532d4855ff3f60b9c938fe6a7 100644 (file)
@@ -11,6 +11,10 @@ namespace MaestroShared.Metadata {
             \r
         }\r
 \r
+        public Timecode(long frames) : this() {\r
+            Set(frames);\r
+        }\r
+\r
         public Timecode(Timecode tc) {\r
             if (tc == null)\r
                 return;\r
index d7860313d248661475bea8a16ed00bc59b82509b..e60d1ff2006ad4b274cf46302ff82e5e77db005a 100644 (file)
@@ -1,8 +1,8 @@
 using System.Collections.Generic;\r
-using TrafficClient;\r
 using MediaCubeClient;\r
 using MaestroShared.Configuration;\r
 using MaestroShared.Metadata;\r
+using LinkDotNet.MessageHandling.Contracts;\r
 \r
 namespace MaestroShared.Target {\r
     public class TargetProcessorParameter {\r
@@ -11,13 +11,12 @@ namespace MaestroShared.Target {
         public string InputFileName { get; set; }\r
         public string ID { get; set; }\r
         public string MetadataText { get; set; }\r
-        public List<Segment> Segments { get; set; }\r
         public List<MovieSegment> MovieSegments { get; set; }\r
         public MediaCubeApi MediaCubeApi { get; set; }\r
         public ArchiveMetadata ArchiveMetadata { get; set; }\r
-        public TrafficAPI TrafficApi { get; set; }\r
         public int VariantID { get; set; }\r
         public MetadataType MetadataKind { get; set; }\r
         public string UserName { get; set; }\r
+        public IMessageBus MessageBus { get; set; }\r
     }\r
 }\r
diff --git a/client/MaestroShared/Targets/TargetUpdateTrafficMessage.cs b/client/MaestroShared/Targets/TargetUpdateTrafficMessage.cs
new file mode 100644 (file)
index 0000000..e5fb23b
--- /dev/null
@@ -0,0 +1,12 @@
+using LinkDotNet.MessageHandling.Contracts;\r
+using MaestroShared.Metadata;\r
+using System.Collections.Generic;\r
+\r
+namespace MaestroShared.Targets {\r
+    public class TargetUpdateTrafficMessage : IMessage {\r
+        public int VariantID { get; set; }\r
+        public bool Ready { get; set; }\r
+        public MetadataType MetadataType { get; set; }\r
+        public List<MovieSegment> Segments { get; set; }\r
+    }\r
+}\r
index 33038f928c1018737fe97b504d3e9831b0eaddd4..94a054aa0491706cc63af91dcaf4dc4ed39f2231 100644 (file)
@@ -2,7 +2,6 @@
 using System;\r
 using System.IO;\r
 using System.Windows.Forms;\r
-using TrafficClient;\r
 using Model;\r
 using System.Text;\r
 using System.Globalization;\r
@@ -161,15 +160,24 @@ namespace MaestroShared.Targets {
                 CreateArchiveMetadata();\r
             if (Parameters.TargetConfig.SaveMorpheusMetadata && Parameters.ArchiveMetadata != null && Parameters.MovieSegments != null && Parameters.MovieSegments.Count > 0)\r
                 UploadMorpheusMetadata();\r
-            if (Parameters.TargetConfig.SaveSegments && Parameters.Segments != null)\r
-                Parameters.TrafficApi.UpdateTrafficInformation(Parameters.VariantID, true, (TrafficMetadataType)Parameters.MetadataKind, Parameters.Segments);\r
-\r
+            if (Parameters.TargetConfig.SaveSegments && Parameters.MovieSegments != null)\r
+                UpdateTrafficInformation();\r
             if (Parameters.TargetConfig.SendEmailOnSuccess && !String.IsNullOrEmpty(Parameters.TargetConfig.SuccessEmailRecipient) && !String.IsNullOrEmpty(Parameters.TargetConfig.SuccessEmailPattern))\r
                 SendEmail(Parameters.TargetConfig.SuccessEmailRecipient, Parameters.TargetConfig.SuccessEmailPattern);\r
             Status = READY;\r
             Message = SUCCESS;\r
         }\r
 \r
+        private void UpdateTrafficInformation() {\r
+            TargetUpdateTrafficMessage message = new TargetUpdateTrafficMessage {\r
+                VariantID = Parameters.VariantID,\r
+                Ready = true,\r
+                MetadataType = Parameters.MetadataKind,\r
+                Segments = Parameters.MovieSegments\r
+            };\r
+            \r
+        }\r
+\r
         private void UploadNexioMetadata() {\r
             String xml = null;\r
             string name = GetOutputName();\r
index 19cd166941e30100e2ae75088a2458230138079f..da5b7eff1ed494b70a38400cdcd912e9164d1b24 100644 (file)
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <packages>\r
   <package id="FluentFTP" version="19.1.2" targetFramework="net461" />\r
+  <package id="LinkDotNet.MessageBus.Contracts" version="0.1.1" targetFramework="net461" />\r
   <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net461" />\r
   <package id="NLog" version="4.4.12" targetFramework="net461" />\r
 </packages>
\ No newline at end of file
diff --git a/client/PlanAIRClient/Segment.cs b/client/PlanAIRClient/Segment.cs
deleted file mode 100644 (file)
index 980935f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace TrafficClient {\r
-    public class Segment {\r
-        public long TCIn { get; set; }\r
-        public long TCOut { get; set; }\r
-        public bool Optional { get; set; }\r
-        public string Comment { get; set; }\r
-    }\r
-}\r
index 12da38af9796bcd621612f8bf2b1a8846b7c2df6..e4915e15acb8dde3e5dea37a82a88d23b2d2749a 100644 (file)
@@ -5,6 +5,7 @@ using System.Data.SqlClient;
 using NLog;\r
 using TrafficClient.Workers;\r
 using LinkDotNet.MessageHandling.Contracts;\r
+using MaestroShared.Metadata;\r
 \r
 namespace TrafficClient {\r
     public class TrafficAPI {\r
@@ -36,23 +37,23 @@ namespace TrafficClient {
             return materialWorker.GetMaterialArchiveMetadata(strParam);\r
         }\r
 \r
-        public void UpdateTrafficInformation(int itemID, bool ready, TrafficMetadataType kind, List<Segment> segments) {\r
+        public void UpdateTrafficInformation(int itemID, bool ready, MetadataType kind, List<MovieSegment> segments) {\r
             switch (kind) {\r
-                case TrafficMetadataType.TrafficMaterial: {\r
+                case MetadataType.TrafficMaterial: {\r
                         materialWorker.SetMaterialOK(itemID, false);\r
                         segmentWorker.DeleteMaterialSegments(itemID);\r
-                        foreach (Segment actualSegment in segments)\r
+                        foreach (MovieSegment actualSegment in segments)\r
                             segmentWorker.AddMaterialSegment(itemID, actualSegment);\r
                         materialWorker.SetMaterialOK(itemID, ready);\r
                         break;\r
                     }\r
-                case TrafficMetadataType.TrafficAD: {\r
+                case MetadataType.TrafficAD: {\r
                         if (segments != null && segments.Count == 1)\r
                             segmentWorker.AddADSegment(itemID, segments[0]);\r
                         adWorker.SetADOK(itemID, true);\r
                         break;\r
                     }\r
-                case TrafficMetadataType.TrafficPromo: {\r
+                case MetadataType.TrafficPromo: {\r
                         promoWorker.SetPromoOK(itemID, true);\r
                         if (segments != null && segments.Count == 1)\r
                             segmentWorker.AddPromoSegment(itemID, segments[0]);\r
@@ -77,15 +78,15 @@ namespace TrafficClient {
             return adWorker.GetADArchiveMetadata(strParam);\r
         }\r
 \r
-        public List<Segment> GetMaterialSegments(int itemID) {\r
+        public List<MovieSegment> GetMaterialSegments(int itemID) {\r
             return segmentWorker.GetMaterialSegments(itemID);\r
         }\r
 \r
-        public List<Segment> GetPromoSegments(string strParam) {\r
+        public List<MovieSegment> GetPromoSegments(string strParam) {\r
             return segmentWorker.GetPromoSegments(strParam);\r
         }\r
 \r
-        public List<Segment> GetADSegments(string strParam) {\r
+        public List<MovieSegment> GetADSegments(string strParam) {\r
             return segmentWorker.GetADSegments(strParam);\r
         }\r
 \r
index e0678caf27dcdfed36693b37f5bf2ca28ccaebe3..6c7966ac704aa31a677620e73895b76541f824ab 100644 (file)
     <Compile Include="TrafficLookupResultSelector.Designer.cs">\r
       <DependentUpon>TrafficLookupResultSelector.cs</DependentUpon>\r
     </Compile>\r
-    <Compile Include="Segment.cs" />\r
     <Compile Include="TrafficClasses.cs">\r
       <DependentUpon>TrafficClasses.dbml</DependentUpon>\r
     </Compile>\r
       <DependentUpon>TrafficIDSelector.cs</DependentUpon>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
-  <ItemGroup />\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\MaestroShared\MaestroShared.csproj">\r
+      <Project>{d4417174-f21e-4ce2-ae5c-8eb30c9a9625}</Project>\r
+      <Name>MaestroShared</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
 </Project>
\ No newline at end of file
index f96b222459b092310ed6cc348df54bb245ce22bd..b986d1f3fa4d52b7747f9930092242f0a3fca1a1 100644 (file)
@@ -4,6 +4,7 @@ using System.Data;
 using System.Data.SqlClient;\r
 using NLog;\r
 using LinkDotNet.MessageHandling.Contracts;\r
+using MaestroShared.Metadata;\r
 \r
 namespace TrafficClient.Workers {\r
     public class SegmentWorker : TrafficWorker {\r
@@ -14,31 +15,31 @@ namespace TrafficClient.Workers {
             base(connection, cliFSPReader, messageBus) {\r
         }\r
 \r
-        private Segment ToSegment(clIFsp_EC_MAMPromotionalResult item) {\r
-            return new Segment() {\r
-                TCIn = item.t_TcIn.HasValue ? item.t_TcIn.Value : 0,\r
-                TCOut = item.t_TcOut.HasValue ? item.t_TcOut.Value : 0,\r
+        private MovieSegment ToSegment(clIFsp_EC_MAMPromotionalResult item) {\r
+            return new MovieSegment() {\r
+                TCIn = item.t_TcIn.HasValue ? new Timecode(item.t_TcIn.Value) : new Timecode(),\r
+                TCOut = item.t_TcOut.HasValue ? new Timecode(item.t_TcOut.Value) : new Timecode(),\r
             };\r
         }\r
 \r
-        private Segment ToSegment(clIFsp_EC_SegmentResult item) {\r
-            return new Segment() {\r
-                TCIn = item.v_TcIn.HasValue ? item.v_TcIn.Value : 0,\r
-                TCOut = item.v_TcOut.HasValue ? item.v_TcOut.Value : 0,\r
+        private MovieSegment ToSegment(clIFsp_EC_SegmentResult item) {\r
+            return new MovieSegment() {\r
+                TCIn = item.v_TcIn.HasValue ? new Timecode(item.v_TcIn.Value) : new Timecode(),\r
+                TCOut = item.v_TcOut.HasValue ? new Timecode(item.v_TcOut.Value) : new Timecode(),\r
                 Comment = item.v_SegTitle,\r
                 Optional = item.v_Dropable.HasValue ? item.v_Dropable.Value : false\r
             };\r
         }\r
 \r
-        private Segment ToSegment(clIFsp_EC_MAMAdvertismentResult item) {\r
-            return new Segment() {\r
-                TCIn = item.t_TcIn.HasValue ? item.t_TcIn.Value : 0,\r
-                TCOut = item.t_TcOut.HasValue ? item.t_TcOut.Value : 0\r
+        private MovieSegment ToSegment(clIFsp_EC_MAMAdvertismentResult item) {\r
+            return new MovieSegment() {\r
+                TCIn = item.t_TcIn.HasValue ? new Timecode(item.t_TcIn.Value) : new Timecode(),\r
+                TCOut = item.t_TcOut.HasValue ? new Timecode(item.t_TcOut.Value) : new Timecode()\r
             };\r
         }\r
 \r
-        public List<Segment> GetMaterialSegments(int itemID) {\r
-            List<Segment> result = null;\r
+        public List<MovieSegment> GetMaterialSegments(int itemID) {\r
+            List<MovieSegment> result = null;\r
             try {\r
                 TryConnect();\r
                 using (SqlCommand cmd = new SqlCommand("dbo.clIFsp_EC_MAM", connection)) {\r
@@ -49,7 +50,7 @@ namespace TrafficClient.Workers {
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
                         while (reader.Read()) {\r
                             if (result == null)\r
-                                result = new List<Segment>();\r
+                                result = new List<MovieSegment>();\r
                             clIFsp_EC_SegmentResult item = cliFSPReader.ToclIFsp_SegmentResult(reader);\r
                             result.Add(ToSegment(item));\r
                         }\r
@@ -106,7 +107,7 @@ namespace TrafficClient.Workers {
             }\r
         }\r
 \r
-        public void AddMaterialSegment(int itemID, Segment segment) {\r
+        public void AddMaterialSegment(int itemID, MovieSegment segment) {\r
             object comment = segment.Comment;\r
             if (String.IsNullOrEmpty(segment.Comment))\r
                 comment = DBNull.Value;\r
@@ -117,8 +118,8 @@ namespace TrafficClient.Workers {
                     cmd.CommandType = CommandType.StoredProcedure;\r
                     cmd.Parameters.AddWithValue("@Operation", 1115);\r
                     cmd.Parameters.AddWithValue("@@ItemID", itemID);\r
-                    cmd.Parameters.AddWithValue("@@IntParam1", segment.TCIn);\r
-                    cmd.Parameters.AddWithValue("@@IntParam2", segment.TCOut);\r
+                    cmd.Parameters.AddWithValue("@@IntParam1", segment.TCIn.Frames);\r
+                    cmd.Parameters.AddWithValue("@@IntParam2", segment.TCOut.Frames);\r
                     cmd.Parameters.AddWithValue("@@StrParam1", comment);\r
                     cmd.Parameters.AddWithValue("@@StrParam2", DBNull.Value);\r
                     cmd.Parameters.AddWithValue("@@@Options", optionalParam);\r
@@ -133,7 +134,7 @@ namespace TrafficClient.Workers {
             }\r
         }\r
 \r
-        public void AddADSegment(int itemID, Segment segment) {\r
+        public void AddADSegment(int itemID, MovieSegment segment) {\r
             object comment = segment.Comment;\r
             if (String.IsNullOrEmpty(segment.Comment))\r
                 comment = DBNull.Value;\r
@@ -145,8 +146,8 @@ namespace TrafficClient.Workers {
                     cmd.Parameters.AddWithValue("@Operation", 3100);\r
                     cmd.Parameters.AddWithValue("@@ItemID", itemID);\r
                     cmd.Parameters.AddWithValue("@@@Options", DBNull.Value);\r
-                    cmd.Parameters.AddWithValue("@@IntParam1", segment.TCIn);\r
-                    cmd.Parameters.AddWithValue("@@IntParam2", segment.TCOut);\r
+                    cmd.Parameters.AddWithValue("@@IntParam1", segment.TCIn.Frames);\r
+                    cmd.Parameters.AddWithValue("@@IntParam2", segment.TCOut.Frames);\r
                     cmd.Parameters.AddWithValue("@@StrParam1", comment);\r
                     cmd.ExecuteNonQuery();\r
                 }\r
@@ -159,7 +160,7 @@ namespace TrafficClient.Workers {
             }\r
         }\r
 \r
-        public void AddPromoSegment(int itemID, Segment segment) {\r
+        public void AddPromoSegment(int itemID, MovieSegment segment) {\r
             object comment = segment.Comment;\r
             if (String.IsNullOrEmpty(segment.Comment))\r
                 comment = DBNull.Value;\r
@@ -171,8 +172,8 @@ namespace TrafficClient.Workers {
                     cmd.Parameters.AddWithValue("@Operation", 2100);\r
                     cmd.Parameters.AddWithValue("@@ItemID", itemID);\r
                     cmd.Parameters.AddWithValue("@@@Options", DBNull.Value);\r
-                    cmd.Parameters.AddWithValue("@@IntParam1", segment.TCIn);\r
-                    cmd.Parameters.AddWithValue("@@IntParam2", segment.TCOut);\r
+                    cmd.Parameters.AddWithValue("@@IntParam1", segment.TCIn.Frames);\r
+                    cmd.Parameters.AddWithValue("@@IntParam2", segment.TCOut.Frames);\r
                     cmd.Parameters.AddWithValue("@@StrParam2", comment);\r
                     cmd.ExecuteNonQuery();\r
                 }\r
@@ -185,8 +186,8 @@ namespace TrafficClient.Workers {
             }\r
         }\r
 \r
-        public List<Segment> GetPromoSegments(string strParam) {\r
-            List<Segment> result = null;\r
+        public List<MovieSegment> GetPromoSegments(string strParam) {\r
+            List<MovieSegment> result = null;\r
             try {\r
                 TryConnect();\r
                 using (SqlCommand cmd = new SqlCommand("dbo.clIFsp_EC_MAM", connection)) {\r
@@ -198,11 +199,11 @@ namespace TrafficClient.Workers {
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
                         while (reader.Read()) {\r
                             if (result == null)\r
-                                result = new List<Segment>();\r
+                                result = new List<MovieSegment>();\r
 \r
                             clIFsp_EC_MAMPromotionalResult item = cliFSPReader.ToclIFsp_MAMPromotionalResult(reader);\r
-                            Segment segment = ToSegment(item);\r
-                            if (segment.TCOut != 0)\r
+                            MovieSegment segment = ToSegment(item);\r
+                            if (segment.TCOut.Frames != 0)\r
                                 result.Add(segment);\r
                         }\r
                     }\r
@@ -217,8 +218,8 @@ namespace TrafficClient.Workers {
             return result;\r
         }\r
 \r
-        public List<Segment> GetADSegments(string strParam) {\r
-            List<Segment> result = null;\r
+        public List<MovieSegment> GetADSegments(string strParam) {\r
+            List<MovieSegment> result = null;\r
             try {\r
                 TryConnect();\r
                 using (SqlCommand cmd = new SqlCommand("dbo.clIFsp_EC_MAM", connection)) {\r
@@ -230,10 +231,10 @@ namespace TrafficClient.Workers {
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
                         while (reader.Read()) {\r
                             if (result == null)\r
-                                result = new List<Segment>();\r
+                                result = new List<MovieSegment>();\r
                             clIFsp_EC_MAMAdvertismentResult item = cliFSPReader.ToclIFsp_MAMAdvertisementResult(reader);\r
-                            Segment segment = ToSegment(item);\r
-                            if (segment.TCOut != 0)\r
+                            MovieSegment segment = ToSegment(item);\r
+                            if (segment.TCOut.Frames != 0)\r
                                 result.Add(segment);\r
                         }\r
                     }\r