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); } }
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(); }
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); }
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); }