public override void Execute(IBSharpContext context) { foreach (var cls in context.ResolveAll("attr:generate-json")) { var xml = RefineForJson(new XElement(cls.Compiled)); var opts = xml.Attr("generate-json").SmartSplit(); IDictionary <string, object> j = new Dictionary <string, object>(); if (opts.Contains("nooptions") && j.ContainsKey("options")) { IDictionary <string, object> _opts = j["options"].jsonifymap(); j.Remove("options"); foreach (var o in _opts.OrderBy(_ => _.Key)) { j[o.Key] = o.Value; } } WriteElements(xml, j, opts); WriteJson(cls, j, opts); } }
public override void Execute(IBSharpContext context) { foreach (var cls in context.ResolveAll("attr:generate-json")) { var xml = RefineForJson(new XElement(cls.Compiled)); var opts = xml.Attr("generate-json").SmartSplit(); IDictionary<string,object> j = new Dictionary<string, object>(); if (opts.Contains("nooptions") && j.ContainsKey("options")) { IDictionary<string, object> _opts = j["options"].jsonifymap(); j.Remove("options"); foreach(var o in _opts.OrderBy(_=>_.Key)) { j[o.Key] = o.Value; } } WriteElements(xml, j, opts); WriteJson(cls, j, opts); } }
public override void Execute(IBSharpContext context) { Project.Log.Info("Start xslt tasks"); var xslttasks = context.ResolveAll("xslttask"); foreach (var xslttask in xslttasks) { var task = new XsltTask(Project,xslttask.Compiled); Project.Log.Info("Start XSLT task "+xslttask.FullName); try { task.Execute(); Project.Log.Info("XSLT task " + xslttask.FullName+" finished"); } catch (Exception e) { Project.Context.RegisterError(new BSharpError { Class = xslttask, Error = e, Message = "Error in xslt task:\r\n"+e.ToString() }); Project.Log.Error("Error in xslt "+xslttask.FullName,e); } } }
public override void Execute(IBSharpContext context) { Project.Log.Info("Start xslt tasks"); var xslttasks = context.ResolveAll("xslttask"); foreach (var xslttask in xslttasks) { var task = new XsltTask(Project, xslttask.Compiled); Project.Log.Info("Start XSLT task " + xslttask.FullName); try { task.Execute(); Project.Log.Info("XSLT task " + xslttask.FullName + " finished"); } catch (Exception e) { Project.Context.RegisterError(new BSharpError { Class = xslttask, Error = e, Message = "Error in xslt task:\r\n" + e.ToString() }); Project.Log.Error("Error in xslt " + xslttask.FullName, e); } } }
private void SetupLayout(IBSharpContext context) { var layoutClasses = context.ResolveAll("ui-layout").ToArray(); foreach (var layoutClass in layoutClasses) { var layout = new AppLayout().Setup(layoutClass.Compiled, null, this); Layouts[layout.Code] = layout; } }
private void SetupStructs(IBSharpContext context) { var structClasses = context.ResolveAll("ui-data").ToArray(); foreach (var structClass in structClasses) { var structure = new AppStruct().Setup(this, structClass); Structs[structure.Code] = structure; } }
private void SetupActions(IBSharpContext context) { var actionClasses = context.ResolveAll("ui-action").ToArray(); foreach (var actionClass in actionClasses) { var action = new AppAction().Setup(this, actionClass); Actions[action.Code] = action; } }
private void SetupServices(IBSharpContext context) { var serviceClasses = context.ResolveAll("ui-service").ToArray(); foreach (var serviceClass in serviceClasses) { var service = new AppService().Setup(serviceClass.Compiled); Services[service.Code] = service; } }
private void SetupMenus(IBSharpContext context) { var menuClasses = context.ResolveAll("ui-menu").ToArray(); foreach (var menuClass in menuClasses) { var menu = new AppMenu().Setup(menuClass.Compiled); Menus[menu.Code] = menu; } }
/// <summary> /// Выполнение запроса /// </summary> /// <param name="query">Запрос</param> /// <param name="options">Параметры запроса</param> /// <returns>Результирующий <see cref="XElement"/></returns> public XElement ExecuteQuery(string query, DocumentStorageOptions options = null) { if (null == _bSharpContext) { return(null); } XElement result; string ns = null; if (options != null) { if (!string.IsNullOrWhiteSpace(options.Collection)) { ns = options.Collection; } } var selected = _bSharpContext.ResolveAll(query, ns).ToArray(); if (selected.Length == 0) { if (WrapAlways) { result = new XElement(WrapperName); result.SetAttributeValue(IsEmptyResultAttribute, true); } else { result = null; } } else if (selected.Length == 1) { if (WrapAlways) { result = new XElement(WrapperName); result.Add(selected[0].Compiled); } else { result = selected[0].Compiled; } } else { result = new XElement(WrapperName); result.SetAttributeValue(IsComplexResultAttribute, true); foreach (var bSharpClass in selected) { result.Add(bSharpClass.Compiled); } } return(result); }
private static XElement FindMatchedServerDefinition(IBSharpContext context, string logicalServerName) { var match = context.ResolveAll("dbserver") .Select(_ => IsMatchServer(_, logicalServerName)) .Where(_ => _.Item1) .OrderBy(_ => _.Item3) .FirstOrDefault(); if (null != match) { return(match.Item2); } return(XElement.Parse("<server code='*'><db ref='defaults'/></server>")); }
private static XElement GetConfig(ConfigurationOptions options, IBSharpContext context) { XElement config = null; if (!string.IsNullOrWhiteSpace(options.Name)) { var cls = context.Get(options.Name); if (null == cls) { cls = context.ResolveAll(options.Name).FirstOrDefault(); } if (null == cls) { throw new Exception("cannot find given config name " + options.Name); } config = cls.Compiled; } return(config); }
private void SetupControllers(IBSharpContext context) { var controllerClasses = context.ResolveAll("ui-controller").ToArray(); foreach (var controllerClass in controllerClasses) { var controller = new AppController().Setup(this, controllerClass); if (null != controller.MenuItems) { foreach (var m in controller.MenuItems) { var menu = Menus[m.Code]; if (null != menu) { controller.Menus.Add(menu); } } } Controllers[controller.Code] = controller; } }
/// <summary> /// Конфигурирует модель из B# /// </summary> /// <param name="context"></param> /// <returns></returns> public PersistentModel Setup(IBSharpContext context) { Context = context; IEnumerable <IBSharpClass> tables = Context.ResolveAll(TablePrototype + ";attr:" + TableAttribute).ToArray(); foreach (IBSharpClass table in tables) { var pclass = new PersistentClass(); pclass.Setup(table); pclass.Model = this; Classes[pclass.FullSqlName.ToLowerInvariant()] = pclass; } SetupDefaultScripts(); foreach (SqlObject obj in SqlObject.CreateDatabaseWide(this)) { DatabaseSqlObjects.Add(obj); } BuildModel(); ReadScripts(); return(this); }
private static IEnumerable <XElement> CollectReferencedDatabases(string theref, IBSharpContext context) { if (theref == "defaults") { foreach (var cls in context.ResolveAll("dbdef")) { if (cls.Compiled.Attr("isdefault").ToBool()) { yield return(cls.Compiled); } } } else { var db = context.Get(theref); if (null == db) { throw new Exception("cannot find db with cls name " + theref); } yield return(db.Compiled); } }
/// <summary> /// Трансформирует классы прототипа BIZINDEX в полноценные карты соотношения тем, блоков, подсистем /// </summary> /// <param name="context"></param> public override void Execute(IBSharpContext context) { _context = context; Project.Log.Info(GetType().Name+" called"); var targetclasses = string.IsNullOrWhiteSpace(ClassSearchCriteria)?new IBSharpClass[]{} : _context.ResolveAll(ClassSearchCriteria).ToArray(); var outdir = GetOutDir(); foreach (var production in InternalGenerate(targetclasses)){ var filename = production.FileName; if (!Path.IsPathRooted(filename)){ filename = Path.Combine(outdir, filename); production.FileName = filename; } if (production.CanBeSaved){ Project.Log.Info("Write " + filename); Directory.CreateDirectory(Path.GetDirectoryName(filename)); File.WriteAllText(filename, production.GetContent()); } else{ Project.Log.Info("Skip "+filename); } } }
/// <summary> /// Трансформирует классы прототипа BIZINDEX в полноценные карты соотношения тем, блоков, подсистем /// </summary> /// <param name="context"></param> public override void Execute(IBSharpContext context) { _context = context; Project.Log.Info(GetType().Name + " called"); var targetclasses = string.IsNullOrWhiteSpace(ClassSearchCriteria)?new IBSharpClass[] {} : _context.ResolveAll(ClassSearchCriteria).ToArray(); var outdir = GetOutDir(); foreach (var production in InternalGenerate(targetclasses)) { var filename = production.FileName; if (!Path.IsPathRooted(filename)) { filename = Path.Combine(outdir, filename); production.FileName = filename; } if (production.CanBeSaved) { Project.Log.Info("Write " + filename); Directory.CreateDirectory(Path.GetDirectoryName(filename)); File.WriteAllText(filename, production.GetContent()); } else { Project.Log.Info("Skip " + filename); } } }
/// <summary> /// Конфигурирует модель из B# /// </summary> /// <param name="context"></param> /// <returns></returns> public PersistentModel Setup(IBSharpContext context){ Context = context; IEnumerable<IBSharpClass> tables = Context.ResolveAll(TablePrototype+";attr:"+TableAttribute).ToArray(); foreach (IBSharpClass table in tables){ var pclass = new PersistentClass(); pclass.Setup(table); pclass.Model = this; Classes[pclass.FullSqlName.ToLowerInvariant()] = pclass; } SetupDefaultScripts(); foreach (SqlObject obj in SqlObject.CreateDatabaseWide(this)){ DatabaseSqlObjects.Add(obj); } BuildModel(); ReadScripts(); return this; }