private async void LoggingInMessageHandler(NotificationMessage <ConnectionInfo> message) { if (message.Notification == Constants.LoggingInMessage) { var _mongoDbService = SimpleIoc.Default.GetInstanceWithoutCaching <IMongoDbService>(); MongoDbServerViewModel serverVm = new MongoDbServerViewModel(_mongoDbService); serverVm.IsBusy = true; serverVm.Name = message.Content.Address + ":" + message.Content.Port; DispatcherHelper.CheckBeginInvokeOnUI(() => { ActiveConnections.Add(serverVm); }); try { LoggerHelper.Logger.Info("Connecting to server " + message.Content.Address + ":" + message.Content.Port); var serverInfo = await _mongoDbService.ConnectAsync(message.Content); serverVm.ServerVersion = SemanticVersion.Parse(serverInfo.ServerStatus["version"].AsString); LoggerHelper.Logger.Info("Connected to server " + message.Content.Address + ":" + message.Content.Port); serverVm.LoadDatabases(serverInfo.Databases); } catch (Exception ex) { LoggerHelper.Logger.Error("Failed to connect to server " + message.Content.Address + ":" + message.Content.Port, ex); } serverVm.IsBusy = false; } }
/// <summary> /// Initializes a new instance of the MongoDbDatabaseViewModel class. /// </summary> public MongoDbDatabaseViewModel(MongoDbServerViewModel server, string name) { Server = server; Name = name; _children = new ObservableCollection<BaseTreeviewViewModel>(); _collections = new FolderViewModel("Collections", this); _users = new FolderViewModel("Users", this); _children.Add(_collections); _collections.Children.Add(new MongoDbCollectionViewModel(this, null) { IconVisible = false }); if (_server.ServerVersion < SemanticVersion.Parse("2.6.0")) { _children.Add(_users); _users.Children.Add(new MongoDbUserViewModel(null, null) { IconVisible = false }); } CreateDatabase = new RelayCommand(InnerCreateDatabase, () => { return !string.IsNullOrWhiteSpace(Name) && IsNew; }); RunCommand = new RelayCommand<DatabaseCommand>(InnerOpenRunCommand); OpenCreateNewCollection = new RelayCommand<MongoDbDatabaseViewModel>( database => { Messenger.Default.Send(new NotificationMessage<MongoDbDatabaseViewModel>(this, Constants.OpenCreateNewCollectionMessage)); }); Refresh = new RelayCommand(LoadCollections); DatabaseCommands = new Dictionary<string, DatabaseCommand>(); DatabaseCommands.Add("repairDatabase", new DatabaseCommand() { Command = "{ repairDatabase: 1 }" }); ConfirmDropDatabase = new RelayCommand(() => { Messenger.Default.Send(new NotificationMessage<MongoDbDatabaseViewModel>(this, Constants.ConfirmDropDatabaseMessage)); }); Messenger.Default.Register<PropertyChangedMessage<bool>>(this, (message) => { if (message.Sender == _collections && message.PropertyName == "IsExpanded" && _collections.IsExpanded) { if (!IsNew && !_collectionsLoaded && !string.IsNullOrWhiteSpace(Name)) LoadCollections(); } else if (Server.ServerVersion < SemanticVersion.Parse("2.6.0") && message.Sender == _users && message.PropertyName == "IsExpanded" && _users.IsExpanded) { if (!IsNew && !_usersLoaded && !string.IsNullOrWhiteSpace(Name)) LoadUsers(); } }); Messenger.Default.Register<NotificationMessage<CreateCollectionViewModel>>(this, InnerCreateNewCollection); Messenger.Default.Register<NotificationMessage<MongoDbCollectionViewModel>>(this, InnerDropCollection); }
/// <summary> /// Initializes a new instance of the MainViewModel class. /// </summary> public MainViewModel() { _activeConnections = new ObservableCollection <MongoDbServerViewModel>(); _tabs = new ObservableCollection <TabViewModel>(); LogEvents = LoggerHelper.LogEvents; ViewLogDetails = new RelayCommand <log4net.Core.LoggingEvent>((param) => { Messenger.Default.Send(new NotificationMessage <log4net.Core.LoggingEvent>(param, Constants.ShowLogDetailsMessage)); }); Messenger.Default.Register <NotificationMessage <ConnectionInfo> >(this, (message) => LoggingInMessageHandler(message)); Messenger.Default.Register <NotificationMessage <TabViewModel> >(this, (message) => TabMessageHandler(message)); Messenger.Default.Register <NotificationMessage <MongoDbServerViewModel> >(this, (message) => MongoDbServerMessageHandler(message)); if (IsInDesignModeStatic) { var _mongoDbService = GalaSoft.MvvmLight.Ioc.SimpleIoc.Default.GetInstanceWithoutCaching <IMongoDbService>(); MongoDbServerViewModel serverVm = new MongoDbServerViewModel(_mongoDbService); serverVm.Name = "127.0.0.1:27017"; ActiveConnections.Add(serverVm); var task = _mongoDbService.ConnectAsync(new ConnectionInfo()); task.Wait(); var serverInfo = task.Result; serverVm.LoadDatabases(serverInfo.Databases); TabViewModel tabDesign1 = SimpleIoc.Default.GetInstanceWithoutCaching <TabViewModel>(); tabDesign1.Name = "Collection1"; tabDesign1.SelectedOperation = tabDesign1.FindOperation; this.Tabs.Add(tabDesign1); this.SelectedTab = tabDesign1; TabViewModel tabDesign2 = SimpleIoc.Default.GetInstanceWithoutCaching <TabViewModel>(); tabDesign2.Name = "localhost:27017"; tabDesign2.SelectedOperation = tabDesign2.AggregateOperation; this.Tabs.Add(tabDesign2); LogEvents = new ObservableCollection <log4net.Core.LoggingEvent>(); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { Level = log4net.Core.Level.Debug, Message = "Test debug message", TimeStamp = DateTime.Parse("2015/11/09 00:01:00") })); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { Level = log4net.Core.Level.Info, Message = "Test info message", TimeStamp = DateTime.Parse("2015/11/09 00:02:00") })); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { ExceptionString = "TestException", Level = log4net.Core.Level.Warn, Message = "Test warn message", TimeStamp = DateTime.Parse("2015/11/09 00:03:00") })); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { ExceptionString = "TestException", Level = log4net.Core.Level.Error, Message = "Test error message", TimeStamp = DateTime.Parse("2015/11/09 00:04:00") })); } }
/// <summary> /// Initializes a new instance of the MainViewModel class. /// </summary> public MainViewModel() { _activeConnections = new ObservableCollection<MongoDbServerViewModel>(); _tabs = new ObservableCollection<TabViewModel>(); LogEvents = LoggerHelper.LogEvents; ViewLogDetails = new RelayCommand<log4net.Core.LoggingEvent>((param) => { Messenger.Default.Send(new NotificationMessage<log4net.Core.LoggingEvent>(param, Constants.ShowLogDetailsMessage)); }); Messenger.Default.Register<NotificationMessage<ConnectionInfo>>(this, (message) => LoggingInMessageHandler(message)); Messenger.Default.Register<NotificationMessage<TabViewModel>>(this, (message) => TabMessageHandler(message)); Messenger.Default.Register<NotificationMessage<MongoDbServerViewModel>>(this, (message) => MongoDbServerMessageHandler(message)); if (IsInDesignModeStatic) { var _mongoDbService = GalaSoft.MvvmLight.Ioc.SimpleIoc.Default.GetInstanceWithoutCaching<IMongoDbService>(); MongoDbServerViewModel serverVm = new MongoDbServerViewModel(_mongoDbService); serverVm.Name = "127.0.0.1:27017"; ActiveConnections.Add(serverVm); var task = _mongoDbService.ConnectAsync(new ConnectionInfo()); task.Wait(); var serverInfo = task.Result; serverVm.LoadDatabases(serverInfo.Databases); TabViewModel tabDesign1 = SimpleIoc.Default.GetInstanceWithoutCaching<TabViewModel>(); tabDesign1.Name = "Collection1"; tabDesign1.SelectedOperation = tabDesign1.FindOperation; this.Tabs.Add(tabDesign1); this.SelectedTab = tabDesign1; TabViewModel tabDesign2 = SimpleIoc.Default.GetInstanceWithoutCaching<TabViewModel>(); tabDesign2.Name = "localhost:27017"; tabDesign2.SelectedOperation = tabDesign2.AggregateOperation; this.Tabs.Add(tabDesign2); LogEvents = new ObservableCollection<log4net.Core.LoggingEvent>(); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { Level = log4net.Core.Level.Debug, Message = "Test debug message", TimeStamp = DateTime.Parse("2015/11/09 00:01:00") })); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { Level = log4net.Core.Level.Info, Message = "Test info message", TimeStamp = DateTime.Parse("2015/11/09 00:02:00") })); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { ExceptionString = "TestException", Level = log4net.Core.Level.Warn, Message = "Test warn message", TimeStamp = DateTime.Parse("2015/11/09 00:03:00") })); LogEvents.Add(new log4net.Core.LoggingEvent(new log4net.Core.LoggingEventData() { ExceptionString = "TestException", Level = log4net.Core.Level.Error, Message = "Test error message", TimeStamp = DateTime.Parse("2015/11/09 00:04:00") })); } }
private async void LoggingInMessageHandler(NotificationMessage<ConnectionInfo> message) { if (message.Notification == Constants.LoggingInMessage) { var _mongoDbService = SimpleIoc.Default.GetInstanceWithoutCaching<IMongoDbService>(); MongoDbServerViewModel serverVm = new MongoDbServerViewModel(_mongoDbService); serverVm.IsBusy = true; serverVm.Name = message.Content.Address + ":" + message.Content.Port; DispatcherHelper.CheckBeginInvokeOnUI(() => { ActiveConnections.Add(serverVm); }); try { LoggerHelper.Logger.Info("Connecting to server " + message.Content.Address + ":" + message.Content.Port); var serverInfo = await _mongoDbService.ConnectAsync(message.Content); serverVm.ServerVersion = SemanticVersion.Parse(serverInfo.ServerStatus["version"].AsString); LoggerHelper.Logger.Info("Connected to server " + message.Content.Address + ":" + message.Content.Port); serverVm.LoadDatabases(serverInfo.Databases); } catch (Exception ex) { LoggerHelper.Logger.Error("Failed to connect to server " + message.Content.Address + ":" + message.Content.Port, ex); } serverVm.IsBusy = false; } }
/// <summary> /// Initializes a new instance of the MongoDbDatabaseViewModel class. /// </summary> public MongoDbDatabaseViewModel(MongoDbServerViewModel server, string name) { Server = server; Name = name; _children = new ObservableCollection <BaseTreeviewViewModel>(); _collections = new FolderViewModel("Collections", this); _users = new FolderViewModel("Users", this); _children.Add(_collections); _collections.Children.Add(new MongoDbCollectionViewModel(this, null) { IconVisible = false }); if (_server.ServerVersion < SemanticVersion.Parse("2.6.0")) { _children.Add(_users); _users.Children.Add(new MongoDbUserViewModel(null, null) { IconVisible = false }); } CreateDatabase = new RelayCommand(InnerCreateDatabase, () => { return(!string.IsNullOrWhiteSpace(Name) && IsNew); }); RunCommand = new RelayCommand <DatabaseCommand>(InnerOpenRunCommand); OpenCreateNewCollection = new RelayCommand <MongoDbDatabaseViewModel>( database => { Messenger.Default.Send(new NotificationMessage <MongoDbDatabaseViewModel>(this, Constants.OpenCreateNewCollectionMessage)); }); Refresh = new RelayCommand(LoadCollections); DatabaseCommands = new Dictionary <string, DatabaseCommand>(); DatabaseCommands.Add("repairDatabase", new DatabaseCommand() { Command = "{ repairDatabase: 1 }" }); ConfirmDropDatabase = new RelayCommand(() => { Messenger.Default.Send(new NotificationMessage <MongoDbDatabaseViewModel>(this, Constants.ConfirmDropDatabaseMessage)); }); Messenger.Default.Register <PropertyChangedMessage <bool> >(this, (message) => { if (message.Sender == _collections && message.PropertyName == "IsExpanded" && _collections.IsExpanded) { if (!IsNew && !_collectionsLoaded && !string.IsNullOrWhiteSpace(Name)) { LoadCollections(); } } else if (Server.ServerVersion < SemanticVersion.Parse("2.6.0") && message.Sender == _users && message.PropertyName == "IsExpanded" && _users.IsExpanded) { if (!IsNew && !_usersLoaded && !string.IsNullOrWhiteSpace(Name)) { LoadUsers(); } } }); Messenger.Default.Register <NotificationMessage <CreateCollectionViewModel> >(this, InnerCreateNewCollection); Messenger.Default.Register <NotificationMessage <MongoDbCollectionViewModel> >(this, InnerDropCollection); }