"password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
"timeout": 1000\r
},\r
- "sendSEmailOnSuccess": true,\r
+ "sendEmailOnSuccess": true,\r
"successEmailRecipient": "vasary@elgekko.net",\r
"successEmailPattern": "A %TARGETNAME% újravágása szükséges."\r
},\r
"tag": "Archiválás",\r
"createMetadata": true,\r
"remote": {\r
- "address": "ftp://10.10.1.100:21/BRAAVOS/ARCHIVE",\r
+ "address": "ftp://10.10.1.100:21/ARCHIVE",\r
"userName": "mediacube",\r
"password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
"timeout": 1000\r
this.lbSourceTitle.Name = "lbSourceTitle";\r
this.lbSourceTitle.Size = new System.Drawing.Size(394, 13);\r
this.lbSourceTitle.TabIndex = 15;\r
- this.lbSourceTitle.Text = " sklj jgja gjfldjg fdljg fdkljg fldkjg jfdg sklj jgja gjfldjg fdljg fdkljg fldkjg" +\r
- " jfdg sklj jgja gjfldjg fdljg fdkljg fldkjg jfdg";\r
+ this.lbSourceTitle.Text = "source";\r
// \r
// ctxmActions\r
// \r
}\r
set {\r
selectedMetadata = value;\r
- textSelectedMetadata.Text = selectedMetadata.ID;\r
+ textSelectedMetadata.Text = selectedMetadata?.ID;\r
movieSegments = null;\r
segments = null;\r
}\r
Timeout = metadata.Server.Timeout,\r
ErrorReporter = ReportError\r
};\r
- trafficIDSelector.IDChangedEvent += TrafficIDSelected;\r
+ trafficIDSelector.IDChangedEvent += OnTrafficIDSelected;\r
}\r
\r
private void InitializeOctopusSelector() {\r
mediaCubeApi = new MediaCubeApi(metadata.Server.Address.ToString(), metadata.Server.UserName, metadata.Server.Password, metadata.Server.Timeout) { ErrorReporter = ReportError };\r
}\r
\r
- private void OnOctopusIDSelected(string selectedID) {\r
- SelectedMetadata = new MetadataInfo() {\r
- Kind = MetadataType.OctopusStory,\r
- Tooltip = "Story ID",\r
- ID = selectedID\r
- };\r
- EnableArchiveMetadataButtonAndCreateMetadataModel();\r
- }\r
-\r
private void ModifyArchiveMetadataClick(object sender, EventArgs e) {\r
+ if (archiveMetadata == null)\r
+ archiveMetadata = GetArchiveMetadata();\r
ArchiveMetadataForm form = new ArchiveMetadataForm(archiveMetadata);\r
form.ShowDialog();\r
}\r
\r
- private IDTypes GetIDType(string id) {\r
- IDTypes result = IDTypes.None;\r
+ private SourceIDType GetSourceType(string id) {\r
+ SourceIDType result = SourceIDType.None;\r
if (!String.IsNullOrEmpty(id)) {\r
Match match = Regex.Match(id, "[A-Z]{1}[0-9]{6}[A-Z]{1}");\r
if (match.Success)\r
- result = IDTypes.TrafficID;\r
+ result = SourceIDType.TrafficID;\r
else {\r
//"^[0-9]+$";\r
match = Regex.Match(id, "[0-9]");\r
if (match.Success)\r
- result = IDTypes.OctopusID;\r
+ result = SourceIDType.OctopusID;\r
}\r
}\r
return result;\r
return result;\r
}\r
\r
- private void TrafficIDSelected(string selectedID, int variantID) {\r
- SelectedMetadata = new MetadataInfo() {\r
- Kind = GetTrafficMetadataType(selectedID),\r
- Tooltip = "Epizod ID",\r
- ID = selectedID,\r
- VariantID = variantID\r
- };\r
- // EnableArchiveMetadataButtonAndCreateMetadataModel();\r
- }\r
-\r
- private MetadataType GetTrafficMetadataType(string id) {\r
- MetadataType result = MetadataType.TrafficMaterial;\r
- switch (id[0]) {\r
- case 'M':\r
- result = MetadataType.TrafficMaterial;\r
- break;\r
- case 'P':\r
- result = MetadataType.TrafficPromo;\r
- break;\r
- case 'R':\r
- result = MetadataType.TrafficAD;\r
- break;\r
- }\r
- return result;\r
- }\r
-\r
- private void EnableArchiveMetadataButtonAndCreateMetadataModel() {\r
- ctxiModifyArchiveMetadata.Enabled = selectedMetadata != null;\r
- if (ctxiModifyArchiveMetadata.Enabled) {\r
- archiveMetadata = GetArchiveMetadata();\r
- } else\r
- archiveMetadata = null;\r
- }\r
-\r
private ArchiveMetadata GetArchiveMetadata() {\r
ArchiveMetadata result = null;\r
- IDTypes idType = GetIDType(textSelectedMetadata.Text);\r
+ SourceIDType idType = GetSourceType(textSelectedMetadata.Text);\r
Cursor.Current = Cursors.WaitCursor;\r
- if (idType == IDTypes.OctopusID)\r
+ if (idType == SourceIDType.OctopusID)\r
result = GetOctopusMetadata();\r
- if (idType == IDTypes.TrafficID)\r
+ if (idType == SourceIDType.TrafficID)\r
result = GetTrafficMetadata();\r
Cursor.Current = Cursors.Default;\r
return result;\r
model.mediaDescription = story.Script;\r
}\r
\r
+ private MetadataType GetTrafficMetadataType(string id) {\r
+ MetadataType result = MetadataType.None;\r
+ if (id.Length < 1)\r
+ return result;\r
+ switch (id[0]) {\r
+ case 'M':\r
+ result = MetadataType.TrafficMaterial;\r
+ break;\r
+ case 'P':\r
+ result = MetadataType.TrafficPromo;\r
+ break;\r
+ case 'R':\r
+ result = MetadataType.TrafficAD;\r
+ break;\r
+ }\r
+ return result;\r
+ }\r
+\r
+ private void OnOctopusIDSelected(string selectedID) {\r
+ if (selectedID == null) {\r
+ SelectedMetadata = null;\r
+ return;\r
+ }\r
+ SelectedMetadata = new MetadataInfo() {\r
+ Kind = MetadataType.OctopusStory,\r
+ Tooltip = "Story ID",\r
+ ID = selectedID\r
+ };\r
+ EnableArchiveMetadataButtonAndCreateMetadataModel();\r
+ UpdateDefineSegmentEnabled();\r
+ }\r
+\r
+ private void OnTrafficIDSelected(string selectedID, int variantID) {\r
+ if (selectedID == null) {\r
+ SelectedMetadata = null;\r
+ return;\r
+ }\r
+ SelectedMetadata = new MetadataInfo() {\r
+ Kind = GetTrafficMetadataType(selectedID),\r
+ Tooltip = "Epizod ID",\r
+ ID = selectedID,\r
+ VariantID = variantID\r
+ };\r
+ EnableArchiveMetadataButtonAndCreateMetadataModel();\r
+ UpdateDefineSegmentEnabled();\r
+ }\r
+\r
+ private void EnableArchiveMetadataButtonAndCreateMetadataModel() {\r
+ ctxiModifyArchiveMetadata.Enabled = selectedMetadata != null;\r
+ if (!ctxiModifyArchiveMetadata.Enabled)\r
+ archiveMetadata = null;\r
+ }\r
+\r
+ private void UpdateDefineSegmentEnabled() {\r
+ MetadataType[] validTypes = { MetadataType.TrafficAD, MetadataType.TrafficMaterial, MetadataType.TrafficPromo };\r
+ ctxiDefineSegments.Enabled =\r
+ Configuration.Player != null &&\r
+ Configuration.Player.SegmentEditor &&\r
+ SelectedSource != null &&\r
+ SelectedSource.FileInfo != null &&\r
+ SelectedMetadata != null &&\r
+ validTypes.ToList().Contains(SelectedMetadata.Kind);\r
+ //TODO\r
+ buttonMetadata.Enabled = GetSourceType(startingName) != SourceIDType.None;\r
+ }\r
+\r
}\r
}\r
private string startingName;\r
private List<DataGridViewRow> selectedSourceRows = new List<DataGridViewRow>();\r
\r
- public IDTypes IDType { get; set; }\r
+ public SourceIDType SourceIDType { get; set; }\r
\r
public SourceInfo SelectedSource {\r
get {\r
else\r
startingName = query.Substring(0, dotPosition);\r
}\r
+\r
+ SourceIDType = GetSourceType(startingName);\r
}\r
\r
private void SetTextSelectedSourceTextFromCheckBoxes() {\r
UpdateSelectedSources(selectedRows);\r
}\r
}\r
+\r
+ private void buttonMetadata_Click(object sender, EventArgs e) {\r
+ switch (SourceIDType) {\r
+ case Metadata.SourceIDType.TrafficID:\r
+ SetTrafficIDToMetadataText();\r
+ break;\r
+ case Metadata.SourceIDType.OctopusID:\r
+ SetOctopusIDToMetadataText();\r
+ break;\r
+ }\r
+ }\r
+\r
}\r
}\r
public partial class MaestroForm {\r
\r
private SegmentConverter segmentConverter;\r
+ private ToolTip targetTooltip;\r
\r
private void InitializeTarget() {\r
+ targetTooltip = new ToolTip();\r
btnExecute.Enabled = false;\r
if (Configuration.Targets == null)\r
return;\r
Dock = DockStyle.Top,\r
Tag = target\r
};\r
+ targetTooltip.SetToolTip(checkBox, target.Remote?.Address?.ToString());\r
checkBox.CheckStateChanged += (s, e) => OnChecked(checkBox, target);\r
panelActions.Controls.Add(checkBox);\r
panelActions.RowCount = panelActions.Controls.Count;\r
EnableArchiveMetadataButtonAndCreateMetadataModel();\r
}\r
\r
- private void UpdateDefineSegmentEnabled() {\r
- MetadataType[] validTypes = { MetadataType.TrafficAD, MetadataType.TrafficMaterial, MetadataType.TrafficPromo };\r
- ctxiDefineSegments.Enabled =\r
- Configuration.Player != null &&\r
- Configuration.Player.SegmentEditor &&\r
- SelectedSource != null &&\r
- SelectedSource.FileInfo != null &&\r
- SelectedMetadata != null &&\r
- validTypes.ToList().Contains(SelectedMetadata.Kind);\r
- buttonMetadata.Enabled = GetIDType(startingName) != IDTypes.None;\r
- }\r
-\r
public void OnTargetPanelsMouseClick(object sender, MouseEventArgs e) {\r
(sender as Control).Select();\r
}\r
octopusIDSelector.ClearCheckBox = trafficIDSelector.ClearSelectionSource;\r
octopusIDSelector.ErrorReporter = ReportError;\r
groups = new GroupBox[] { groupSource, groupMetadata, groupTarget, groupActions };\r
- trafficMetadataSelected = TrafficIDSelected;\r
+ trafficMetadataSelected = OnTrafficIDSelected;\r
octopusMetadataSelected = OnOctopusIDSelected;\r
}\r
\r
}\r
}\r
\r
- private void buttonMetadata_Click(object sender, EventArgs e) {\r
- switch (IDType) {\r
- case Metadata.IDTypes.TrafficID:\r
- SetTrafficIDToMetadataText();\r
- break;\r
- case Metadata.IDTypes.OctopusID:\r
- SetOctopusIDToMetadataText();\r
- break;\r
- }\r
- }\r
-\r
private void SetOctopusIDToMetadataText() {\r
OctopusAPI api = octopusIDSelector.GetClient();\r
Cursor.Current = Cursors.WaitCursor;\r
namespace Maestro.Metadata {\r
- public enum IDTypes {\r
+ public enum SourceIDType {\r
TrafficID = 1,\r
OctopusID = 2,\r
None = 0\r
namespace Maestro.Metadata {\r
public enum MetadataType {\r
- OctopusStory, OctopusPlaceHolder, TrafficMaterial, TrafficPromo, TrafficAD \r
+ None, OctopusStory, OctopusPlaceHolder, TrafficMaterial, TrafficPromo, TrafficAD \r
}\r
}\r
/// </summary>\r
[STAThread]\r
static void Main() {\r
- string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString();\r
- string mutexId = string.Format("Global\\{{{0}}}", appGuid);\r
- bool createdNew;\r
- var allowEveryoneRule = new MutexAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), MutexRights.FullControl, AccessControlType.Allow);\r
- var securitySettings = new MutexSecurity();\r
- securitySettings.AddAccessRule(allowEveryoneRule);\r
- using (var mutex = new Mutex(false, mutexId, out createdNew, securitySettings)) {\r
- var hasHandle = false;\r
- try {\r
- try {\r
- hasHandle = mutex.WaitOne(500, false);\r
- if (hasHandle == false)\r
- MessageBox.Show("A MediaCube Maestro alkalmazás már fut egy példányban.");\r
- }\r
- catch (AbandonedMutexException) {\r
- hasHandle = true;\r
- }\r
- }\r
- finally {\r
- if (hasHandle) {\r
- Application.EnableVisualStyles();\r
- Application.SetCompatibleTextRenderingDefault(false);\r
- Application.Run(new TrayApplicationContext());\r
- mutex.ReleaseMutex();\r
- }\r
- }\r
- }\r
+ //string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString();\r
+ //string mutexId = string.Format("Global\\{{{0}}}", appGuid);\r
+ //bool createdNew;\r
+ //var allowEveryoneRule = new MutexAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), MutexRights.FullControl, AccessControlType.Allow);\r
+ //var securitySettings = new MutexSecurity();\r
+ //securitySettings.AddAccessRule(allowEveryoneRule);\r
+ //using (var mutex = new Mutex(false, mutexId, out createdNew, securitySettings)) {\r
+ // var hasHandle = false;\r
+ // try {\r
+ // try {\r
+ // hasHandle = mutex.WaitOne(500, false);\r
+ // if (hasHandle == false)\r
+ // MessageBox.Show("A MediaCube Maestro alkalmazás már fut egy példányban.");\r
+ // }\r
+ // catch (AbandonedMutexException) {\r
+ // hasHandle = true;\r
+ // }\r
+ // }\r
+ // finally {\r
+ // if (hasHandle) {\r
+ // Application.EnableVisualStyles();\r
+ // Application.SetCompatibleTextRenderingDefault(false);\r
+ // Application.Run(new TrayApplicationContext());\r
+ // mutex.ReleaseMutex();\r
+ // }\r
+ // }\r
+ //}\r
+ Application.EnableVisualStyles();\r
+ Application.SetCompatibleTextRenderingDefault(false);\r
+ Application.Run(new TrayApplicationContext());\r
}\r
}\r
\r
return x > -1;\r
}\r
\r
+ protected override string GetOutputFilePath(string fileName) {\r
+ return fileName;\r
+ }\r
+\r
protected override void EnsureDirectoryExistence(string path) {\r
if (!targetFTP.DirectoryExists(path))\r
targetFTP.CreateDirectory(path, true);\r
using Maestro.Configuration;\r
using NLog;\r
using System;\r
+using System.IO;\r
using System.Text.RegularExpressions;\r
using System.Threading;\r
using System.Windows.Forms;\r
public FXPTargetProcessor(Control parent,TargetProcessorParameter parameters) :\r
base(parent, parameters) {\r
sourceConfig = parameters.SourceConfig;\r
- inputUri = new Uri(String.Format("{0}/{1}", parameters.SourceConfig.Remote.Address, parameters.InputFileName));\r
+ //inputUri = new Uri(String.Format("{0}/{1}", parameters.SourceConfig.Remote.Address, parameters.InputFileName));\r
+ inputUri = new Uri(Path.Combine(parameters.SourceConfig.Remote.Address.ToString(), parameters.InputFileName));\r
Input = inputUri.ToString();\r
-\r
}\r
\r
protected override void UploadFile() {\r
if (!sourceReplyTYPE.Success)\r
throw new Exception(sourceReplyTYPE.ErrorMessage);\r
\r
- FtpReply replyRETR = sourceFTP.Execute("RETR " + inputUri.AbsolutePath);\r
+ string input = inputUri.AbsolutePath;\r
+ if (input.LastIndexOf("/") == 0)\r
+ input = input.Replace("/", "");\r
+ FtpReply replyRETR = sourceFTP.Execute("RETR " + input);\r
+\r
if (!replyRETR.Success) {\r
\r
replyRETR = sourceFTP.Execute("RETR " + inputUri.Segments[inputUri.Segments.Length - 1]);\r
private const string STATUS_FOLDER = ".STATUS";\r
private const string KILLDATE_FILE = "{0}.{1}.killdate";\r
private const string METADATA_FILE = "{0}.json";\r
- private const string DEFAULT_EXTENSION = ".mxf";\r
+ private const string DEFAULT_EXTENSION = ".MXF";\r
protected FileInfo inputFile;\r
protected string workingDir;\r
protected TargetProcessorParameter parameters;\r
private void SendEmail(string to, string messagePattern) {\r
try {\r
string message = messagePattern.Replace("%TARGETNAME%", OutputName);\r
- parameters.MediaCubeApi.Notify(to, messagePattern);\r
+ parameters.MediaCubeApi.Notify(to, message);\r
}\r
catch (Exception e) {\r
MessageBox.Show(parent, e.Message);\r
Finished = DateTime.Now;\r
workFlowAction.finished = Finished;\r
SendWorkFlowAction();\r
+ Progress = 0;\r
}\r
\r
protected virtual bool FileExists(string path) {\r
Win32File.CopyFileEx(Input, Output, new CopyProgressRoutine(this.CopyProgressHandler), IntPtr.Zero, ref pbCancel, CopyFileFlags.COPY_FILE_RESTARTABLE);\r
}\r
\r
+ protected virtual string GetOutputFilePath(string fileName) {\r
+ return "/".Equals(workingDir) ? fileName : Path.Combine(workingDir, fileName);\r
+ }\r
+\r
protected virtual string CreateOutputFileName() {\r
string nameWithoutExtension = parameters.TargetConfig.OutputFormat.Replace("%ID%", ID).Replace("%SOURCENAME%", Path.GetFileNameWithoutExtension(InputName));\r
string extension = InputName.Contains(".") ? InputName.Substring(InputName.LastIndexOf(".")) : DEFAULT_EXTENSION;\r
+ extension = extension.ToUpper();\r
+\r
string result = String.Format(FILENAME, nameWithoutExtension, extension);\r
int version = 1;\r
- string target = "/".Equals(workingDir) ? result : Path.Combine(workingDir, result);\r
- while (FileExists(target)) {\r
+ while (FileExists(GetOutputFilePath(result))) {\r
string versioned = String.Format(VERSIONED_FILENAME, nameWithoutExtension, version, extension);\r
logger.Debug(ALREADY_EXISTS, result, versioned);\r
result = versioned;\r
- target = "/".Equals(workingDir) ? result : Path.Combine(workingDir, result);\r
version++;\r
}\r
return result;\r
checkFromCode = false;\r
ClearCheckBox?.Invoke();\r
ClearSelectionSource(node, treeContent.Nodes);\r
- id = node.Checked ? text : string.Empty;\r
+ id = node.Checked ? text : null;\r
IDChangedEvent?.Invoke(id);\r
checkFromCode = false;\r
}\r
if (selected) {\r
IDChangedEvent?.Invoke(res.MediaID, res.VariantID);\r
} else\r
- IDChangedEvent?.Invoke(string.Empty, 0);\r
+ IDChangedEvent?.Invoke(null, 0);\r
}\r
\r
public void ClearSelectionSource() {\r