private bool MissingFieldHelper(Process process, PipelineConfigurationPart part, string format, IDictionary <string, string> parameters) { if (process.Entities.Any(e => !e.Fields.Any(f => f.Input))) { var schemaHelper = _orchardServices.WorkContext.Resolve <ISchemaHelper>(); if (schemaHelper.Help(process)) { // remove this stuff before serialization // todo: get clean, unmodified, and unvalidated configuration to to add fields to and serialize // because below won't work in all cases (i.e. producer transforms...) foreach (var entity in process.Entities) { entity.Fields.RemoveAll(f => f.System); } foreach (var field in process.GetAllFields().Where(f => !string.IsNullOrEmpty(f.T))) { field.T = string.Empty; } if (part.EditorMode == format) { process.Load(process.Serialize(), parameters); } else { var cfg = process.Serialize(); process = _processService.Resolve(format, format); process.Load(cfg); } return(true); } } return(false); }
private void ConvertToExport(Process process, PipelineConfigurationPart part, IDictionary <string, string> parameters) { var fileName = _slugService.Slugify(part.Title()) + ".csv"; var o = process.Output(); o.Provider = "file"; o.Delimiter = ","; o.File = fileName; parameters["page"] = "0"; foreach (var entity in process.Entities) { entity.Page = 0; foreach (var field in entity.GetAllFields()) { field.T = ""; if (field.Output && field.Raw && field.Transforms.Any()) { var lastTransform = field.Transforms.Last(); if (lastTransform.Method.In("tag", "razor")) { var firstParameter = lastTransform.Parameters.First(); field.Transforms.Remove(lastTransform); field.T = "copy(" + firstParameter.Field + ")"; } } } } }
private static void RemoveCredentials(Process process) { foreach (var connection in process.Connections) { connection.ConnectionString = string.Empty; connection.User = string.Empty; connection.Password = string.Empty; } }
private static ContentResult Get503(string action, Process process, string format, long time) { process.Request = action; process.Status = 503; process.Message = string.Join("\n", process.Errors()); process.Time = time; return(new ContentResult { Content = process.Serialize(), ContentType = "text/" + format }); }
public ProcessControlModule(Process process) { _process = process; }
public ActionResult Report(int id) { var timer = new Stopwatch(); timer.Start(); var process = new Process { Name = "Report" }.WithDefaults(); var part = _orchardServices.ContentManager.Get(id).As <PipelineConfigurationPart>(); if (part == null) { process.Name = "Not Found"; } else { if (_orchardServices.Authorizer.Authorize(Permissions.ViewContent, part)) { process = _processService.Resolve(part.EditorMode, part.EditorMode); var parameters = Common.GetParameters(Request, _secureFileService, _orchardServices); if (part.NeedsInputFile && Convert.ToInt32(parameters[Common.InputFileIdName]) == 0) { _orchardServices.Notifier.Add(NotifyType.Error, T("This transformalize expects a file.")); process.Name = "File Not Found"; } process.Load(part.Configuration, parameters); var provider = process.Output().Provider; if (provider.In("internal", "file")) { // change process for export purposes var output = Request["output"] ?? "page"; if (part.Reportable && output != "page") { ConvertToExport(process, part, parameters); process.Load(process.Serialize(), parameters); Response.AddHeader("content-disposition", "attachment; filename=" + process.Output().File); Response.ContentType = "application/csv"; } if (Request["sort"] != null) { _sortService.AddSortToEntity(process.Entities.First(), Request["sort"]); } if (process.Errors().Any()) { foreach (var error in process.Errors()) { _orchardServices.Notifier.Add(NotifyType.Error, T(error)); } } else { if (process.Entities.Any(e => !e.Fields.Any(f => f.Input))) { _orchardServices.WorkContext.Resolve <ISchemaHelper>().Help(process); } if (!process.Errors().Any()) { Common.PageHelper(process, parameters); var runner = _orchardServices.WorkContext.Resolve <IRunTimeExecute>(); try { runner.Execute(process); process.Status = 200; process.Message = "Ok"; process.Request = "Run"; process.Time = timer.ElapsedMilliseconds; if (process.Output().Provider == "file") { Response.Flush(); Response.End(); } } catch (Exception ex) { Logger.Error(ex, ex.Message); _orchardServices.Notifier.Error(T(ex.Message)); } } } } } else { _orchardServices.Notifier.Warning(T("Output must be set to internal for reporting.")); } } return(View(new ReportViewModel(process, part))); }
public void Execute(Process process) { process.Mode = _mode; // Since we're in a Console app, and honor output format if (process.Output().Provider.In("internal", "console")) { process.Output().Provider = "console"; process.Output().Format = _format; } var logger = new NLogPipelineLogger(SlugifyTransform.Slugify(_cfg)); if (!string.IsNullOrEmpty(process.MaxMemory)) { var context = new PipelineContext(logger, process); var timer = new Stopwatch(); timer.Start(); GC.Collect(); GC.WaitForPendingFinalizers(); timer.Stop(); context.Info($"Collected free memory. Time taken: {timer.Elapsed}."); var currentBytes = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64.Bytes(); var maxMemory = ByteSize.Parse(process.MaxMemory); if (maxMemory.CompareTo(currentBytes) < 0) { context.Error($"Process exceeded {maxMemory.Megabytes.ToString("#.0")} Mb. Current memory is {currentBytes.Megabytes.ToString("#.0")} Mb!"); Environment.Exit(1); } else { context.Info($"The process is using {currentBytes.Megabytes.ToString("#.0")} Mb of it's max {maxMemory.Megabytes.ToString("#.0")} Mb allowed."); } } var builder = new ContainerBuilder(); builder.RegisterInstance(logger).As <IPipelineLogger>().SingleInstance(); builder.RegisterCallback(new RootModule(process.Shorthand).Configure); builder.RegisterCallback(new ContextModule(process).Configure); // providers builder.RegisterCallback(new AdoModule(process).Configure); builder.RegisterCallback(new LuceneModule(process).Configure); builder.RegisterCallback(new SolrModule(process).Configure); builder.RegisterCallback(new ElasticModule(process).Configure); builder.RegisterCallback(new InternalModule(process).Configure); builder.RegisterCallback(new FileModule(process).Configure); builder.RegisterCallback(new FolderModule(process).Configure); builder.RegisterCallback(new DirectoryModule(process).Configure); builder.RegisterCallback(new ExcelModule(process).Configure); builder.RegisterCallback(new WebModule(process).Configure); builder.RegisterCallback(new MapModule(process).Configure); builder.RegisterCallback(new TemplateModule(process).Configure); builder.RegisterCallback(new ActionModule(process).Configure); builder.RegisterCallback(new EntityPipelineModule(process).Configure); builder.RegisterCallback(new ProcessPipelineModule(process).Configure); builder.RegisterCallback(new ProcessControlModule(process).Configure); using (var scope = builder.Build().BeginLifetimeScope()) { try { scope.Resolve <IProcessController>().Execute(); } catch (Exception ex) { scope.Resolve <IContext>().Error(ex.Message); } } }