コード例 #1
0
ファイル: WikiBuilder.cs プロジェクト: Qorpent/comdiv.oldcore
		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;
		}
コード例 #2
0
		public void Execute(IWikiRepository repository, WikiBuilderTask task, IConsoleLogHost logger) {
			this.brail = new BooViewEngine();
			brail.Options = new MonoRailViewEngineOptions();
			brail.Options.BaseType = "Castle.MonoRail.Views.Brail.WikiBrailBase";
			this.render = new WikiRender();
			var srcpages = new List<WikiPage>();
			foreach (var src in task.Sources)
			{
				foreach (var p in repository.Search(src))
				{
					srcpages.Add(p);
				}

			}
			foreach (var target in task.Targets) {
				var outfile = myapp.files.Resolve(target,false);
				
				var parameters = new Dictionary<string, object>()
				                 	{
				                 		{"task", task},
				                 		{"logger", logger},
				                 		{"repository", repository},
				                 		{"render", render},
				                 		{"pages", srcpages.ToArray()},
				                 	};
				var sw = new StringWriter();
				 brail.Process(task.View,task.Layout,sw, parameters);
				File.WriteAllText(outfile,sw.ToString());

			}
		}
コード例 #3
0
 public virtual IDictionary<IAuditTest,TestResult[]> Execute(string testpattern, string resultpattern, int level, IConsoleLogHost logger)
 {
     var realprovider = Class.toType(new Dictionary<string,Type>
                                         {
                                             {"dbset",typeof(DatabaseSetTestProvider)}
                                         }).create<IMasAuditTestProvider>();
     realprovider.Contextualize(this,logger);
     var tests = realprovider.Search(testpattern);
     var result = new Dictionary<IAuditTest, TestResult[]>();
     foreach (var auditTest in tests)
     {
         result[auditTest] = auditTest.Execute(resultpattern, level).OfType<TestResult>().ToArray();
     }
     return result;
 }
コード例 #4
0
        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();
        }
コード例 #5
0
 protected FileSystemCommand() {
     this.Args = new Dictionary<string, string>();
     this.log = ConsoleLogHost.Current ?? new LogHostBase();
     this.Filesystem = myapp.files;
 }