示例#1
0
        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]);
                }
            }
        }