public FltGroupExprData(eAndOrJoin andOr, params FilterExpressionData[] filters)
 {
     this.AndOr = andOr;
     FilterExpressions = new List<FilterExpressionData>();
     foreach (FilterExpressionData flt in filters)
     {
         if(flt!=null)
             FilterExpressions.Add(flt);
     }
 }
Example #2
0
        private static FilterExpressionData fromXmlGroup(XElement xml)
        {
            eAndOrJoin       andor = xml.AttributeAsString("Operator").ToEnum <eAndOrJoin>(eAndOrJoin.And);
            FltGroupExprData flt   = new FltGroupExprData(andor);

            flt.Negate = xml.AttributeAsBool("Negate", false);
            foreach (var sub in xml.Elements())
            {
                flt.FilterExpressions.Add(FromXml(sub));
            }
            return(flt);
        }
Example #3
0
 public FltGroupExprData(eAndOrJoin andOr, params FilterExpressionData[] filters)
 {
     this.AndOr        = andOr;
     FilterExpressions = new List <FilterExpressionData>();
     foreach (FilterExpressionData flt in filters)
     {
         if (flt != null)
         {
             FilterExpressions.Add(flt);
         }
     }
 }
Example #4
0
        public static FilterExpressionData JoinFilters(eAndOrJoin andOrJoin, params FilterExpressionData[] filters)
        {
            List <FilterExpressionData> lFilters = filters.Distinct <FilterExpressionData>().ToList <FilterExpressionData>();

            lFilters.RemoveAll(item => item == null);
            if (lFilters.Count == 0)
            {
                return(new FltGroupExprData(andOrJoin)); //return empty and group filter
            }
            if (lFilters.Count == 1)
            {
                return(lFilters[0].Clone()); //return the only provided filter
            }
            FltGroupExprData groupFilter = null;

            foreach (var flt in lFilters)//check if in collection already exist an and filter
            {
                if (flt is FltGroupExprData)
                {
                    groupFilter = flt as FltGroupExprData;
                    if (groupFilter.AndOr == andOrJoin)
                    {
                        break;
                    }
                    else
                    {
                        groupFilter = null;
                    }
                }
            }
            if (groupFilter == null)
            {
                return(Filter.And(new FltGroupExprData(andOrJoin,
                                                       lFilters.ToArray())));
            }
            else //if yes, add to him the rest expression and return it.
            {
                lFilters.Remove(groupFilter);
                groupFilter = groupFilter.Clone() as FltGroupExprData;
                foreach (var flt in lFilters)
                {
                    if (!groupFilter.FilterExpressions.Contains(flt))
                    {
                        groupFilter.FilterExpressions.Add(flt.Clone());
                    }
                }
                return(groupFilter);
            }
        }
Example #5
0
        public static FilterExpressionData GroupEqual(eAndOrJoin join, params string[] fieldValues)
        {
            var    flt   = new FltGroupExprData(join);
            string field = "";

            foreach (var fv in fieldValues)
            {
                if (field == "")
                {
                    field = fv;
                }
                else
                {
                    flt.FilterExpressions.Add(Filter.Equal(field, fv));
                    field = "";
                }
            }
            return(flt);
        }
Example #6
0
 /// <summary>
 /// create a group filter that will parse by query builder to a "filter1 [andOr] filter2 [andOr] filter3...." clause
 /// </summary>
 /// <param name="field"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public static FilterExpressionData Group(eAndOrJoin andOr, params FilterExpressionData[] filters)
 {
     return(new FltGroupExprData(andOr, filters));
 }
        public static FilterExpressionData JoinFilters(eAndOrJoin andOrJoin, params FilterExpressionData[] filters)
        {
            List<FilterExpressionData> lFilters = filters.Distinct<FilterExpressionData>().ToList<FilterExpressionData>();
            lFilters.RemoveAll(item => item == null);
            if (lFilters.Count == 0)
                return new FltGroupExprData(andOrJoin); //return empty and group filter
            if (lFilters.Count == 1)
                return lFilters[0].Clone(); //return the only provided filter
            FltGroupExprData groupFilter = null;

            foreach (var flt in lFilters)//check if in collection already exist an and filter
            {
                if (flt is FltGroupExprData)
                {
                    groupFilter = flt as FltGroupExprData;
                    if (groupFilter.AndOr == andOrJoin)
                        break;
                    else
                        groupFilter = null;
                }
            }
            if (groupFilter == null)
                return Filter.And(new FltGroupExprData(andOrJoin,
                    lFilters.ToArray()));
            else //if yes, add to him the rest expression and return it.
            {
                lFilters.Remove(groupFilter);
                groupFilter = groupFilter.Clone() as FltGroupExprData;
                foreach (var flt in lFilters)
                {
                    if (!groupFilter.FilterExpressions.Contains(flt))
                        groupFilter.FilterExpressions.Add(flt.Clone());
                }
                return groupFilter;
            }
        }
        public static FilterExpressionData GroupEqual(eAndOrJoin join, params string[] fieldValues)
        {
            var flt = new FltGroupExprData(join);
            string field = "";
            foreach (var fv in fieldValues)
            {
                if (field == "")
                {
                    field = fv;

                }
                else
                {
                    flt.FilterExpressions.Add(Filter.Equal(field, fv));
                    field = "";
                }
            }
            return flt;
        }
 /// <summary>
 /// create a group filter that will parse by query builder to a "filter1 [andOr] filter2 [andOr] filter3...." clause
 /// </summary>
 /// <param name="field"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public static FilterExpressionData Group(eAndOrJoin andOr, params FilterExpressionData[] filters)
 {
     return new FltGroupExprData(andOr, filters);
 }
 public FltFlatGroupExprData(eAndOrJoin andOr)
 {
     FieldFilters = new Dictionary<string, FltAtomExprData>();
     this.AndOr = andOr;
 }
 public FltFlatGroupExprData(eAndOrJoin andOr)
 {
     FieldFilters = new Dictionary <string, FltAtomExprData>();
     this.AndOr   = andOr;
 }
Example #12
0
 public FltGroupExprData(eAndOrJoin andOr)
 {
     this.AndOr        = andOr;
     FilterExpressions = new List <FilterExpressionData>();
 }
 public FltGroupExprData(eAndOrJoin andOr)
 {
     this.AndOr = andOr;
     FilterExpressions = new List<FilterExpressionData>();
 }