private string GeenerateFilterByCode(FilterByInfo info)
        {
            string filterName = info.Parameter.IndexOf('.') == -1 ? info.Source.Module.Name + "." + info.Parameter : info.Parameter;

            return(string.Format(
                       @"{{
    ""filterName"": ""{0}"",
    ""filterType"": ""filterBy""
}}, ", filterName));
        }
示例#2
0
        private static string TryExtractShortName(string typeName, FilterByInfo filter)
        {
            var removablePrefixes = _defaultNamespaces.Concat(new[] { filter.Source.Module.Name + "." });
            var removablePrefix   = removablePrefixes.FirstOrDefault(prefix => typeName.StartsWith(prefix));

            if (removablePrefix != null)
            {
                return(typeName.Substring(removablePrefix.Length));
            }
            return(null);
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            FilterByInfo info = (FilterByInfo)conceptInfo;

            if (info.Parameter.Split('.').Length > 2)
            {
                return;                                       // ignore internal filters
            }
            if (info.Parameter.EndsWith("Filter") && info.Parameter.Contains("_"))
            {
                return;                                                                    // ignore filters by InvalidData and similar
            }
            codeBuilder.InsertCode(FilterBySnippet(info), DataStructureCodeGenerator.FiltersTag, info.Source);
        }
示例#4
0
        private static string FilterImplementationSnippet(FilterByInfo info)
        {
            return(string.Format(
                       @"        public global::{0}[] Filter({1} filter_Parameter)
        {{
            Func<Common.DomRepository, {1}{3}, {0}[]> filter_Function =
                {2};
            return filter_Function(_domRepository, filter_Parameter{4});
        }}

",
                       info.Source.GetKeyProperties(),
                       info.Parameter,
                       info.Expression,
                       AdditionalParametersTypeTag.Evaluate(info),
                       AdditionalParametersArgumentTag.Evaluate(info)));
        }
 private static string FilterBySnippet(FilterByInfo info)
 {
     if (ComposableFilterRepository.CompareExist(info.Parameter))
     {
         if (info.Parameter.Contains("."))
         {
             string result = string.Format(@"{{ name:"" {0} "", filter: ""{1}"", isComposableFilter: false }},
     ", info.Parameter.Split('.')[1],
                                           info.Parameter);
             return(result);
         }
         else
         {
             string result = string.Format(@"{{ name:"" {0} "", filter: ""{0}"", isComposableFilter: false }},
     ", info.Parameter);
             return(result);
         }
     }
     else
     {
         return("");
     }
 }
示例#6
0
        private static string CodeSnippet(FilterByInfo info)
        {
            var fullTypeName = info.Parameter;

            if (System.CodeDom.Compiler.CodeGenerator.IsValidLanguageIndependentIdentifier(fullTypeName))
            {
                fullTypeName = info.Source.Module.Name + "." + fullTypeName;
            }

            string result = String.Format(
                @"Tuple.Create(""{0}"", typeof({0})),
                ", fullTypeName);

            var shortName = TryExtractShortName(fullTypeName, info);

            if (shortName != null)
            {
                result += String.Format(
                    @"Tuple.Create(""{0}"", typeof({1})),
                ", shortName, fullTypeName);
            }

            return(result);
        }