public void OnExecuting(object sender, Puzzle.SideFX.Framework.Execution.ExecutionCancelEventArgs e) { IEngine engine = sender as IEngine; DisplayObjectsCommand displayObjectsCommand = DisplayObjectsCommand.Evaluate(engine, e.Command); if (displayObjectsCommand == null) { return; } IObjectService objectService = engine.GetService <IObjectService>(); IDisplayService displayService = engine.GetService <IDisplayService>(); IDatabaseService databaseService = engine.GetService <IDatabaseService>(); databaseService.EnsureTransaction(); Type type = objectService.GetTypeByName(displayObjectsCommand.ClassName); IList objects = null; if (!string.IsNullOrEmpty(displayObjectsCommand.Where)) { objects = objectService.GetObjects(type, displayObjectsCommand.Where); } else { objects = objectService.GetObjects(type, displayObjectsCommand.Match); } if (objects != null) { foreach (object obj in objects) { if (displayObjectsCommand.List) { displayService.List(obj); } else { displayService.Display(obj); } } } }
public static DisplayObjectsCommand Evaluate(IEngine engine, Command command) { if (command.Parameters.Count < 2) return null; bool list = false; switch (command.Parameters[0].Name.ToLower()) { case "display": case "show": break; case "list": list = true; break; default: return null; } if (command.Parameters[0].Value != null) return null; string name = command.Parameters[1].Name; if (string.IsNullOrEmpty(name)) return null; ISchemaService schemaService = engine.GetService<ISchemaService>(); if (!schemaService.HasClass(name)) return null; DisplayObjectsCommand displayObjectsCommand = new DisplayObjectsCommand(name, list); EvaluateMatch(command.Parameters[1].Value, name, schemaService, displayObjectsCommand); if (command.Parameters.Count > 2) { switch (command.Parameters[2].Name.ToLower()) { case "match": case "where": EvaluateMatch(command.Parameters[2].Value, name, schemaService, displayObjectsCommand); break; case "query": if (command.Parameters[2].Value != null) displayObjectsCommand.Where = command.Parameters[2].Value.ToString(); break; } } return displayObjectsCommand; }
private static void EvaluateMatch(object possibleMatch, string name, ISchemaService schemaService, DisplayObjectsCommand displayObjectsCommand) { IList<Parameter> match = possibleMatch as IList<Parameter>; if (match != null) { foreach (Parameter parameter in match) { if (schemaService.HasProperty(name, parameter.Name)) { displayObjectsCommand.Match[parameter.Name] = parameter.Value; } } } }
private static void EvaluateMatch(object possibleMatch, string name, ISchemaService schemaService, DisplayObjectsCommand displayObjectsCommand) { IList <Parameter> match = possibleMatch as IList <Parameter>; if (match != null) { foreach (Parameter parameter in match) { if (schemaService.HasProperty(name, parameter.Name)) { displayObjectsCommand.Match[parameter.Name] = parameter.Value; } } } }
public static DisplayObjectsCommand Evaluate(IEngine engine, Command command) { if (command.Parameters.Count < 2) { return(null); } bool list = false; switch (command.Parameters[0].Name.ToLower()) { case "display": case "show": break; case "list": list = true; break; default: return(null); } if (command.Parameters[0].Value != null) { return(null); } string name = command.Parameters[1].Name; if (string.IsNullOrEmpty(name)) { return(null); } ISchemaService schemaService = engine.GetService <ISchemaService>(); if (!schemaService.HasClass(name)) { return(null); } DisplayObjectsCommand displayObjectsCommand = new DisplayObjectsCommand(name, list); EvaluateMatch(command.Parameters[1].Value, name, schemaService, displayObjectsCommand); if (command.Parameters.Count > 2) { switch (command.Parameters[2].Name.ToLower()) { case "match": case "where": EvaluateMatch(command.Parameters[2].Value, name, schemaService, displayObjectsCommand); break; case "query": if (command.Parameters[2].Value != null) { displayObjectsCommand.Where = command.Parameters[2].Value.ToString(); } break; } } return(displayObjectsCommand); }