Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        /// <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")
                }));
            }
        }
Ejemplo n.º 4
0
        /// <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") }));
            }

        }
Ejemplo n.º 5
0
        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);
        }