Ejemplo n.º 1
0
 public void AddSimpleFilter(IFilterInfo f1)
 {
     if (f1.IsFilterEnable)
     {
         this.CurrentStatementGroup.Add(f1);
     }
 }
Ejemplo n.º 2
0
 public void AddExistFilter(IFilterInfo f1)
 {
     if (f1.IsFilterEnable)
     {
         this._statements.Add(f1.FilterInfos.ToList());
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FilterViewModel"/> class.
        /// </summary>
        /// <param name="filterInfo">The filter information.</param>
        /// <param name="filterType">Type of the filter.</param>
        public FilterViewModel(IFilterInfo filterInfo, FilterType filterType)
        {
            if (filterInfo == null)
                return;

            IsAdmin = filterInfo.IsAdminFilter.HasValue && filterInfo.IsAdminFilter.Value;
            _filterType = filterType;
            OriginalName = _name = filterInfo.Name;
            Id = filterInfo.Id;
            _originalFilterDefinitions = filterInfo.FilterDefinition;

            SortDescriptors = filterInfo.SortDescriptors;
            GroupColumn = filterInfo.GroupColumn;

            FilterGuid = filterInfo.Guid;

            DefaultLayoutId = filterInfo.DefaultLayoutId == 0 ? (int?) null : filterInfo.DefaultLayoutId;
            Layout = filterInfo.DefaultLayout;

            if (filterInfo.QuickFilterId != null)
            {
                QuickFilterId = filterInfo.QuickFilterId.Value;
                if ((QuickFilters) QuickFilterId.Value != QuickFilters.None)
                    QuickFilter = (QuickFilters) QuickFilterId.Value;
            }
        }
Ejemplo n.º 4
0
        private Expression GetExpression(ParameterExpression param, IFilterInfo statement, string propertyName = null)
        {
            Expression       resultExpr = null;
            var              memberName = propertyName ?? statement.PropertyName;
            MemberExpression member     = param.GetMemberExpression(memberName);

            if (Nullable.GetUnderlyingType(member.Type) != null && statement.Value != null)
            {
                resultExpr = Expression.Property(member, "HasValue");
                member     = Expression.Property(member, "Value");
            }

            var constant1 = Expression.Constant(statement.Value);
            var constant2 = Expression.Constant(statement.Value2);

            this.CheckPropertyValueMismatch(member, constant1);

            var safeStringExpression = statement.Operation.GetExpression(member, constant1, constant2);

            resultExpr = resultExpr != null?Expression.AndAlso(resultExpr, safeStringExpression) : safeStringExpression;

            resultExpr = this.GetSafePropertyMember(param, memberName, resultExpr);

            if (statement.Operation.ExpectNullValues && memberName.Contains("."))
            {
                resultExpr = Expression.OrElse(this.CheckIfParentIsNull(param, memberName), resultExpr);
            }

            return(resultExpr);
        }
Ejemplo n.º 5
0
        public void Add(IFilterInfo info)
        {
            var predicate = _filterBuilder.BuildFromString(info.Property, info.Operator, info.Value);

            if (predicate == null)
            {
                // Log warning? throw exception to log a warning?
            }
            else
            {
                Add(predicate);
            }
        }
Ejemplo n.º 6
0
        private Expression ProcessListStatement(ParameterExpression param, IFilterInfo statement)
        {
            var basePropertyName = statement.PropertyName.Substring(0, statement.PropertyName.IndexOf("["));
            var propertyName     = statement.PropertyName.Substring(statement.PropertyName.IndexOf("[") + 1).Replace("]", string.Empty);

            var type = param.Type.GetProperty(basePropertyName).PropertyType.GetGenericArguments()[0];
            ParameterExpression listItemParam = Expression.Parameter(type, "i");
            var lambda         = Expression.Lambda(this.GetExpression(listItemParam, statement, propertyName), listItemParam);
            var member         = param.GetMemberExpression(basePropertyName);
            var enumerableType = typeof(Enumerable);
            var anyInfo        = enumerableType.GetMethods(BindingFlags.Static | BindingFlags.Public).First(m => m.Name == "Any" && m.GetParameters().Count() == 2);

            anyInfo = anyInfo.MakeGenericMethod(type);
            return(Expression.Call(anyInfo, member, lambda));
        }
Ejemplo n.º 7
0
        public Filter(IFilterInfo f1, IFilterInfo f2, Connector connector)
        {
            this._statements = new List <List <IFilterInfo> > {
                new List <IFilterInfo>()
            };
            this.CurrentStatementGroup.Add(f1);
            var connection = new FilterStatementConnection(this, f1);

            if (connector == Connector.Or)
            {
                connection.Or.By(f2);
            }
            else
            {
                connection.And.By(f2);
            }
        }
Ejemplo n.º 8
0
 public bool SetSource(string FileName)
 {
     try
     {
         FilterGraph = new FilgraphManager();
         object ppUnk = null;
         FilterGraph.AddSourceFilter(FileName, out ppUnk);
         FilterGraph.RenderFile(FileName);
         IFilterInfo Info = (IFilterInfo)ppUnk;
         TestControl  = Info.Filter as ITestControl;
         BasicAudio   = FilterGraph as IBasicAudio;
         VideoWindow  = FilterGraph as IVideoWindow;
         MediaControl = FilterGraph as IMediaControl;
     }
     catch (Exception ex)
     {
         Clear();
         return(false);
     }
     return(true);
 }
Ejemplo n.º 9
0
 public IFilterStatementConnection By(IFilterInfo statement)
 {
     this.CurrentStatementGroup.Add(statement);
     return(new FilterStatementConnection(this, statement));
 }
Ejemplo n.º 10
0
 public IntegerExistsInFilter(Expression <Func <T, ICollection <TCollection> > > expression, IFilterInfo filter)
     : base(expression, filter)
 {
 }
Ejemplo n.º 11
0
 private static Filter CreateFilter(IFilterInfo filter, QuickFilters quickFilter)
 {
     return new Filter
                {
                    ProcessSystemName = filter.ProcessSystemName,
                    Id = filter.Id,
                    Name = filter.Name,
                    FilterDefinition = ConvertMemberTypesToDataTypes(filter.FilterDefinition),
                    IsAdminFilter = filter.IsAdminFilter ?? false,
                    LayoutId = ToNullable(filter.DefaultLayoutId),
                    QuickFilter = quickFilter
                };
 }
Ejemplo n.º 12
0
 private bool IsList(IFilterInfo statement)
 {
     return(statement.PropertyName.Contains("[") && statement.PropertyName.Contains("]"));
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FilterStatementConnection"/> class.
 /// </summary>
 /// <param name="filter"></param>
 /// <param name="statement"></param>
 internal FilterStatementConnection(IFilter filter, IFilterInfo statement)
 {
     this._filter    = filter;
     this._statement = statement;
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Creates filter metadata.
        /// </summary>
        /// <param name="filter">
        /// The filter.
        /// </param>
        /// <param name="includeParameters">
        /// True to include parameter metadata; otherwise, false.
        /// </param>
        /// <param name="includeParameterValues">
        /// True to include parameter values; otherwise, false.
        /// </param>
        /// <returns>
        /// The <see cref="FilterMetadata"/>.
        /// </returns>
        public FilterMetadata CreateFilterMetadata(IFilterInfo filter, bool includeParameters, bool includeParameterValues)
        {
            var layoutId = filter.DefaultLayoutId > 0 ? (int?)filter.DefaultLayoutId : null;
            var filterMetadata = new FilterMetadata { Id = filter.Id, Name = filter.Name, LayoutId = layoutId };

            if (includeParameters)
            {
                var processMetadata = ProcessMetadataRepository.GetProcessMetadata(filter.ProcessSystemName);
                var filterDescriptor = FilterDescriptorFactory.CreateFilterFromJSON(filter.FilterDefinition);

                filterMetadata.Parameters.AddRange(
                    filterDescriptor.GetUdpDescriptors()
                                    .Select(x => x.Value)
                                    .OfType<FilterValue>()
                                    .Select(filterValue => CreateParameterMetadata(processMetadata, filterValue, includeParameterValues)));
            }

            return filterMetadata;
        }
Ejemplo n.º 15
0
 ///<summary>
 ///根据模型生成 Filter 表达式
 ///</summary>
 protected List <Expression <Func <TEntity, bool> > > BuildFilterInfo <TEntity>(IViewModel vm, IFilterInfo filterInfo)
 {
     //将条件按照列组合起来
     if (filterInfo.Filters != null && filterInfo.Filters.Count() > 0)
     {
         return(BuildWhereExpression <TEntity>(vm, filterInfo.Filters));
     }
     return(null);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// Creates filter metadata.
 /// </summary>
 /// <param name="filter">
 /// The filter.
 /// </param>
 /// <param name="includeParameters">
 /// True to include parameter metadata; otherwise, false.
 /// </param>
 /// <param name="includeParameterValues">
 /// True to include parameter values; otherwise, false.
 /// </param>
 /// <returns>
 /// The <see cref="FilterMetadata"/>.
 /// </returns>
 public FilterMetadata CreateFilterMetadata(IFilterInfo filter, bool includeParameters, bool includeParameterValues)
 {
     return FilterMetadataFactory.CreateFilterMetadata(filter, includeParameters, includeParameterValues);
 }
        public BaseCollectionExistsInFilter(Expression <Func <T, ICollection <TCollection> > > expression, IFilterInfo filter)
        {
            this.Connector = Connector.And;
            this.Operation = filter.Operation;
            string name = expression.ToString().Split('.')[1] + $"[{filter.PropertyName}]";

            this.FilterInfos = new List <IFilterInfo>
            {
                new FilterInfo <TPropertyType>(name, this.Operation, filter.Value)
            };
            this.IsFilterEnable = filter.Value != null;
        }
Ejemplo n.º 18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FilterViewModel"/> class.
 /// </summary>
 /// <param name="filterInfo">The filter information.</param>
 public FilterViewModel(IFilterInfo filterInfo)
 {
     _name = filterInfo.Name;
     Id = filterInfo.Id;
     _originalFilterDefinitions = filterInfo.FilterDefinition;
 }