git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 7 Feb 2020 14:42:10 +0000 (14:42 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 7 Feb 2020 14:42:10 +0000 (14:42 +0000)
13 files changed:
client/DxPlay/Configuration/dxplay.json
client/DxPlay/PlayerForm.cs
client/DxPlay/Properties/AssemblyInfo.cs
client/MXFFileParser/MXFFile.cs
client/MXFFileParser/Properties/AssemblyInfo.cs
client/Maestro/ArchiveMetadataForm.Designer.cs
client/Maestro/ArchiveMetadataForm.cs
client/Maestro/Configuration/editor-hirtv.json [new file with mode: 0644]
client/Maestro/Configuration/editor-mv.json [moved from client/Maestro/Configuration/editor.json with 94% similarity]
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.Metadata.cs
client/Maestro/Properties/AssemblyInfo.cs
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MaestroJobListModel.java

index 7718a79817048c2137a9fad35c0791e006ea72d1..431b53adef1e0103c7af7aa163612928fefd8d40 100644 (file)
@@ -5,18 +5,6 @@
   "isStandalone": true,\r
   "player": {\r
     "autoStart": false,\r
-    "segmentEditor": true\r
-  },\r
-  "metadata": {\r
-    "$type": "TrafficMetadata",\r
-    "uiFileName": "dxplay.en",\r
-    "server": {\r
-      "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
-      "userName": "MAM",\r
-      "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
-      "timeout": 10000\r
-    },\r
-    "version": 0,\r
-    "redefineSegments": true\r
+    "segmentEditor": false\r
   }\r
 }\r
index 9b2d34cd2c7878a7e1f595dcef1bb43b7240904f..8ef8fd071b32bdcb2456535be09491fcedc7dd7e 100644 (file)
@@ -472,7 +472,7 @@ namespace DxPlay {
             BeginInvoke((Action)(() => {\r
                 if (Disposing || IsDisposed || m_play == null)\r
                     return;\r
-                if (m_play.State == GraphState.Completed)\r
+                if (m_play.State == GraphState.Completed || m_play.State == GraphState.Paused)\r
                     UpdatePlayPauseButton();\r
                 if (!trackBarAtUser)\r
                     playerControls.TrackBar.Value = m_play.CurrentTC.ZeroBasedFrames;\r
index c5457f59b66e8f744a981ba23cb248d740c9c970..bc238e26125de63465de03360d0c71792a0347b4 100644 (file)
@@ -26,7 +26,7 @@ using System.Runtime.CompilerServices;
 // You can specify all the values or you can default the Revision and Build Numbers \r
 // by using the '*' as shown below:\r
 \r
-[assembly: AssemblyVersion("2.0.8.8")]\r
+[assembly: AssemblyVersion("2.0.8.9")]\r
 \r
 //\r
 // In order to sign your assembly you must specify a key to use. Refer to the \r
@@ -56,5 +56,5 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyDelaySign(false)]\r
 [assembly: AssemblyKeyFile("")]\r
 [assembly: AssemblyKeyName("")]\r
-[assembly: AssemblyFileVersion("2.0.8.8")]\r
+[assembly: AssemblyFileVersion("2.0.8.9")]\r
 \r
index f01a562ae4e4a0bbe240820e5435103a6a978cf2..3d9967b914f329fd52537d1e20bef1f32fc32a2c 100644 (file)
@@ -91,12 +91,148 @@ namespace Myriadbits.MXF {
                     break;\r
             }\r
         }\r
-        //TODO XML kiolvasás és parse\r
-        public string InspectMetadata() {\r
-            ParsePartial();\r
-            return null;\r
+        string ReadData(MXFObject obj) {\r
+            string result = null;\r
+            long readerOffset = obj.Offset;\r
+            long len = (int)obj.Length;\r
+            MXFKLV klv = obj as MXFKLV;\r
+            if (klv != null) {\r
+                // Determine real length including BER + Key\r
+                len = (klv.DataOffset - readerOffset) + klv.Length;\r
+            }\r
+            MXFLocalTag lt = obj as MXFLocalTag;\r
+            if (lt != null) {\r
+                len = (lt.DataOffset - readerOffset) + lt.Size;\r
+            }\r
+\r
+            if (len > 0) {\r
+                byte[] data = new byte[len];\r
+\r
+                using (MXFReader reader = new MXFReader(this.Filename)) {\r
+                    reader.Seek(readerOffset);\r
+                    reader.Read(data, len);\r
+                }\r
+                result = System.Text.Encoding.UTF8.GetString(data);\r
+            }\r
+\r
+            if (result != null) {\r
+                int startIndex = result.IndexOf("<?xml");\r
+                int endIndex = result.LastIndexOf(">");\r
+                if (startIndex > -1)\r
+                    result = result.Substring(startIndex, endIndex - startIndex + 1);\r
+            }\r
+            return result;\r
+        }\r
+\r
+        /// <summary>\r
+        /// Partially Parse an MXF file, retrieve embedded metadata\r
+        /// </summary>\r
+        public string GetMetadata() {\r
+            string result = null;\r
+            MXFKLVFactory klvFactory = new MXFKLVFactory();\r
+\r
+            MXFPartition currentPartition = null;\r
+            Dictionary<UInt16, MXFEntryPrimer> allPrimerKeys = null;\r
+            int[] counters = new int[Enum.GetNames(typeof(KeyType)).Length];\r
+            PartialSeekMode seekMode = PartialSeekMode.Unknown;\r
+            using (m_reader = new MXFReader(this.Filename)) {\r
+                this.Filesize = m_reader.Size;\r
+                MXFObject partitions = new MXFNamedObject("Partitions", 0);\r
+                this.AddChild(partitions);\r
+\r
+                // Start with trying to find the RIP\r
+                bool ripFound = ReadRIP(klvFactory);\r
+                if (ripFound)\r
+                    seekMode = PartialSeekMode.UsingRIP;\r
+                m_reader.Seek(0); // Start at the beginning\r
+\r
+                // Start by reading the first partition\r
+                int partitionNumber = 0; // For easy partition identification\r
+                while (!m_reader.EOF && seekMode != PartialSeekMode.Backwards) // Eof and NOT searching backwards\r
+                {\r
+                    MXFKLV klv = klvFactory.CreateObject(m_reader, currentPartition);\r
+\r
+                    //Debug.WriteLine(klv.Parent.Type + " " + klv.Type);\r
+\r
+                    // Update overall counters\r
+                    //if (klv.Key.Type == KeyType.None)\r
+                    //    counters[(int)klv.Key.Type]++;\r
+\r
+                    if (klv.Key.Type == KeyType.Partition && seekMode == PartialSeekMode.Backwards) {\r
+                        if (this.Partitions.Exists(a => a.Offset == klv.Offset)) {\r
+                            // A new partition has been found that we already found, quit the main loop\r
+                            break;\r
+                        }\r
+                    }\r
+\r
+\r
+                    // Process the new KLV\r
+\r
+                    if (!ProcessKLVObjectOrig(klv, partitions, ref currentPartition, ref partitionNumber, ref allPrimerKeys))\r
+                        break;\r
+                    Debug.WriteLine("{0}/{1} ", klv.Parent, klv);\r
+\r
+                    if ("XML Document Text - An XML document as text. Data type is specified by the value.".Equals(klv.Key.Name)) {\r
+                        result = ReadData(klv);\r
+                        break;\r
+                    }\r
+\r
+                    // If we found the second partition \r
+                    long nextSeekPosition = klv.DataOffset + klv.Length;\r
+                    if (partitionNumber >= 2) // Header fully read, now busy with the second partition\r
+                    {\r
+                        switch (seekMode) {\r
+                            case PartialSeekMode.UsingRIP: // And we already found the RIP\r
+                                if (currentPartition.FirstSystemItem != null) // And we found the first system item\r
+                                {\r
+                                    MXFEntryRIP ripEntry = this.RIP.GetPartition(partitionNumber);\r
+                                    if (ripEntry != null) {\r
+                                        // Mark the current partition as not-completely read\r
+                                        currentPartition.IsLoaded = false;\r
+\r
+                                        // Start at the next partition\r
+                                        nextSeekPosition = (long)ripEntry.PartitionOffset;\r
+                                    }\r
+                                }\r
+                                break;\r
+\r
+                            case PartialSeekMode.Backwards: // NO RIP, searching backwards\r
+                                                            // Backwards, jump to the PREVIOUS partition\r
+                                if (currentPartition.FirstSystemItem != null) // And we found the first system item\r
+                                {\r
+                                    // Jump to the previous partition\r
+                                    if (currentPartition.PreviousPartition != 0) {\r
+                                        // And we haven't found this partition yet\r
+                                        if (!this.Partitions.Exists(a => a.ThisPartition == currentPartition.PreviousPartition))\r
+                                            nextSeekPosition = (long)currentPartition.PreviousPartition; // Jump to previous\r
+                                    }\r
+                                }\r
+                                break;\r
+\r
+                            case PartialSeekMode.Unknown: // No RIP....\r
+                                                          // Hmmm, RIP is not found, check if we have a footer partition somewhere\r
+                                MXFPartition part = this.Partitions.Where(a => a.FooterPartition != 0).FirstOrDefault();\r
+                                if (part != null) {\r
+                                    // If we are already at the footer, don't bother to seek\r
+                                    if (currentPartition.Offset != (long)part.FooterPartition) {\r
+                                        nextSeekPosition = (long)part.FooterPartition; // Start at the footer\r
+                                        seekMode = PartialSeekMode.Backwards;\r
+                                    }\r
+                                }\r
+                                break;\r
+                        }\r
+                    }\r
+\r
+                    // Next KLV please\r
+                    m_reader.Seek(nextSeekPosition);\r
+\r
+                }\r
+            }\r
+            //Debug.WriteLine(String.Format("Finished parsing file '{0}'", this.Filename));\r
+            return result;\r
         }\r
 \r
+\r
         /// <summary>\r
         /// Fully Parse an MXF file \r
         /// </summary>\r
index 7bf29ca644458b84436693419130d20f01693510..22c250e8403ac2709e1f37c9749bef076f3a7654 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers \r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.2.0.6")]\r
-[assembly: AssemblyFileVersion("2.2.0.6")]\r
+[assembly: AssemblyVersion("2.2.0.7")]\r
+[assembly: AssemblyFileVersion("2.2.0.7")]\r
index b844726ce8e1b11eba427180df8befa225e20521..da8339bdae2bfa94b9179d79c86384745706375f 100644 (file)
             this.btnOk = new System.Windows.Forms.Button();\r
             this.btnCancel = new System.Windows.Forms.Button();\r
             this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.btnImportOctopus = new System.Windows.Forms.Button();\r
             this.cbFolders = new System.Windows.Forms.ComboBox();\r
             this.dtScheduled = new System.Windows.Forms.DateTimePicker();\r
-            this.btnImportOctopus = new System.Windows.Forms.Button();\r
-            this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.btnMxfMetadata = new System.Windows.Forms.Button();\r
             this.groupBox1.SuspendLayout();\r
             this.tableLayoutPanel1.SuspendLayout();\r
             this.tableLayoutPanel2.SuspendLayout();\r
             this.txtMediaDescription.Multiline = true;\r
             this.txtMediaDescription.Name = "txtMediaDescription";\r
             this.txtMediaDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both;\r
-            this.txtMediaDescription.Size = new System.Drawing.Size(749, 136);\r
+            this.txtMediaDescription.Size = new System.Drawing.Size(749, 186);\r
             this.txtMediaDescription.TabIndex = 4;\r
             // \r
             // label_stuffTitle\r
             // \r
             // groupBox1\r
             // \r
+            this.groupBox1.Controls.Add(this.btnMxfMetadata);\r
             this.groupBox1.Controls.Add(this.btnOk);\r
             this.groupBox1.Controls.Add(this.btnCancel);\r
             this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom;\r
-            this.groupBox1.Location = new System.Drawing.Point(0, 497);\r
+            this.groupBox1.Location = new System.Drawing.Point(0, 547);\r
             this.groupBox1.Margin = new System.Windows.Forms.Padding(4);\r
             this.groupBox1.Name = "groupBox1";\r
             this.groupBox1.Padding = new System.Windows.Forms.Padding(4);\r
             this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
             this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
             this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());\r
-            this.tableLayoutPanel1.Size = new System.Drawing.Size(771, 497);\r
+            this.tableLayoutPanel1.Size = new System.Drawing.Size(771, 547);\r
             this.tableLayoutPanel1.TabIndex = 3;\r
             // \r
+            // tableLayoutPanel2\r
+            // \r
+            this.tableLayoutPanel2.AutoSize = true;\r
+            this.tableLayoutPanel2.ColumnCount = 3;\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());\r
+            this.tableLayoutPanel2.Controls.Add(this.btnImportOctopus, 2, 0);\r
+            this.tableLayoutPanel2.Controls.Add(this.cbFolders, 1, 0);\r
+            this.tableLayoutPanel2.Controls.Add(this.dtScheduled, 0, 0);\r
+            this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;\r
+            this.tableLayoutPanel2.Location = new System.Drawing.Point(10, 308);\r
+            this.tableLayoutPanel2.Name = "tableLayoutPanel2";\r
+            this.tableLayoutPanel2.RowCount = 1;\r
+            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
+            this.tableLayoutPanel2.Size = new System.Drawing.Size(751, 36);\r
+            this.tableLayoutPanel2.TabIndex = 10;\r
+            // \r
+            // btnImportOctopus\r
+            // \r
+            this.btnImportOctopus.Anchor = System.Windows.Forms.AnchorStyles.None;\r
+            this.btnImportOctopus.Location = new System.Drawing.Point(647, 4);\r
+            this.btnImportOctopus.Margin = new System.Windows.Forms.Padding(4);\r
+            this.btnImportOctopus.Name = "btnImportOctopus";\r
+            this.btnImportOctopus.Size = new System.Drawing.Size(100, 28);\r
+            this.btnImportOctopus.TabIndex = 9;\r
+            this.btnImportOctopus.Text = "Import";\r
+            this.btnImportOctopus.UseVisualStyleBackColor = true;\r
+            this.btnImportOctopus.Click += new System.EventHandler(this.OnImportOctopusData);\r
+            // \r
             // cbFolders\r
             // \r
             this.cbFolders.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.dtScheduled.TabIndex = 7;\r
             this.dtScheduled.ValueChanged += new System.EventHandler(this.OnDateChanged);\r
             // \r
-            // btnImportOctopus\r
-            // \r
-            this.btnImportOctopus.Anchor = System.Windows.Forms.AnchorStyles.None;\r
-            this.btnImportOctopus.Location = new System.Drawing.Point(647, 4);\r
-            this.btnImportOctopus.Margin = new System.Windows.Forms.Padding(4);\r
-            this.btnImportOctopus.Name = "btnImportOctopus";\r
-            this.btnImportOctopus.Size = new System.Drawing.Size(100, 28);\r
-            this.btnImportOctopus.TabIndex = 9;\r
-            this.btnImportOctopus.Text = "Import";\r
-            this.btnImportOctopus.UseVisualStyleBackColor = true;\r
-            this.btnImportOctopus.Click += new System.EventHandler(this.OnImportOctopusData);\r
-            // \r
-            // tableLayoutPanel2\r
+            // btnMxfMetadata\r
             // \r
-            this.tableLayoutPanel2.AutoSize = true;\r
-            this.tableLayoutPanel2.ColumnCount = 3;\r
-            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());\r
-            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
-            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());\r
-            this.tableLayoutPanel2.Controls.Add(this.btnImportOctopus, 2, 0);\r
-            this.tableLayoutPanel2.Controls.Add(this.cbFolders, 1, 0);\r
-            this.tableLayoutPanel2.Controls.Add(this.dtScheduled, 0, 0);\r
-            this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;\r
-            this.tableLayoutPanel2.Location = new System.Drawing.Point(10, 308);\r
-            this.tableLayoutPanel2.Name = "tableLayoutPanel2";\r
-            this.tableLayoutPanel2.RowCount = 1;\r
-            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
-            this.tableLayoutPanel2.Size = new System.Drawing.Size(751, 36);\r
-            this.tableLayoutPanel2.TabIndex = 10;\r
+            this.btnMxfMetadata.Anchor = System.Windows.Forms.AnchorStyles.Left;\r
+            this.btnMxfMetadata.Location = new System.Drawing.Point(8, 15);\r
+            this.btnMxfMetadata.Margin = new System.Windows.Forms.Padding(4);\r
+            this.btnMxfMetadata.Name = "btnMxfMetadata";\r
+            this.btnMxfMetadata.Size = new System.Drawing.Size(126, 28);\r
+            this.btnMxfMetadata.TabIndex = 7;\r
+            this.btnMxfMetadata.Text = "MXF Metadata";\r
+            this.btnMxfMetadata.UseVisualStyleBackColor = true;\r
+            this.btnMxfMetadata.Click += new System.EventHandler(this.OnImportMxfMetadataClick);\r
             // \r
             // ArchiveMetadataForm\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
             this.CancelButton = this.btnCancel;\r
-            this.ClientSize = new System.Drawing.Size(771, 548);\r
+            this.ClientSize = new System.Drawing.Size(771, 598);\r
             this.Controls.Add(this.tableLayoutPanel1);\r
             this.Controls.Add(this.groupBox1);\r
             this.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
         private System.Windows.Forms.DateTimePicker dtScheduled;\r
         private System.Windows.Forms.Button btnImportOctopus;\r
         private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;\r
+        private System.Windows.Forms.Button btnMxfMetadata;\r
     }\r
 }
\ No newline at end of file
index f1aa3a5443939c926e6ded4bf3135eb6cbb4d4a0..d8da45fc1897b127c178377edfcc2bb4f0181fb0 100644 (file)
@@ -7,15 +7,21 @@ using System.Collections.Generic;
 using System.Linq;\r
 using System;\r
 using MaestroShared.Commons;\r
+using Maestro.Metadata;\r
+using Myriadbits.MXF;\r
+using System.Xml.Linq;\r
+using System.Diagnostics;\r
 \r
 namespace Maestro {\r
     public partial class ArchiveMetadataForm : Form {\r
 \r
         private ArchiveMetadata model;\r
+        private readonly SourceInfo selectedSource;\r
         private OctopusAPI client;\r
 \r
-        public ArchiveMetadataForm(ref ArchiveMetadata model, OctopusMetadata metadata, IMessageBus errorMessageBus) : this() {\r
+        public ArchiveMetadataForm(ref ArchiveMetadata model, OctopusMetadata metadata, IMessageBus errorMessageBus, SourceInfo selectedSource) : this() {\r
             this.model = model;\r
+            this.selectedSource = selectedSource;\r
             txtItemID.Text = model.itemHouseId;\r
             txtItemTitle.Text = model.itemTitle;\r
             txtItemDescription.Text = model.itemDescription;\r
@@ -31,6 +37,8 @@ namespace Maestro {
                 client = new OctopusAPI(metadata.Server?.Address?.OriginalString, metadata.Server?.UserName, metadata.Server?.Password, metadata.Server?.Timeout ?? 0, errorMessageBus);\r
                 RefreshFolders();\r
             }\r
+\r
+            btnMxfMetadata.Enabled = selectedSource?.FileInfo != null;\r
         }\r
 \r
         private void RefreshFolders() {\r
@@ -79,5 +87,36 @@ namespace Maestro {
             else\r
                 txtMediaDescription.Text = text;\r
         }\r
+\r
+        private void OnImportMxfMetadataClick(object sender, EventArgs e) {\r
+            try {\r
+                MXFFile mxf = new MXFFile(selectedSource.FileInfo.FullName);\r
+                string xml = mxf.GetMetadata();\r
+                if (xml == null) {\r
+                    MessageBox.Show("Nem található metaadat a fájlban.");\r
+                    return;\r
+                }\r
+\r
+                XElement root = XElement.Parse(xml);\r
+                string ns = root.GetDefaultNamespace()?.NamespaceName;\r
+                if (ns != null)\r
+                    ns = "{" + ns + "}";\r
+\r
+                XElement xCreator = root.Elements(ns + "Creator").FirstOrDefault();\r
+                if (xCreator != null)\r
+                    txtItemTitle.Text = xCreator.Attribute("name").Value;\r
+                XElement xTitle = root.Elements(ns + "Title").FirstOrDefault();\r
+                if (xTitle != null)\r
+                    txtMediaTitle.Text = xTitle.Attribute("usAscii").Value;\r
+                XElement xDescription = root.Elements(ns + "Description").FirstOrDefault();\r
+                if (xDescription != null)\r
+                    txtMediaDescription.Text = xDescription.Value;\r
+\r
+            } catch (Exception ex) {\r
+                MessageBox.Show("Hiba! A rendszer üzenete: " + ex.Message);\r
+            }\r
+\r
+\r
+        }\r
     }\r
 }\r
diff --git a/client/Maestro/Configuration/editor-hirtv.json b/client/Maestro/Configuration/editor-hirtv.json
new file mode 100644 (file)
index 0000000..dce2293
--- /dev/null
@@ -0,0 +1,90 @@
+{\r
+       "title": "Editor - HÍRTV",\r
+       "active": true,\r
+       "startInTray": false,\r
+       "enableCustomMetadataId": true,\r
+       "player": {\r
+               "enabled": true,\r
+               "autoStart": false,\r
+               "segmentEditor": true\r
+       },\r
+       "source": {\r
+               "$type": "UNCSource",\r
+               "filter": "avi,wav,mxf,mts",\r
+               "local": {\r
+                       "address": "file://d:/!META_MXF",\r
+                       "timeout": 1000\r
+               },\r
+               "remote": {\r
+                       "address": "ftp://10.11.1.100/Promise/",\r
+                       "userName": "editor1",\r
+                       "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+                       "timeout": 1000\r
+               }\r
+       },\r
+       "metadatas": [\r
+               {\r
+                       "$type": "OctopusMetadata",\r
+                       "server": {\r
+                               "address": "http://10.10.1.29:89/services/rest/octopus/",\r
+                               "timeout": 1000\r
+                       }\r
+               },\r
+               {\r
+                       "$type": "TrafficMetadata",\r
+                       "server": {\r
+                               "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
+                               "userName": "MAM",\r
+                               "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
+                               "timeout": 1000\r
+                       }\r
+               },\r
+               {\r
+                       "$type": "MediaCubeMetadata",\r
+                       "server": {\r
+                               "address": "http://10.10.1.29:88/services/rest/jobengine/",\r
+                               "timeout": 1000\r
+                       }\r
+               }\r
+       ],\r
+       "targets": [\r
+               {\r
+                       "label": "Adáskész",\r
+                       "processor": "FXPTargetProcessor",\r
+                       "outputFormat": "%ID%",\r
+                       "reference": [ "Mentés" ],\r
+                       "saveSegments": true,\r
+                       "subFolderFormat": "%SOURCEFOLDERNAME%",\r
+                       "tag": "Adáskész",\r
+                       "remote": {\r
+                               "address": "ftp://10.11.1.100/Promise/PROGRAM/TEST",\r
+                               "userName": "editor1",\r
+                               "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+                               "timeout": 1000\r
+                       }\r
+               },\r
+               {\r
+                       "label": "Archiválás",\r
+                       "processor": "FXPTargetProcessor",\r
+                       "outputFormat": "%ID%",\r
+                       "saveArchiveMetadata": true,\r
+                       "tag": "Archiválás",\r
+                       "remote": {\r
+                               "address": "ftp://10.11.1.100/Promise/ARCHIVE/TEST",\r
+                               "userName": "editor1",\r
+                               "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+                               "timeout": 1000\r
+                       }\r
+               },\r
+               {\r
+                       "label": "Mentés",\r
+                       "readOnly": true,\r
+                       "processor": "UNCTargetProcessor",\r
+                       "outputFormat": "%SOURCENAME%",\r
+                       "tag": "Mentés",\r
+                       "subFolderFormat": "Transfered",\r
+                       "moveToFolder": true\r
+               }\r
+\r
+       ]\r
+}\r
similarity index 94%
rename from client/Maestro/Configuration/editor.json
rename to client/Maestro/Configuration/editor-mv.json
index 0e802bf1ded7d464632d5c554be5cb851924589c..ee67c1860143c59a14a124585efc112f8d1e0c6c 100644 (file)
@@ -1,6 +1,6 @@
 {\r
        "title": "Editor",\r
-       "active": true,\r
+       "active": false,\r
        "startInTray": false,\r
        "enableCustomMetadataId": true,\r
        "player": {\r
@@ -12,7 +12,7 @@
                "$type": "UNCSource",\r
                "filter": "avi,wav,mxf,mts",\r
                "local": {\r
-                       "address": "file://c:/_video/",\r
+                       "address": "file://d:/!META_MXF",\r
                        "timeout": 1000\r
                },\r
                "remote": {\r
index a5cb64d7e1ce555e9ab7d8e2be39698b17f69f8f..0deee7eee1f7c1f4183e4e49387feaf74959663e 100644 (file)
     <None Include="Configuration\dani-teszt-vezerlo.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\editor.json">\r
+    <None Include="Configuration\editor-mv.json">\r
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+    </None>\r
+    <None Include="Configuration\editor-hirtv.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
     <None Include="Configuration\global.json">\r
index 7a7babaa80d3cfafa3313186b848c71dc4ef109f..9c4ec3b5fe362345a2676552f02ee33d13b2947b 100644 (file)
@@ -114,7 +114,7 @@ namespace Maestro {
             }\r
 \r
             OctopusMetadata metadata = MetadataProvider.Get<OctopusMetadata>(Configuration.Metadatas);\r
-            ArchiveMetadataForm form = new ArchiveMetadataForm(ref archiveMetadata, metadata, errorMessageBus);\r
+            ArchiveMetadataForm form = new ArchiveMetadataForm(ref archiveMetadata, metadata, errorMessageBus, SelectedSource);\r
             form.BackColor = partialColor;\r
             DialogResult result = form.ShowDialog();\r
 \r
index 0d15fbc5e084fa8502fbd6b31c678af644df4866..38eabe36d8c88b1e8677f9cf8edb738aa1b2ec10 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.1.0.4")]\r
-[assembly: AssemblyFileVersion("2.1.0.4")]\r
+[assembly: AssemblyVersion("2.1.0.5")]\r
+[assembly: AssemblyFileVersion("2.1.0.5")]\r
index 60f1db38655bc19726495b09cfd4f262060694a0..ffe01882a42073f48e181f87c217f451a83d230d 100644 (file)
@@ -118,10 +118,10 @@ public class MaestroJobListModel extends AsyncBaseModel implements IJobChangedLi
                                registerTask(() -> onJobCreated(job));\r
                                return;\r
                        }\r
-                       if (jobEvent.getSignalType().equals(SignalType.DELETE)) {\r
-                               registerTask(() -> onJobDeleted(job));\r
-                               return;\r
-                       }\r
+                       //                      if (jobEvent.getSignalType().equals(SignalType.DELETE)) {\r
+                       //                              registerTask(() -> onJobDeleted(job));\r
+                       //                              return;\r
+                       //                      }\r
                        if (jobEvent.getSignalType().equals(SignalType.UPDATE)) {\r
                                registerTask(() -> onJobUpdated(job));\r
                                return;\r