public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            IActionOptions options    = null;
            var            jsonObject = JObject.Load(reader);

            var actionType = jsonObject.Properties()
                             .First(p => String.Equals("type", p.Name, StringComparison.OrdinalIgnoreCase))
                             .Value.ToString()
                             .ToLower();

            switch (actionType)             //TODO a much better way of handling this
            {
            case "navigation":
                options = new NavigationActionOptions();
                break;

            case "launch":
                options = new LaunchActionOptions();
                break;

            case "close":
                options = new EndProcessActionOptions();
                break;
            }

            var optionsObject = jsonObject.Properties().First(p => String.Equals("options", p.Name, StringComparison.OrdinalIgnoreCase)).Value;

            serializer.Populate(optionsObject.CreateReader(), options);

            return(new JsonAction
            {
                Type = actionType,
                Options = options
            });
        }
        public static void Execute <T>(IActionOptions options) where T : IAction
        {
            var instance = (T)Activator.CreateInstance(typeof(T));

            if (instance != null)
            {
                instance.Execute(options);
            }
        }
示例#3
0
        public void Execute(IActionOptions options)
        {
            var actionOptions = (ActionSetupDbOptions)options;

            Log.Information($"Setup requested with option overwrite set to {actionOptions.Overwrite}");

            var ddl = new DbAdminFactory(Configuration);

            ddl.Generate();
        }
        public void Execute(IActionOptions options)
        {
            Log.Information($"Run-as-service requested.");

            DbContextFactory.GetInstance().Configuration = Configuration;

            WebHost.CreateDefaultBuilder(null)
            .UseStartup <Startup>()
            .Build()
            .Run();
        }
示例#5
0
        public Action Resolve(string actionType, IActionOptions options)
        {
            IActionBuilder builder;

            if (!this.registeredActionBuilders.TryGetValue(actionType, out builder))
            {
                return(null);
            }

            var resolvedAction = builder.Build(this.context, options);

            return(resolvedAction);
        }
        public Action Build(IApplicationContext context, IActionOptions options)
        {
            var launchOptions = options as LaunchActionOptions;

            if (launchOptions == null)
            {
                throw new Exception("Invalid options for launch action");                 //TODO proper error handling
            }

            return(() =>
            {
                Process.Start(launchOptions.Path, launchOptions.Arguments);
                //TODO waitForExit
            });
        }
        public void Execute(IActionOptions options)
        {
            var actionOptions = (ActionPopulateDbOptions)options;

            Log.Information(actionOptions.Limit == int.MaxValue
                ? $"Populate DB requested without record limit"
                : $"Populate DB requested with option recordcount set to {actionOptions.Limit}");

            Log.Information(actionOptions.MinPrevalance == Constants.DEFAULT_MIN_PREVALENCE
                ? $"Minimal occurence count set to include all"
                : $"Minimal occurence count set to {actionOptions.MinPrevalance}");

            DbContextFactory.GetInstance().Configuration = Configuration;
            new BatchReader().Read(actionOptions);
        }
示例#8
0
        public Action Build(IApplicationContext context, IActionOptions options)
        {
            var endOptions = options as EndProcessActionOptions;

            if (endOptions == null)
            {
                throw new Exception("Invalid options for close action");                 //TODO proper error handling
            }

            if (!String.IsNullOrWhiteSpace(endOptions.ProcessName))
            {
                return(() =>
                {
                    var runningProcesses = Process.GetProcessesByName(endOptions.ProcessName);
                    foreach (var p in runningProcesses)
                    {
                        p.Kill();
                    }
                });
            }

            //if (!String.IsNullOrWhiteSpace(endOptions.WindowTitle))
            //	{
            //		return () =>
            //		{
            //			var runningProcesses = Process.GetProcesses();
            //			foreach (var process in runningProcesses)
            //			{
            //				if (process.MainWindowHandle == IntPtr.Zero || String.IsNullOrWhiteSpace(process.MainWindowTitle))
            //				{
            //					continue;
            //				}

            //				if (!Regex.IsMatch(process.MainWindowTitle, endOptions.WindowTitle))
            //				{
            //					continue;
            //				}

            //				process.CloseMainWindow();
            //			}
            //		};
            //	}

            throw new Exception("Invalid options for close action");             //TODO proper error handling
        }
        public Action Build(IApplicationContext context, IActionOptions options)
        {
            var navOptions = options as NavigationActionOptions;

            if (navOptions == null)
            {
                throw new Exception("Invalid options for navigation action");         //TODO proper error handling
            }

            Action navigationActions = null;

            foreach (var operation in navOptions.Operations)
            {
                Action operationAction;
                switch (operation.ToLower())
                {
                case "exit":
                    operationAction = () => context.Overlay.ToggleOverlay();
                    break;

                default:
                    throw new Exception("Invalid operation configured for navigation action");                             //TODO proper error handling
                }

                if (navigationActions == null)
                {
                    navigationActions = operationAction;
                }
                else
                {
                    navigationActions += operationAction;
                }
            }

            return(navigationActions);
        }