git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 16 Nov 2017 21:41:12 +0000 (21:41 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 16 Nov 2017 21:41:12 +0000 (21:41 +0000)
client/Maestro/Targets/FTPTargetProcessor.cs
client/Maestro/Targets/FXPTargetProcessor.cs
client/Maestro/Targets/UNCTargetProcessor.cs

index 5ff420f05e4bf9e31680913501a1b2b24d7f1313..0263220c4bf50acdca426fda80fa303aade02116 100644 (file)
@@ -1,5 +1,5 @@
 using FluentFTP;\r
-using Maestro.Configuration;\r
+using MaestroShared.Configuration;\r
 using NLog;\r
 using System;\r
 using System.IO;\r
@@ -10,6 +10,9 @@ using System.Windows.Forms;
 namespace Maestro.Targets {\r
 \r
     public class FTPTargetProcessor : UNCTargetProcessor {\r
+        private const string PATTERN_CONCAT = "{0}{1}";\r
+        private const string _226 = "226";\r
+        private const string UPLOAD_ERROR = "Feltöltési hiba.";\r
         private readonly Logger logger = LogManager.GetCurrentClassLogger();\r
         protected FtpClient targetFTP;\r
 \r
@@ -18,7 +21,7 @@ namespace Maestro.Targets {
             FtpTrace.LogFunctions = false;\r
             if (!(parameters.SourceConfig is UNCSource)) {\r
                 inputFile = null;\r
-                Uri inputUri = new Uri(String.Format("{0}{1}", parameters.SourceConfig.Remote.Address, parameters.InputFileName));\r
+                Uri inputUri = new Uri(String.Format(PATTERN_CONCAT, parameters.SourceConfig.Remote.Address, parameters.InputFileName));\r
                 Input = inputUri.ToString();\r
             }\r
         }\r
@@ -53,14 +56,9 @@ namespace Maestro.Targets {
                 }\r
             }\r
             FtpReply reply = targetFTP.GetReply();\r
-            if (!reply.Success || !"226".Equals(reply.Code)) {\r
-                throw new Exception("Feltöltési hiba.");\r
+            if (!reply.Success || !_226.Equals(reply.Code)) {\r
+                throw new Exception(UPLOAD_ERROR);\r
             }\r
-            //if ((reply.Success && "226".Equals(reply.Code) && !FileExists(OutputName)) || \r
-            //    !reply.Success || \r
-            //    (reply.Success && !"226".Equals(reply.Code))) {\r
-            //    throw new Exception("Feltöltési hiba.");\r
-            //}\r
         }\r
 \r
         protected void reconnect() {\r
@@ -83,8 +81,8 @@ namespace Maestro.Targets {
                 }\r
             }\r
             FtpReply reply = targetFTP.GetReply();\r
-            if (!reply.Success || !"226".Equals(reply.Code)) {\r
-                throw new Exception("Feltöltési hiba.");\r
+            if (!reply.Success || !_226.Equals(reply.Code)) {\r
+                throw new Exception(UPLOAD_ERROR);\r
             }\r
         }\r
 \r
@@ -128,13 +126,13 @@ namespace Maestro.Targets {
             if (!String.IsNullOrEmpty(parameters.TargetConfig.SubFolderFormat)) {\r
                 string name = GetDynamicName(parameters.TargetConfig.SubFolderFormat);\r
                 //TODO ellenőrizni, hogy mi van placeholder esetén\r
-                if (parameters.TargetConfig.SubFolderFormat.Contains("%TEXT%")) {\r
-                    string pattern = name.Split('-')[0] + "-";\r
+                if (parameters.TargetConfig.SubFolderFormat.Contains(PATTERN_TEXT)) {\r
+                    string pattern = name.Split(HYPHEN[0])[0] + HYPHEN;\r
                     targetFTP.SetWorkingDirectory(connection.Address.LocalPath);\r
                     FtpListItem item = targetFTP.GetListing()?.Where(i => i.Type.Equals(FtpFileSystemObjectType.Directory) && i.Name.StartsWith(pattern)).FirstOrDefault();\r
                     if (item != null)\r
                         name = item.Name;\r
-                    targetFTP.SetWorkingDirectory("/");\r
+                    targetFTP.SetWorkingDirectory(SLASH);\r
                 }\r
                 result = Path.Combine(connection.Address.LocalPath, name);\r
             } else\r
index ab42865923a7d74f4905f52ec0da730ca2731164..48fa38941d0b275aa0602884c7640cc6e66dbf3e 100644 (file)
@@ -1,5 +1,5 @@
 using FluentFTP;\r
-using Maestro.Configuration;\r
+using MaestroShared.Configuration;\r
 using NLog;\r
 using System;\r
 using System.IO;\r
@@ -10,6 +10,8 @@ using System.Windows.Forms;
 namespace Maestro.Targets {\r
 \r
     public class FXPTargetProcessor : FTPTargetProcessor {\r
+        private const string LITERAL_SPACE = "%20";\r
+        private const string SPACE = " ";\r
         private Logger logger = LogManager.GetCurrentClassLogger();\r
         private Source sourceConfig;\r
         Uri inputUri;\r
@@ -29,7 +31,7 @@ namespace Maestro.Targets {
             try {\r
                 sourceFTP = CreateClient(sourceConfig.Remote);\r
 \r
-                string input = inputUri.AbsolutePath.Replace("%20", " ");\r
+                string input = inputUri.AbsolutePath.Replace(LITERAL_SPACE, SPACE);\r
                 long ilength = sourceFTP.GetFileSize(input);\r
                 if (parameters.TargetConfig.NexioServer)\r
                     ilength = ilength / 2;\r
@@ -106,7 +108,7 @@ namespace Maestro.Targets {
                 TerminateClient(sourceFTP);\r
             }\r
 \r
-            logger.Debug("Done");\r
+            //logger.Debug("Done");\r
         }\r
 \r
     }\r
index f908c73b77fc59da366d51b7fcdcac4459455e97..6ee00b075746ec07c85217c847e4a9c4d4e5921c 100644 (file)
@@ -1,5 +1,4 @@
-using Maestro.Configuration;\r
-using NLog;\r
+using NLog;\r
 using System;\r
 using System.IO;\r
 using System.Windows.Forms;\r
@@ -11,6 +10,7 @@ using Commons;
 using Maestro.Metadata;\r
 using System.Globalization;\r
 using System.Text.RegularExpressions;\r
+using MaestroShared.Configuration;\r
 \r
 namespace Maestro.Targets {\r
 \r
@@ -27,8 +27,28 @@ namespace Maestro.Targets {
         private const string METADATA_FILE = "{0}.json";\r
         private const string DEFAULT_EXTENSION = ".MXF";\r
         private const string NORMALIZE_TEXT_PATTERN = "[^0-9A-Za-z-._]";\r
-        private const string NORMALIZE_TEXT_REPLACEMENT = "_";\r
-\r
+        protected const string UNDERSCORE = "_";\r
+        protected const string HYPHEN = "-";\r
+        private const string DATE_FORMAT = "yyyy.MM.dd";\r
+        private const string PROGRAMME = "PROGRAMME";\r
+        private const string COMMERCIAL = "COMMERCIAL";\r
+        private const string JUNCTION = "JUNCTION";\r
+        private const string XML_EXT = ".xml";\r
+        private const string PATTERN_TARGETNAME = "%TARGETNAME%";\r
+        protected const string PATTERN_TEXT = "%TEXT%";\r
+        protected const string SLASH = "/";\r
+        private const string INPROGRESS = "Folyamatban";\r
+        private const string ERROR = "Hiba";\r
+        private const string DOT = ".";\r
+        private const string HYPHENSTAR = "-*";\r
+        private const string DATE_FORMAT_NODOTS = "yyyyMMdd";\r
+        private const string READY = "Kész";\r
+        private const string HYPHEN_SPACES = " - ";\r
+        private const string PATTERN_ID = "%ID%";\r
+        private const string PATTERN_IDROOT = "%IDROOT%";\r
+        private const string PATTERN_SOURCENAME = "%SOURCENAME%";\r
+        private const string PATTERN_TIMESTAMP = "%TIMESTAMP%";\r
+        private const string DATETIME_FORMAT = "yyyyMMddhhmmss";\r
         protected FileInfo inputFile;\r
         protected string workingDir;\r
         protected TargetProcessorParameter parameters;\r
@@ -42,7 +62,12 @@ namespace Maestro.Targets {
             Input = Path.Combine(parameters.SourceConfig.Local.Address.LocalPath, parameters.InputFileName);\r
             inputFile = new FileInfo(Input);\r
             ID = parameters.ID;\r
-            workFlowAction = new WorkflowAction() { houseId = ID, tag = parameters.TargetConfig.Tag, touched = DateTime.Now };\r
+            workFlowAction = new WorkflowAction() {\r
+                houseId = ID,\r
+                tag = parameters.TargetConfig.Tag,\r
+                touched = DateTime.Now,\r
+                userName = TrayApplicationContext.UserName\r
+            };\r
             Label = parameters.TargetConfig.Label;\r
         }\r
 \r
@@ -64,7 +89,7 @@ namespace Maestro.Targets {
                 Output = Output.Replace(@"\", "/");\r
                 workFlowAction.source = Input;\r
                 workFlowAction.destination = Output;\r
-                Status = "Folyamatban";\r
+                Status = INPROGRESS;\r
                 //DateTime started = DateTime.Now;\r
                 string currentFile = GetOutputFilePath(workingDir, OutputName);\r
                 if (FileExists(currentFile) && parameters.TargetConfig.DisableFileVersioning)\r
@@ -74,7 +99,7 @@ namespace Maestro.Targets {
                 ExecuteCompleted();\r
             }\r
             catch (Exception e) {\r
-                Status = "Hiba";\r
+                Status = ERROR;\r
                 Message = e.Message;\r
                 workFlowAction.description = Message;\r
                 logger.Error(e);\r
@@ -96,8 +121,8 @@ namespace Maestro.Targets {
             if (String.IsNullOrEmpty(OutputName))\r
                 return null;\r
             string result = OutputName;\r
-            if (result.Contains("."))\r
-                result = result.Substring(0, result.LastIndexOf("."));\r
+            if (result.Contains(DOT))\r
+                result = result.Substring(0, result.LastIndexOf(DOT));\r
             return result;\r
         }\r
 \r
@@ -121,7 +146,7 @@ namespace Maestro.Targets {
 \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 = "Kész";\r
+            Status = READY;\r
             Message = SUCCESS;\r
         }\r
 \r
@@ -131,39 +156,39 @@ namespace Maestro.Targets {
             string description = parameters.ArchiveMetadata?.mediaTitle;\r
             if (parameters.TargetConfig.KillDateDays > 0) {\r
                 DateTime date = GetKillDate();\r
-                KillDate = date.ToString("yyyy.MM.dd");\r
+                KillDate = date.ToString(DATE_FORMAT);\r
                 xml = NexioXML.ToXML(name, date, description, parameters.TargetConfig.Agency);\r
             } else\r
                 xml = NexioXML.ToXML(name, null, description, parameters.TargetConfig.Agency);\r
             byte[] content = Encoding.Unicode.GetBytes(xml);\r
-            UploadContent(name + ".xml", content);\r
+            UploadContent(name + XML_EXT, content);\r
         }\r
 \r
         private void UploadMorpheusMetadata() {\r
             string name = GetOutputName();\r
             string title = parameters.ArchiveMetadata?.itemTitle;\r
             if (!title.Equals(parameters.ArchiveMetadata?.mediaTitle))\r
-                title += " - " + parameters.ArchiveMetadata?.mediaTitle;\r
+                title += HYPHEN_SPACES + parameters.ArchiveMetadata?.mediaTitle;\r
             string type = null;\r
             switch (parameters.MetadataKind) {\r
                 case MetadataType.TrafficMaterial:\r
-                    type = "PROGRAMME";\r
+                    type = PROGRAMME;\r
                     break;\r
                 case MetadataType.TrafficPromo:\r
-                    type = "COMMERCIAL";\r
+                    type = COMMERCIAL;\r
                     break;\r
                 case MetadataType.TrafficAD:\r
-                    type = "JUNCTION";\r
+                    type = JUNCTION;\r
                     break;\r
             }\r
             byte[] content = MorpheusXML.ToXML(title, name, parameters.TargetConfig.DeviceIDMorpheus, type, parameters.MovieSegments);\r
             EnsureDirectoryExistence(parameters.TargetConfig.PathMorpheusMetadata);\r
-            UploadContent(name + ".xml", content);\r
+            UploadContent(name + XML_EXT, content);\r
         }\r
 \r
         private void SendEmail(string to, string messagePattern) {\r
             try {\r
-                string message = messagePattern.Replace("%TARGETNAME%", OutputName);\r
+                string message = messagePattern.Replace(PATTERN_TARGETNAME, OutputName);\r
                 parameters.MediaCubeApi.Notify(to, message);\r
             }\r
             catch (Exception e) {\r
@@ -195,8 +220,8 @@ namespace Maestro.Targets {
             string result = null;\r
             if (!String.IsNullOrEmpty(parameters.TargetConfig.SubFolderFormat)) {\r
                 string name = GetDynamicName(parameters.TargetConfig.SubFolderFormat);\r
-                if (parameters.TargetConfig.SubFolderFormat.Contains("%TEXT%")) {\r
-                    string pattern = name.Split('-')[0] + "-*";\r
+                if (parameters.TargetConfig.SubFolderFormat.Contains(PATTERN_TEXT)) {\r
+                    string pattern = name.Split(HYPHEN[0])[0] + HYPHENSTAR;\r
                     string[] dirs = Directory.GetDirectories(connection.Address.LocalPath, pattern);\r
                     if (dirs.Length > 0)\r
                         name = dirs[0];\r
@@ -218,11 +243,11 @@ namespace Maestro.Targets {
             string statusWorkDir = Path.Combine(workingDir, STATUS_FOLDER);\r
             EnsureDirectoryExistence(statusWorkDir);\r
             DateTime date = GetKillDate();\r
-            string fileName = String.Format(KILLDATE_FILE, OutputName, date.ToString("yyyyMMdd"));\r
-            logger.Debug("Creating KILLDATE status file {0}", fileName);\r
+            string fileName = String.Format(KILLDATE_FILE, OutputName, date.ToString(DATE_FORMAT_NODOTS));\r
+            //logger.Debug("Creating KILLDATE status file {0}", fileName);\r
             KillDatePath = GetOutputFilePath(statusWorkDir, fileName);\r
             UploadContent(KillDatePath, new byte[] { });\r
-            KillDate = date.ToString("yyyy.MM.dd");\r
+            KillDate = date.ToString(DATE_FORMAT);\r
         }\r
 \r
         private void CreateArchiveMetadata() {\r
@@ -230,7 +255,7 @@ namespace Maestro.Targets {
             string statusWorkDir = Path.Combine(workingDir, STATUS_FOLDER);\r
             EnsureDirectoryExistence(statusWorkDir);\r
             string fileName = String.Format(METADATA_FILE, OutputName);\r
-            logger.Debug("Creating METADATA file {0}", fileName);\r
+            //logger.Debug("Creating METADATA file {0}", fileName);\r
             byte[] content = Encoding.UTF8.GetBytes(parameters.ArchiveMetadata.ToString());\r
             string ouputPath = GetOutputFilePath(statusWorkDir, fileName);\r
             UploadContent(ouputPath, content);\r
@@ -241,7 +266,7 @@ namespace Maestro.Targets {
             string statusWorkDir = Path.Combine(workingDir, STATUS_FOLDER);\r
             EnsureDirectoryExistence(statusWorkDir);\r
             string fileName = String.Format(METADATA_FILE, OutputName);\r
-            logger.Debug("Creating METADATA file {0}", fileName);\r
+            //logger.Debug("Creating METADATA file {0}", fileName);\r
             byte[] content = Encoding.UTF8.GetBytes(parameters.ArchiveMetadata.ToString());\r
             string ouputPath = GetOutputFilePath(statusWorkDir, fileName);\r
             UploadContent(ouputPath, content);\r
@@ -291,15 +316,15 @@ namespace Maestro.Targets {
         }\r
 \r
         protected string GetDynamicName(string text) {\r
-            string idRoot = ID.Contains(NORMALIZE_TEXT_REPLACEMENT) ? ID.Split(NORMALIZE_TEXT_REPLACEMENT[0])[0] : ID;\r
+            string idRoot = ID.Contains(UNDERSCORE) ? ID.Split(UNDERSCORE[0])[0] : ID;\r
             string result = text\r
-                .Replace("%ID%", ID)\r
-                .Replace("%IDROOT%", idRoot)\r
-                .Replace("%TEXT%", "-" + RemoveDiacritics(parameters.MetadataText))\r
-                .Replace("%SOURCENAME%", Path.GetFileNameWithoutExtension(InputName))\r
-                .Replace("%TIMESTAMP%", DateTime.Now.ToString("yyyyMMddhhmmss", CultureInfo.InvariantCulture));\r
+                .Replace(PATTERN_ID, ID)\r
+                .Replace(PATTERN_IDROOT, idRoot)\r
+                .Replace(PATTERN_TEXT, HYPHEN + RemoveDiacritics(parameters.MetadataText))\r
+                .Replace(PATTERN_SOURCENAME, Path.GetFileNameWithoutExtension(InputName))\r
+                .Replace(PATTERN_TIMESTAMP, DateTime.Now.ToString(DATETIME_FORMAT, CultureInfo.InvariantCulture));\r
             // replace hungarian and special characters\r
-            result = Regex.Replace(result, NORMALIZE_TEXT_PATTERN, NORMALIZE_TEXT_REPLACEMENT);\r
+            result = Regex.Replace(result, NORMALIZE_TEXT_PATTERN, UNDERSCORE);\r
             if (result.Length > 100)\r
                 result = result.Substring(0, 100);\r
             return result;\r
@@ -307,7 +332,7 @@ namespace Maestro.Targets {
 \r
         protected virtual string CreateOutputFileName() {\r
             string nameWithoutExtension = GetDynamicName(parameters.TargetConfig.OutputFormat);\r
-            string extension = InputName.Contains(".") ? InputName.Substring(InputName.LastIndexOf(".")) : DEFAULT_EXTENSION;\r
+            string extension = InputName.Contains(DOT) ? InputName.Substring(InputName.LastIndexOf(DOT)) : DEFAULT_EXTENSION;\r
             extension = extension.ToUpper();\r
             string result = String.Format(FILENAME, nameWithoutExtension, extension);\r
             if (!parameters.TargetConfig.DisableFileVersioning) {\r