예제 #1
0
        public void Run(IInterrogator <DataSet> interrogator)
        {
            subscription = interrogator.DataProvider.Subscribe(this);

            interrogator.Start();

            string command;

            do
            {
                SystemConsole.WriteLine();
                using (new ConsoleFormatter(ConsoleColor.DarkRed, ConsoleColor.White)) {
                    SystemConsole.WriteLine("Type 'quit' to exit the application");
                }

                using (new ConsoleFormatter(ConsoleColor.Gray, ConsoleColor.White)) {
                    SystemConsole.WriteLine("Type 'refresh' to refresh views");
                }

                command = SystemConsole.ReadLine();

                if (command == "refresh")
                {
                    interrogator.Refresh();
                }
            } while (command != "quit");

            interrogator.Stop();
        }
예제 #2
0
        public Dictionary <IPath, IList <object> > SelectEnumerablesAsRelated(IList <IPath> paths, object data)
        {
            Dictionary <IPath, IList <object> > values;

            if (paths.Count > 0)
            {
                IInterrogator interrogator = InterrogatorFactory.CreateInteregator(data.GetType());
                INavigator    navigator    = interrogator.CreateNavigator(data, paths[0].GetType());

                if (navigator == null)
                {
                    throw new Exception(string.Concat("Couldn't create a navigator for the path '", paths[0].ToString(),
                                                      "'."));
                }

                values = navigator.SelectEnumerablesAsRelated(paths);

                navigator.Dispose();
            }
            else
            {
                values = new Dictionary <IPath, IList <object> >();
            }

            return(values);
        }
예제 #3
0
        public Dictionary <IPath, IList <object> > SelectEnumerablesAsRelated(IList <IPath> paths, object data)
        {
            Dictionary <IPath, IList <object> > values;

            if (paths.Count > 0)
            {
                IInterrogator interrogator = InterrogatorFactory.CreateInteregator(data.GetType());
                INavigator    navigator    = interrogator.CreateNavigator(data, paths[0].GetType());

                if (navigator == null)
                {
                    throw new Exception(string.Format(ErrorResource.CouldntCreateNavigator, paths[0]));
                }

                values = navigator.SelectEnumerablesAsRelated(paths);

                navigator.Dispose();
            }
            else
            {
                values = new Dictionary <IPath, IList <object> >();
            }

            return(values);
        }
 public void DataTableInterrogator_CreateMapper_WhenDataTable_ExpectDataTableInterrogator()
 {
     //------------Setup for test--------------------------
     DataTable obj = new DataTable();
     //------------Execute Test---------------------------
     IInterrogator interrogator = InterrogatorFactory.CreateInteregator(obj.GetType());
     //------------Assert Results-------------------------
     Assert.AreEqual(typeof(DataTableInterrogator), interrogator.GetType());
 }
예제 #5
0
        public IEnumerable <IPath> Map(object data)
        {
            IInterrogator interrogator = InterrogatorFactory.CreateInteregator(data.GetType());
            IMapper       mapper       = interrogator.CreateMapper(data);

            if (mapper == null)
            {
                throw new Exception(string.Concat("Couldn't create a mapper for '", data.ToString(), "'."));
            }

            return(mapper.Map(data));
        }
예제 #6
0
        public IEnumerable <IPath> Map(object data)
        {
            IInterrogator interrogator = InterrogatorFactory.CreateInteregator(data.GetType());
            IMapper       mapper       = interrogator.CreateMapper(data);

            if (mapper == null)
            {
                throw new Exception(string.Format(ErrorResource.CouldntCreateMapper, data));
            }

            return(mapper.Map(data));
        }
예제 #7
0
        public IEnumerable <object> SelectEnumerable(IPath path, object data)
        {
            IInterrogator interrogator = InterrogatorFactory.CreateInteregator(data.GetType());
            INavigator    navigator    = interrogator.CreateNavigator(data, path.GetType());

            if (navigator == null)
            {
                throw new Exception(string.Concat("Couldn't create a navigator for the path '", path.ToString(), "'."));
            }

            IEnumerable <object> values = navigator.SelectEnumerable(path);

            navigator.Dispose();

            return(values);
        }
예제 #8
0
        public IEnumerable <object> SelectEnumerable(IPath path, object data)
        {
            IInterrogator interrogator = InterrogatorFactory.CreateInteregator(data.GetType());
            INavigator    navigator    = interrogator.CreateNavigator(data, path.GetType());

            if (navigator == null)
            {
                throw new Exception(string.Format(ErrorResource.CouldntCreateNavigator, path));
            }

            IEnumerable <object> values = navigator.SelectEnumerable(path);

            navigator.Dispose();

            return(values);
        }
예제 #9
0
        public object SelectScalar(IPath path, object data)
        {
            IInterrogator interrogator = InterrogatorFactory.CreateInteregator(data.GetType());
            INavigator    navigator    = interrogator.CreateNavigator(data, path.GetType());

            if (navigator == null)
            {
                throw new Exception(string.Format(ErrorResource.CouldntCreateNavigator, path));
            }

            object value = navigator.SelectScalar(path);

            navigator.Dispose();

            return(value);
        }
예제 #10
0
        public void Run(IInterrogator <DataSet> interrogator)
        {
            subscription = interrogator.DataProvider.Subscribe(this);

            Action <object> changeContext = (args) => {
                ApplicationContext newContext = new ApplicationContext(context)
                {
                    PlanId  = viewModel.PlanId,
                    SuiteId = viewModel.SuiteId,
                    Keyword = viewModel.Keyword
                };
                this.context = newContext;
                interrogator.SwitchContext(newContext);
                ShowSelectedView();
            };

            RelayCommand <object> changeContextCommand = new RelayCommand <object>(changeContext, args => true);
            RelayCommand <object> viewChangedCommand   = new RelayCommand <object>(args => ShowSelectedView(), args => true);
            RelayCommand <object> closeCommand         = new RelayCommand <object>(args => { interrogator.Stop(); Closing(); }, args => true);

            uiThread = new Thread(() => {
                viewModel         = new MainViewModel(context, changeContextCommand, changeContextCommand, changeContextCommand, viewChangedCommand, closeCommand);
                MainForm mainForm = new MainForm {
                    DataContext = viewModel
                };
                try{
                    mainForm.ShowDialog();
                } finally{
                    mainForm.Close();
                }
            })
            {
                IsBackground = true
            };

            uiThread.SetApartmentState(ApartmentState.STA);
            uiThread.Start();
            interrogator.Start();
            //Do not return until the app finishes executing.
            uiThread.Join();
        }
예제 #11
0
 public void Ask(string question, IInterrogator interrogator)
 {
     Console.Out.Write(question);
     interrogator.AnsweredWith(Console.In.ReadLine(), this);
 }
예제 #12
0
 public void OnNext <T>(IInterrogator <T> data)
 {
     //In a plugin workflow, we would use this event to create some kind of GameObject that could
     // parse some input and then callback to asker.AwaitingResponse.Value.
     scrpt.asker = data;
 }