Ejemplo n.º 1
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider paramProvider)
        {
            // ZipFile довольно глупый и если будет создавать в архив в тойже директории которую архивирует, он свалится.
            // Поэтому сперва моздаем временный файл
            var tempFile = System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetRandomFileName());
            var fromPath = paramProvider.Parse(_from).First();

            ZipFile.CreateFromDirectory(fromPath, tempFile);

            if (_deleteAfterArchive)
            {
                var directory = System.IO.Path.GetDirectoryName(fromPath);
                var wildcard  = System.IO.Path.GetFileName(fromPath);
                foreach (var fn in Directory.GetFiles(directory, wildcard, SearchOption.TopDirectoryOnly))
                {
                    System.IO.File.Delete(fn);
                }
            }
            var destination = paramProvider.Parse(_to).First();

            if (File.Exists(destination))
            {
                File.Delete(destination);
            }
            File.Move(tempFile, paramProvider.Parse(_to).First());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            if (!string.IsNullOrEmpty(_value))
            {
                parameters.AddParameter(_key, parameters.Parse(_value).First());
            }
            if (!string.IsNullOrEmpty(_filePath))
            {
                var filePath = parameters.Parse(_filePath).First();

                if (File.Exists(filePath))
                {
                    if (_takeLines == 0)
                    {
                        _value = string.Join("\n", File.ReadAllLines(filePath).Skip(_skipLines));
                    }
                    else
                    {
                        _value = string.Join("\n", File.ReadAllLines(filePath).Skip(_skipLines).Take(_takeLines));
                    }

                    parameters.AddParameter(_key, _value);
                }
                else
                {
                    Application.Log(LogLevel.Error, string.Format("File {0} not found.", filePath));
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider paramProvider)
        {
            //TODO: Проверки.
            var from = paramProvider.Parse(_from).First();
            var to   = paramProvider.Parse(_to).First();

            ZipFile.ExtractToDirectory(from, to);
            if (_deleteAfterExtract)
            {
                File.Delete(from);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            var types = new TypeRegistry();

            types.RegisterDefaultTypes();
            types.RegisterType("CultureInfo", typeof(CultureInfo));
            types.RegisterSymbol("fromDate", parameters._fromDate);
            types.RegisterSymbol("toDate", parameters._toDate);
            var expression = new CompiledExpression(parameters.Parse(_expression).First());

            expression.TypeRegistry = types;
            parameters.AddParameter(parameters.Parse(_outputParam).First(), expression.Eval().ToString());
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            using (SmtpClient SmtpServer = new SmtpClient(parameters.Parse(_server).First(), int.Parse(parameters.Parse(_port).First())))
            {
                using (MailMessage mail = new MailMessage())
                {
                    mail.From = new MailAddress(parameters.Parse(_from).First());
                    foreach (var mailAddress in parameters.Parse(_to).First().Split(';'))
                    {
                        if (!string.IsNullOrWhiteSpace(mailAddress))
                        {
                            mail.To.Add(mailAddress);
                        }
                    }

                    if (_cc != null)
                    {
                        var cc = parameters.Parse(_cc).First();
                        if (!string.IsNullOrWhiteSpace(cc))
                        {
                            foreach (var mailAddress in cc.Split(';'))
                            {
                                if (!string.IsNullOrWhiteSpace(mailAddress))
                                {
                                    mail.CC.Add(mailAddress);
                                }
                            }
                        }
                    }

                    mail.Subject    = parameters.Parse(_subject).First();
                    mail.Body       = parameters.Parse(_body).First();
                    mail.IsBodyHtml = true;

                    // Добавление вложений
                    if (!string.IsNullOrEmpty(_attachment))
                    {
                        System.Net.Mail.Attachment attachment;
                        attachment = new System.Net.Mail.Attachment(parameters.Parse(_attachment).First());
                        mail.Attachments.Add(attachment);
                    }

                    SmtpServer.EnableSsl             = Boolean.Parse(parameters.Parse(_useSSL).First());
                    SmtpServer.UseDefaultCredentials = false;
                    SmtpServer.DeliveryMethod        = SmtpDeliveryMethod.Network;
                    if (_server.ToLower(CultureInfo.InvariantCulture).Contains("gmail.com"))
                    {
                        SmtpServer.TargetName = "STARTTLS/smtp.gmail.com";
                    }
                    SmtpServer.Credentials = new System.Net.NetworkCredential(parameters.Parse(_user).First(), parameters.Parse(_password).First());

                    SmtpServer.Send(mail);
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            var enc = String.IsNullOrEmpty(_fileEncoding) ? System.Text.Encoding.UTF8 : System.Text.Encoding.GetEncoding(_fileEncoding);

            _filePath = parameters.Parse(_filePath).First();
            File.WriteAllText(_filePath, parameters.GetParameters()[_key], enc);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            ProcessStartInfo startInfo = new ProcessStartInfo();

            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.FileName    = "cmd.exe";
            startInfo.Arguments   = "/c " + parameters.Parse(_arguments).First() + " exit ";
            Process.Start(startInfo).WaitForExit();
            Application.Log(LogLevel.Informational, "{0} {1}", startInfo.FileName, startInfo.Arguments);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Создание задачи из XML-определения
        /// </summary>
        /// <param name="declaration">XML-определение</param>
        /// <returns></returns>
        public void Run(ParameterProvider paramProvider)
        {
            var    param       = CreateLogParserParams(paramProvider.GetParameters());
            var    queryFile   = paramProvider.Parse(_queryFile).First();
            string headerParam = null;

            if ("TSV".Equals(_inputFormat, StringComparison.InvariantCultureIgnoreCase))
            {
                headerParam = string.Format("-headerRow:{0}", _headerRow ? "on" : "off");
            }
            var args = String.Format("-i:{3} file:{0}?{1} {2} -o:\"{4}\" {5}", queryFile, param, headerParam, _inputFormat, _outputFormat, _otherParams);

            Application.Log(LogLevel.Informational, args);
            var cmd = new ProcessStartInfo(@"Binaries\LogParser\LogParser.exe", args);

            cmd.UseShellExecute = false;
            Process.Start(cmd).WaitForExit();
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            _filter = parameters.Parse(_filter).First();
            Application.Log(LogLevel.Informational, "Обработка удаления: {0}", _filter);
            var directory = Path.GetDirectoryName(_filter);
            var wildcard  = Path.GetFileName(_filter);

            if (string.IsNullOrEmpty(wildcard))
            {
                wildcard = "*.*";
            }
            foreach (var fn in Directory.GetFiles(directory, wildcard, SearchOption.TopDirectoryOnly))
            {
                Application.Log(LogLevel.Informational, "Удаление файла {0}", fn);
                File.Delete(fn);
            }
            if (string.IsNullOrEmpty(Path.GetFileName(_filter)))
            {
                Application.Log(LogLevel.Informational, "Удаление папки {0}", directory);
                Directory.Delete(directory);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            var types = new TypeRegistry();

            types.RegisterDefaultTypes();
            types.RegisterType("CultureInfo", typeof(CultureInfo));
            types.RegisterSymbol("fromDate", parameters._fromDate);
            types.RegisterSymbol("toDate", parameters._toDate);

            var expression = new CompiledExpression(parameters.Parse(_expression).First());

            expression.TypeRegistry = types;

            if ((bool)expression.Eval())
            {
                foreach (var task in _tasks)
                {
                    Application.Log(LogLevel.Debug, "  Выполнение задачи '{0}'", task.GetType().Name);
                    task.Run(parameters);
                    Application.Log(LogLevel.Debug, "  выполнено");
                }
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            // TODO: Итерировать источник вместе
            var destination = parameters.Parse(_destination).First();

            var files = new List <string>();

            foreach (var _path in parameters.Parse(_source))
            {
                if (File.Exists(_path))
                {
                    files.Add(_path);
                }
                else if
                (Directory.Exists(_path))
                {
                    files.AddRange(Directory.GetFiles(_path));
                }
                else
                {
                    var dir      = Path.GetDirectoryName(_path);
                    var dirMask  = "";
                    var fileMask = Path.GetFileName(_path);

                    Application.Log(LogLevel.Debug, "dir: {0} dirMask: {1} fileMask:{2}", dir, dirMask, fileMask);

                    if (dir.Contains('*') || dir.Contains('?'))
                    {
                        dir     = Path.GetPathRoot(_path);
                        dirMask = _path.Replace(dir + '\\', "");
                        dirMask = dirMask.Replace(fileMask, "");

                        if (dirMask.EndsWith("\\"))
                        {
                            dirMask = dirMask.Substring(0, dirMask.Length - 1);
                        }
                        if (dirMask.EndsWith("//"))
                        {
                            dirMask = dirMask.Substring(0, dirMask.Length - 1);
                        }
                    }

                    if (string.IsNullOrEmpty(dirMask))
                    {
                        files.AddRange(Directory.GetFiles(dir, fileMask, _withSubFolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly));
                    }
                    else
                    {
                        foreach (var directory in Directory.GetDirectories(dir, dirMask))
                        {
                            files.AddRange(Directory.GetFiles(directory, fileMask, _withSubFolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly));
                        }
                    }
                }
            }

            //Если указана папка, то копируем пофайлово
            if (string.IsNullOrEmpty(Path.GetExtension(destination)))
            {
                if (!Directory.Exists(destination))
                {
                    Directory.CreateDirectory(destination);
                }

                foreach (var file in files)
                {
                    Application.Log(LogLevel.Debug, "Копирование файла: {0}", file);
                    File.Copy(file, Path.Combine(destination, Path.GetFileName(file)), true);
                }
            }
            else
            {
                Application.Log(LogLevel.Debug, "GetDirectoryName: {0}", Path.GetDirectoryName(destination));

                if (!Directory.Exists(Path.GetDirectoryName(destination)))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(destination));
                }

                using (var destStream = File.Create(destination))
                {
                    foreach (var file in files)
                    {
                        Application.Log(LogLevel.Debug, "Копирование файла: {0}", file);
                        // TODO: Указать размер буфера
                        using (var sourceStream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) sourceStream.CopyTo(destStream);
                    }
                }
            }
        }
Ejemplo n.º 12
0
 /// <summary>
 /// Выполнение задачи
 /// </summary>
 /// <param name="parameters">Провайдер параметров</param>
 public void Run(ParameterProvider parameters)
 {
     Application.Log(LogLevel.Informational, parameters.Parse(_value).First());
 }
Ejemplo n.º 13
0
        /// <summary>
        /// Выполнение задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            var report     = new List <ReportItem>();
            var reportPath = parameters.Parse(_topPath).First();

            //Прекратить обработку, если файл не найден
            if (!File.Exists(reportPath))
            {
                return;
            }

            var enc = String.IsNullOrEmpty(_encoding) ? System.Text.Encoding.UTF8 : System.Text.Encoding.GetEncoding(_encoding);

            using (var reader = new StreamReader(reportPath, enc))
            {
                string line = null;
                while ((line = reader.ReadLine()) != null)
                {
                    var d    = line.Split('\t');
                    var hits = 0;
                    if (d.Length > 1 && !string.IsNullOrEmpty(d[0]) && int.TryParse(d[1], out hits))
                    {
                        report.Add(new ReportItem {
                            Message = d[0], Hits = hits
                        });
                    }
                }
            }

            // Настройка параметров сравнения. Определить эмпирически
            List <FuzzyStringComparisonOptions> options = new List <FuzzyStringComparisonOptions>();

            options.Add(FuzzyStringComparisonOptions.UseHammingDistance);
            options.Add(FuzzyStringComparisonOptions.UseJaccardDistance);
            options.Add(FuzzyStringComparisonOptions.UseLongestCommonSubsequence);
            options.Add(FuzzyStringComparisonOptions.UseLongestCommonSubstring);
            options.Add(FuzzyStringComparisonOptions.UseOverlapCoefficient);
            options.Add(FuzzyStringComparisonOptions.UseRatcliffObershelpSimilarity);
            options.Add(FuzzyStringComparisonOptions.UseSorensenDiceDistance);
            options.Add(FuzzyStringComparisonOptions.UseTanimotoCoefficient);
            options.Add(FuzzyStringComparisonOptions.CaseSensitive);

            // Агрегация списка
            for (var i = 0; i < report.Count; i++)
            {
                var currentItem = report[i];
                var j           = i + 1;
                while (j < report.Count)
                {
                    var lookupItem = report[j];
                    // Вероятностное сравнение
                    if (currentItem.Message.ApproximatelyEquals(lookupItem.Message, options, FuzzyStringComparisonTolerance.Normal))
                    {
                        currentItem.Hits = currentItem.Hits + lookupItem.Hits;
                        report.RemoveAt(j);
                    }
                    else
                    {
                        j = j + 1;
                    }
                }
            }

            // Запись итогового списка //TODO:ТОП и путь в параметры)
            File.WriteAllLines(reportPath, report.OrderByDescending(x => x.Hits).Take(20).Select(x => string.Format("{0}\t{1}", x.Message, x.Hits)));
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Запуск задачи
        /// </summary>
        /// <param name="parameters">Провайдер параметров</param>
        public void Run(ParameterProvider parameters)
        {
            System.Threading.Thread.Sleep(5000);
            FormatCompiler compiler = new FormatCompiler();

            if (string.IsNullOrWhiteSpace(_template) && !string.IsNullOrWhiteSpace(_templateFile))
            {
                _template = File.ReadAllText(parameters.Parse(_templateFile).First());
            }

            //Компилция шаблона
            Generator generator = compiler.Compile(_template);

            //В шаблоне можно использовать все параметры, заданные в конфигурации.
            var _templateParams = new Dictionary <string, object>();

            foreach (var param in parameters.GetParameters())
            {
                _templateParams.Add(param.Key, param.Value);
            }


            foreach (var param in _paramsDescription)
            {
                object value    = null;
                var    filePath = parameters.Parse(param.FilePath).First();
                var    enc      = String.IsNullOrEmpty(param.Encoding) ? System.Text.Encoding.UTF8 : System.Text.Encoding.GetEncoding(param.Encoding);

                if (File.Exists(filePath))
                {
                    switch (param.Mode)
                    {
                    case "text":
                        if (param.HasHeaders)
                        {
                            value = string.Join("\n", File.ReadAllLines(filePath).Skip(1));
                        }
                        else
                        {
                            value = File.ReadAllText(filePath, enc);
                        }
                        break;

                    case "csv":
                        value = File.ReadAllLines(filePath, enc).Skip(param.HasHeaders ? 1 : 0).Select(x => x.Split(';')).ToList();
                        break;

                    case "tsv":
                        value = File.ReadAllLines(filePath, enc).Skip(param.HasHeaders ? 1 : 0).Select(x => x.Split('\t')).ToList();
                        break;

                    default:
                        value = File.ReadAllText(filePath, enc);
                        break;
                    }
                }



                _templateParams.Add(param.Name, value);
            }

            parameters.AddParameter(_outputParam, generator.Render(_templateParams));
        }