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);
            }
        }
Exemple #3
0
 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);
         }
     }
 }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
0
        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;
            }
        }
Exemple #6
0
        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;
            }
        }
Exemple #7
0
        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;
            }
        }
Exemple #8
0
        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;
            }
        }
Exemple #9
0
        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);
        }
Exemple #13
0
        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;
            }
        }
Exemple #14
0
        /// <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;
		}