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;
             }
         }
     }
 }
Esempio n. 4
0
        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;
                    }
                }
            }
        }
Esempio n. 5
0
        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);
        }