예제 #1
0
 public void LoadDatabase(string path)
 {
     _dbInfo.Path = path;
     using (var con = GetConnection(path))
     {
         con.Open();
         foreach (var item in _dbInfo.GetTables(con))
         {
             var vm = new TableViewModel(item);
             foreach (var colums in item.GetColums(con))
             {
                 vm.Colums.Add(new ColumViewMoodel(colums));
             }
             foreach (var trigger in item.GetTrigger(con))
             {
                 vm.Triggers.Add(new TriggerViewModel(trigger));
             }
             foreach (var idx in item.GetIndex(con))
             {
                 vm.Indexs.Add(new IndexViewModel(idx));
             }
             Tables.Add(vm);
         }
         Triggers.AddRange(Tables.SelectMany(x => x.Triggers));
         RaisePropertyChanged(nameof(Tables));
         RaisePropertyChanged(nameof(Triggers));
     }
 }
        public void ResetWithHome(HMHome home)
        {
            Accessories.Clear();
            Accessories.AddRange(home.Accessories);
            Accessories.SortByLocalizedName(a => a.Name);

            Rooms.Clear();
            Rooms.AddRange(home.GetAllRooms());
            Rooms.SortByLocalizedName(r => r.Name);

            Zones.Clear();
            Zones.AddRange(home.Zones);
            Zones.SortByLocalizedName(z => z.Name);

            ActionSets.Clear();
            ActionSets.AddRange(home.ActionSets);
            ActionSets.SortByTypeAndLocalizedName();

            Triggers.Clear();
            Triggers.AddRange(home.Triggers);
            Triggers.SortByLocalizedName(t => t.Name);

            ServiceGroups.Clear();
            ServiceGroups.AddRange(home.ServiceGroups);
            ServiceGroups.SortByLocalizedName(sg => sg.Name);
        }
예제 #3
0
        public bool LoadDatabase(string path)
        {
            _dbInfo = new DatabaseInfo(new FirebirdInfo(path));
            if (!_dbInfo.CanLoadDatabase)
            {
                return(false);
            }

            using (var con = new FbConnection(_dbInfo.ConnectionString))
            {
                con.Open();
                foreach (var item in _dbInfo.GetTables(con))
                {
                    var vm = new TableViewModel(item.TableName);
                    foreach (var colums in item.GetColums(con))
                    {
                        vm.Colums.Add(new ColumViewMoodel(colums));
                    }
                    foreach (var trigger in item.GetTrigger(con))
                    {
                        vm.Triggers.Add(new TriggerViewModel(trigger));
                    }
                    foreach (var idx in item.GetIndex(con))
                    {
                        vm.Indexs.Add(new IndexViewModel(idx));
                    }
                    Tables.Add(vm);
                }
                Triggers.AddRange(Tables.SelectMany(x => ((TableViewModel)x).Triggers).ToArray());
                Indexes.AddRange(Tables.SelectMany(x => ((TableViewModel)x).Indexs).ToArray());
                foreach (var item in _dbInfo.GetViews(con))
                {
                    var vm = new TableViewViewModel(item.ViewName, item.Source);
                    foreach (var colums in item.GetColums(con))
                    {
                        vm.Colums.Add(new ColumViewMoodel(colums));
                    }
                    Tables.Add(vm);
                }
                RaisePropertyChanged(nameof(Tables));
                RaisePropertyChanged(nameof(Triggers));
                RaisePropertyChanged(nameof(Indexes));
            }
            return(true);
        }
예제 #4
0
 /// <summary>
 /// Take all the pending triggers that have been added by AddPendingTrigger,
 /// and finally make them become active.  To be called by the CPU when it
 /// decides that enough mainline code has had a chance to happen that it's
 /// okay to enable triggers again.
 /// </summary>
 public void ActivatePendingTriggers()
 {
     Triggers.AddRange(TriggersToInsert);
     TriggersToInsert.Clear();
 }
예제 #5
0
 /// <summary>
 /// Take only those pending triggers that AddPendingTrigger added who's
 /// Priority is higher than the given value, and make them become active.
 /// ("active" here means "called on the callstack like a subroutine.")
 /// </summary>
 /// <param name="aboveThis"></param>
 public void ActivatePendingTriggersAbovePriority(InterruptPriority aboveThis)
 {
     Triggers.AddRange(TriggersToInsert.FindAll(t => t.Priority > aboveThis));
     TriggersToInsert.RemoveAll(t => t.Priority > aboveThis);
 }