public IProcessController Compose(string cfg, LogLevel logLevel = LogLevel.Info, Dictionary <string, string> parameters = null, string placeHolderStyle = "@()") { var logger = new TraceLogger(logLevel); var container = ConfigurationContainer.Create(cfg, logger, parameters, placeHolderStyle); Process = parameters == null?container.Resolve <Process>(new NamedParameter("cfg", cfg)) : container.Resolve <Process>(new NamedParameter("cfg", cfg), new NamedParameter("parameters", parameters)); if (Process.Errors().Any()) { foreach (var error in Process.Errors()) { Trace.WriteLine(error); } throw new Exception("Configuration Error(s)"); } if (Process.Warnings().Any()) { foreach (var warning in Process.Warnings()) { Trace.WriteLine(warning); } } return(DefaultContainer.Create(Process, logger, placeHolderStyle).Resolve <IProcessController>(new NamedParameter("cfg", cfg))); }
public void A() { const string xml = @" <add name='TestProcess'> <parameters> <add name='humanized' value='camelCase' t='replace(lC,l-c).upper()' /> <add name='replaced' value='TestEnvironment' t='replace(Test,Production).trimEnd(s).append(s)' /> </parameters> <entities> </entities> </add>"; var logger = new TraceLogger(LogLevel.Debug); using (var outer = ConfigurationContainer.Create(xml, logger)) { var process = outer.Resolve <Process>(); using (var inner = DefaultContainer.Create(process, logger, "@()")) { inner.Resolve <IProcessController>().Execute(); var parmeters = process.GetActiveParameters(); Assert.AreEqual("CAMEL-CASE", parmeters.First().Value); Assert.AreEqual("ProductionEnvironments", parmeters.Skip(1).First().Value); } } }
public void Condense() { const string xml = @" <add name='TestProcess'> <entities> <add name='TestData' pipeline='linq'> <rows> <add Field1='Some duplicates spa ces' /> <add Field1='O n e S p a c ee' /> </rows> <fields> <add name='Field1' /> </fields> <calculated-fields> <add name='CondenseField1' t='copy(Field1).condense()' /> <add name='DuplicateE' t='copy(Field1).condense(e)' /> </calculated-fields> </add> </entities> </add>"; var logger = new TraceLogger(LogLevel.Debug); using (var outer = ConfigurationContainer.Create(xml, logger)) { var process = outer.Resolve <Process>(); using (var inner = DefaultContainer.Create(process, logger, "@()")) { var results = inner.Resolve <IProcessController>().Read().ToArray(); var condensed = process.Entities.First().CalculatedFields.First(); var duplicate = process.Entities.First().CalculatedFields.Last(); Assert.AreEqual("Some duplicates spa ces", results[0][condensed]); Assert.AreEqual("O n e S p a c ee", results[1][condensed]); Assert.AreEqual("O n e S p a c e", results[1][duplicate]); } } }