public List <FilterRule> BuildRules(Dictionary <string, string> contextArgs, DeploymentFilter deploymentFilter)
        {
            var defintions = BuildRuleDefinitions(contextArgs, deploymentFilter);

            var rules = new List <FilterRule>();

            foreach (var ruleDefinition in defintions)
            {
                switch (ruleDefinition.FilterType)
                {
                case FilterType.Schema:
                    rules.Add(new SchemaFilterRule(ruleDefinition.Operation, ruleDefinition.Match,
                                                   ruleDefinition.MatchType));
                    break;

                case FilterType.Name:
                    rules.Add(new NamedObjectFilterRule(ruleDefinition.Operation, ruleDefinition.Match,
                                                        ruleDefinition.MatchType));
                    break;

                case FilterType.Type:
                    rules.Add(new ObjectTypeFilterRule(ruleDefinition.Operation, ruleDefinition.Match,
                                                       ruleDefinition.MatchType));
                    break;

                case FilterType.TableColumns:
                    rules.Add(new TableColumnFilterRule(ruleDefinition.Operation, ruleDefinition.Match,
                                                        ruleDefinition.MatchType));
                    break;
                }
            }

            return(rules);
        }
示例#2
0
        public async Task <ActionResult <PagedResult <DeploymentModel> > > Get([FromBody] DeploymentFilter filter)
        {
            var result = new PagedResult <DeploymentModel>();

            var query = this.deploymentManager.CreateDeploymentQuery();

            var list = await query.ListAsync(filter.Page, filter.PageSize);

            result.Count = await query.CountAsync();

            result.Page     = filter.Page;
            result.PageSize = filter.PageSize;
            result.Items    = list.Select(x => DeploymentModel.Create(x))
                              .ToList();

            return(this.Ok(result));
        }
示例#3
0
        public IEnumerable <RuleDefinition> BuildRuleDefinitions(Dictionary <string, string> contextArgs,
                                                                 DeploymentFilter deploymentFilter)
        {
            var rules = new List <RuleDefinition>();

            foreach (var arg in contextArgs)
            {
                try
                {
                    var definitionType = FilterDefinitionTypeParser.GetDefinitionType(arg.Key);

                    if (definitionType == FilterDefinitionType.CommandLine)
                    {
                        rules.Add(new CommandLineFilterParser(_messageHandler).GetDefinitions(arg.Value));
                    }

                    if (definitionType == FilterDefinitionType.XmlFile)
                    {
                        rules.AddRange(new XmlFilterParser(new FileGateway(), _messageHandler).GetDefinitions(arg.Value));
                    }

                    if (definitionType == FilterDefinitionType.Logging)
                    {
                        var level = DisplayMessageLevel.None;
                        if (Enum.TryParse(arg.Value, true, out level))
                        {
                            _messageHandler.SetMessageLevel(level);
                        }
                    }
                }
                catch (Exception e)
                {
                    deploymentFilter.ShowMessage(string.Format("Error decoding command line arg: {0}, error: {1}",
                                                               arg.Value, e.Message));
                }
            }

            return(rules);
        }