Example #1
0
 private void StartIoDevices()
 {
     foreach (var ioDevice in _context.Get <io_devices>().ToArray())
     {
         var ioDeviceRunTarget = _ioDeviceRunTargetFactory.Create(_timeService, ioDevice);
         _ioDeviceRunTargets.Add(ioDevice.id, ioDeviceRunTarget);
         var runner = _cyclicRunnerFactory.Create(ioDeviceRunTarget);
         _ioDeviceRunners.Add(new Tuple <IRunner, string, IIoDeviceRunTarget>(runner, ioDevice.name, ioDeviceRunTarget));
         runner.Start();
         _reporter.Report(string.Format(Res.IoDeviceStartedMessage, ioDevice.name));
     }
 }
Example #2
0
        private void InsertContextUsers(NpgsqlConnection connection)
        {
            var users = _context.Get <PHmiModel.Entities.User>().ToList();

            if (!users.Any())
            {
                return;
            }
            int minId        = -users.Select(u => u.Id).Max();
            int maxId        = -users.Select(u => u.Id).Min();
            var repoUsersIds = _repository.GetIds(connection, minId, maxId);

            foreach (PHmiModel.Entities.User user in repoUsersIds
                     .Select(t => users.FirstOrDefault(u => u.Id == -t.Item1 || u.Name == t.Item2))
                     .Where(user => user != null))
            {
                users.Remove(user);
            }
            if (!users.Any())
            {
                return;
            }
            var usersToInsert = users.Select(u => new User {
                Id          = -u.Id,
                Name        = u.Name,
                Description = u.Description,
                Photo       = u.Photo,
                Enabled     = u.Enabled,
                CanChange   = u.CanChange,
                Privilege   = u.Privilege
            }).ToArray();
            var usersPasswordsToInsert = users.Select(u => u.Password).ToArray();

            _repository.Insert(connection, usersToInsert, usersPasswordsToInsert);
        }
        public static IDivision GetParentDivision(this IDivision division, IModelContext modelContext)
        {
            if (division.ParentDivisionID != null)
            {
                return(modelContext.Get <DivisionInfo> (division.ParentDivisionID.Value));
            }

            return(null);
        }
        public static IDivision GetParentDivision(this IDivision division, IModelContext modelContext)
        {
            Contract.Ensures(Contract.Result <IDivision> () != null);
            if (division.ParentDivisionID != null)
            {
                return(modelContext.Get <DivisionInfo, int> (division.ParentDivisionID.Value));
            }

            return(null);
        }
Example #5
0
        /// <summary>
        /// Инициализирует экземпляр класса <see cref="ApplicationBus"/>, используя
        /// в качестве родительского контекста <paramref name="parentModelContext"/>.
        /// </summary>
        /// <param name="parentModelContext"></param>
        public ApplicationBus(
            IModelContext parentModelContext, 
            IEnumerable<IApplicationBusMessageHandler> handlers)
        {
            if (parentModelContext == null)
            {
                throw new ArgumentNullException("parentModelContext");
            }

            _context = parentModelContext.CreateChildContext(
                ContextHierarchy.ApplicationBus, 
                x => x.RegisterInstance(this).As<IApplicationBus>().AsSelf());

            _validationContext = _context.Get<IValidationContext>();

            foreach (var handler in handlers)
            {
                RegisterHandler(handler);
            }
        }
Example #6
0
        private void Build(IModelContext context, ICodeWriter w, IResourceBuilder resBuilder)
        {
            w.Write("//------------------------------------------------------------------------------");
            w.Write("// <auto-generated>");
            w.Write("//     This code was generated by a tool.");
            w.Write("//");
            w.Write("//     Changes to this file may cause incorrect behavior and will be lost if");
            w.Write("//     the code is regenerated.");
            w.Write("// </auto-generated>");
            w.Write("//------------------------------------------------------------------------------");
            w.Write();
            var resourcesName          = Path.GetFileNameWithoutExtension(Path.GetFileName(ResFile));
            Func <string, string>  res = s => string.Format("{0}.{1}", resourcesName, resBuilder.Add(s));
            Func <double?, string> num = d => d.HasValue ? d.Value.ToString(CultureInfo.InvariantCulture) : "null";

            using (w.Block("namespace {0}", NameSpace))
            {
                var ioDevices = context.Get <IoDevice>().OrderBy(d => d.Name).ToArray();

                #region IoDevices

                foreach (var ioDevice in ioDevices)
                {
                    using (w.Block("public sealed partial class {0} : PHmiClient.Tags.IoDeviceBase", ioDevice.Name))
                    {
                        var digitalTags = ioDevice.DigTags.OrderBy(t => t.Name).ToArray();
                        var numericTags = ioDevice.NumTags.OrderBy(t => t.Name).ToArray();
                        using (w.Block("public {0}() : base({1}, \"{0}\")", ioDevice.Name, ioDevice.Id))
                        {
                            foreach (var t in digitalTags)
                            {
                                w.Write("{0} = AddDigitalTag({1}, \"{0}\", () => {2});",
                                        t.Name, t.Id, res(t.Description));
                            }
                            foreach (var t in numericTags)
                            {
                                w.Write("{0} = AddNumericTag({1}, \"{0}\", () => {2}, () => {3}, () => {4}, {5}, {6});",
                                        t.Name, t.Id, res(t.Description), res(t.Format),
                                        res(t.EngUnit), num(t.EngMinDb), num(t.EngMaxDb));
                            }
                        }
                        foreach (var t in digitalTags)
                        {
                            w.Write();
                            w.Write("public PHmiClient.Tags.IDigitalTag {0} {{ get; private set; }}", t.Name);
                        }
                        foreach (var t in numericTags)
                        {
                            w.Write();
                            w.Write("public PHmiClient.Tags.INumericTag {0} {{ get; private set; }}", t.Name);
                        }
                    }
                    w.Write();
                }

                #endregion

                var alarmCategories = context.Get <AlarmCategory>().OrderBy(c => c.Name).ToArray();

                #region AlarmCategories

                foreach (var category in alarmCategories)
                {
                    using (w.Block("public sealed partial class {0} : PHmiClient.Alarms.AlarmCategoryBase", category.Name))
                    {
                        using (w.Block("public {0}() : base({1}, \"{0}\", () => {2})", category.Name, category.Id, res(category.Description)))
                        {
                            foreach (var alarmTag in category.AlarmTags.ToArray())
                            {
                                w.Write("AddAlarmInfo({0}, () => {1}, () => {2});", alarmTag.Id, res(alarmTag.Location), res(alarmTag.Description));
                            }
                        }
                    }
                    w.Write();
                }

                #endregion

                var trendsCategories = context.Get <TrendCategory>().OrderBy(c => c.Name).ToArray();

                #region TrendsCategories

                foreach (var category in trendsCategories)
                {
                    using (w.Block("public sealed partial class {0} : PHmiClient.Trends.TrendsCategoryBase", category.Name))
                    {
                        var trendTags = category.TrendTags.OrderBy(t => t.Name).ToArray();
                        using (w.Block("public {0}() : base({1}, \"{0}\", {2})", category.Name, category.Id, category.PeriodDb))
                        {
                            foreach (var t in trendTags)
                            {
                                w.Write("{0} = AddTrendTag({1}, \"{0}\", () => {2}, () => {3}, () => {4}, {5}, {6});",
                                        t.Name, t.Id, res(t.Description), res(t.NumTag.Format),
                                        res(t.NumTag.EngUnit), num(t.NumTag.EngMinDb), num(t.NumTag.EngMaxDb));
                            }
                        }

                        foreach (var t in trendTags)
                        {
                            w.Write();
                            w.Write("public PHmiClient.Trends.ITrendTag {0} {{ get; private set; }}", t.Name);
                        }
                    }
                    w.Write();
                }

                #endregion

                var logs = context.Get <Log>().OrderBy(l => l.Name).ToArray();

                var settings = context.Get <Settings>().Single();
                using (w.Block("public sealed partial class PHmi : PHmiClient.PHmiSystem.PHmiBase"))
                {
                    using (w.Block("public PHmi() : this(\"{0}\")", settings.Server))
                    {
                    }
                    w.Write();
                    using (w.Block("public PHmi(string server) : this(server, \"{0}\")", settings.Guid))
                    {
                    }
                    w.Write();
                    using (w.Block("public PHmi(string server, string guid) : base(server, guid)"))
                    {
                        foreach (var ioDevice in ioDevices)
                        {
                            w.Write("{0} = AddIoDevice(new {0}());", ioDevice.Name);
                        }
                        foreach (var category in alarmCategories)
                        {
                            w.Write("{0} = AddAlarmCategory(new {0}());", category.Name);
                        }
                        foreach (var category in trendsCategories)
                        {
                            w.Write("{0} = AddTrendsCategory(new {0}());", category.Name);
                        }
                        foreach (var log in logs)
                        {
                            w.Write("{0} = AddLog({1}, \"{0}\");", log.Name, log.Id);
                        }
                    }
                    foreach (var ioDevice in ioDevices)
                    {
                        w.Write();
                        w.Write("public {0} {0} {{ get; private set; }}", ioDevice.Name);
                    }
                    foreach (var category in alarmCategories)
                    {
                        w.Write();
                        w.Write("public {0} {0} {{ get; private set; }}", category.Name);
                    }
                    foreach (var category in trendsCategories)
                    {
                        w.Write();
                        w.Write("public {0} {0} {{ get; private set; }}", category.Name);
                    }
                    foreach (var log in logs)
                    {
                        w.Write();
                        w.Write("public PHmiClient.Logs.LogAbstract {0} {{ get; private set; }}", log.Name);
                    }
                }
            }
        }
 public TItem Get <TKey> (TKey itemId)
 {
     return(ModelContext.Get <TItem, TKey> (itemId));
 }