public static void RefreshTables(IEventAggregator evAgg, NodeBase root, ref ObservableCollection <NodeDbTableToExcel> nodes) { var newRoot = new NodeDbTableRoot(evAgg) { Nodes = new ObservableCollection <NodeDbTableToExcel>() }; nodes = newRoot.Nodes; List <NodeBase> allTables = new List <NodeBase>(); GetTables <NodeBase>(root, node => node.GetNodes(), ref allTables); var distinctTables = allTables.GroupBy(g => new { g.Name }).Select(g => g.First()).ToList(); var orderedTables = distinctTables.OrderBy((x) => x.Name).ToList(); nodes = new ObservableCollection <NodeDbTableToExcel>(orderedTables.Select((x) => new NodeDbTableToExcel(evAgg) { Name = x.Name, Description = x.Description, Nodes = new ObservableCollection <NodeDbTableToExcelToTab>() }).ToList()); var allExcels = (root as NodeRoot).Nodes; foreach (var node in nodes) // TABLES { foreach (var table in allTables) // ALLTABLES { foreach (var rootEx in allExcels) { if (!node.Nodes.Any(x => x.Name.Equals(rootEx.Name))) { var newExcel = new NodeDbTableToExcelToTab(evAgg) { Name = rootEx.Name, Description = rootEx.Description }; newExcel.Nodes = new ObservableCollection <NodeTab>(rootEx.Nodes.ToList().Where(x => x.Nodes != null && x.Nodes.Any(y => y.Name.Equals(node.Name))).ToList()); node.Nodes.Add(newExcel); } } } } }
public MainViewModel(IEventAggregator evAgg, UISprints sprints, DatabaseSchemaViewModel dataViewModel) { DataViewModel = dataViewModel; Sprints = sprints.Sprints; eventAgg = evAgg; rootTables = new NodeDbTableRoot(evAgg) { Name = "ROOT for DB Tables", Description = "just helper instance...", Nodes = new ObservableCollection <NodeDbTableToExcel>() }; eventAgg.GetEvent <PathViewAddedEvent>().Subscribe(() => { Task.Run(() => { DoLoad(); }); }); evAgg.GetEvent <SelectionChangedEvent>().Subscribe(SelectionChanged()); Import = new DelegateCommand(() => DoImport()); Save = new DelegateCommand(() => DoSave()); Load = new DelegateCommand(() => DoLoad()); ShowLog = new DelegateCommand(() => { Process process = new Process(); // Configure the process using the StartInfo properties. var rootAppender = ((Hierarchy)LogManager.GetRepository()) .Root.Appenders.OfType <log4net.Appender.FileAppender>() .FirstOrDefault(); string filename = rootAppender != null ? rootAppender.File : string.Empty; process.StartInfo.FileName = rootAppender.File; //process.StartInfo.Arguments = @"c:\!! LOGs\EscapeDBUsage.log"; process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized; process.Start(); //process.WaitForExit();// Waits here for the process to exit. }); ShowDataFolder = new DelegateCommand(() => { Process process = new Process(); // Configure the process using the StartInfo properties. process.StartInfo.FileName = "explorer"; process.StartInfo.Arguments = FoldersHelper.DataFolder; process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized; process.Start(); //process.WaitForExit();// Waits here for the process to exit. }); Refresh = new DelegateCommand(() => DoRefresh()); RefreshColumns = new DelegateCommand(() => DoRefreshColumns()); ExpandAll = new DelegateCommand(() => DoExpandAll()); CollapseAll = new DelegateCommand(() => DoCollapseAll()); SaveSprints = new DelegateCommand(() => DoSaveSprints()); AddExcel = new DelegateCommand(() => DoAddExcel()); AddTables = new DelegateCommand(() => DoAddTables()); }
public MainViewModel(IEventAggregator evAgg) { eventAgg = evAgg; rootTables = new NodeDbTableRoot(evAgg) { Name = "ROOT for DB Tables", Description = "just helper instance...", Nodes = new ObservableCollection <NodeDbTableToExcel>() }; evAgg.GetEvent <EventSelectedChanged>().Subscribe((n) => { SelectedExcel = null; SelectedTab = null; SelectedDbTable = null; SelectedDbColumn = null; ExcelVisible = false; TabVisible = false; TableVisible = false; ColumnVisible = false; if (n is NodeExcel) { SelectedExcel = n as NodeExcel; ExcelVisible = true; } if (n is NodeTab) { SelectedTab = n as NodeTab; SelectedExcel = (n as NodeTab).NodeExcel; ExcelVisible = true; TabVisible = true; } if (n is NodeDbTable) { SelectedDbTable = n as NodeDbTable; SelectedTab = (n as NodeDbTable).NodeTab; SelectedExcel = (n as NodeDbTable).NodeTab.NodeExcel; ExcelVisible = true; TabVisible = true; TableVisible = true; } if (n is NodeDbColumn) { SelectedDbColumn = n as NodeDbColumn; SelectedDbTable = (n as NodeDbColumn).NodeDbTable; SelectedTab = (n as NodeDbColumn).NodeDbTable.NodeTab; SelectedExcel = (n as NodeDbColumn).NodeDbTable.NodeTab.NodeExcel; ExcelVisible = true; TabVisible = true; TableVisible = true; ColumnVisible = true; } }); Import = new DelegateCommand(() => DoImport()); Save = new DelegateCommand(() => DoSave()); Load = new DelegateCommand(() => DoLoad()); ShowLog = new DelegateCommand(() => { Process process = new Process(); // Configure the process using the StartInfo properties. process.StartInfo.FileName = @"c:\!! LOGs\EscapeDBUsage.log"; //process.StartInfo.Arguments = @"c:\!! LOGs\EscapeDBUsage.log"; process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized; process.Start(); //process.WaitForExit();// Waits here for the process to exit. }); Refresh = new DelegateCommand(() => DoRefresh()); RefreshColumns = new DelegateCommand(() => DoRefreshColumns()); ExpandAll = new DelegateCommand(() => DoExpandAll()); CollapseAll = new DelegateCommand(() => DoCollapseAll()); SaveSprints = new DelegateCommand(() => DoSaveSprints()); AddExcel = new DelegateCommand(() => DoAddExcel()); AddTables = new DelegateCommand(() => DoAddTables()); Task.Run(() => { DoLoad(); }); }