public WikiBuilderTask[] Build(string taskcode, IConsoleLogHost logger) { var files = myapp.files.ResolveAll("wiki", "*.buildtask", true, null); logger.loginfo(files.Count()+" files for builder found"); IList<WikiBuilderTask> tasks = new List<WikiBuilderTask>(); foreach (var file in files) { logger.loginfo("file " +file +" start to load"); var e =new BxlParser().Parse(File.ReadAllText(file),file); foreach (var te in e.XPathSelectElements("//task")) { var task = WikiBuilderTask.ReadFromXml(te); tasks.Add(task); logger.loginfo("task with code "+task.Code+" added"); } } var filter = taskcode.split(); WikiBuilderTask[] result = null; if (0 == filter.Count) { result = tasks.ToArray(); }else { result = tasks.Where(x => filter.Contains(x.Id)).ToArray(); } var respository = myapp.ioc.get<IWikiRepository>() ?? new WikiRepository(); foreach (var task in result) { logger.loginfo("task " +task +" started"); var executor = task.CustomExecutor ?? getDefaultExecutor(task); executor.Execute(respository, task, logger); logger.loginfo("task " + task + " finished"); } return result; }
public void Contextualize(TestProvider provider, IConsoleLogHost logger) { this.provider = provider; this.logger = logger; this.cfg = new BxlParser().Parse(provider.Config); this.connection = cfg.elementId("connection","Default"); this.schema = cfg.elementId("schema", "masaudit"); this.db = cfg.elementId("db", (string)null); logger.loginfo("get test procedures from "+connection+"/"+db+"/"+schema); var t = myapp.sql.ExecuteTable( "select name from sys.objects where type='P' and schema_id = schema_id('" + schema + "')", null, db, connection); IList<DatabaseSetTest> procedures = new List<DatabaseSetTest>(); foreach (var r in t.Rows) { logger.logtrace(r.Values[0] as string); procedures.Add(new DatabaseSetTest(this,r.Values[0] as string)); } this.tests = procedures.ToArray(); }