private static bool Remove(IMdxElement mdxElement, HashSet <IMdxElement> deleteNodes)
        {
            if (deleteNodes.Contains(mdxElement))
            {
                return(true);
            }

            var result = false;

            var children = mdxElement
                           .GetChildren()
                           .ToArray();

            foreach (var child in children)
            {
                var removeFromChild = Remove(child, deleteNodes);

                if (removeFromChild)
                {
                    var mdxCollection = mdxElement as IMdxCollectionElements;

                    if (mdxCollection != null)
                    {
                        mdxCollection.RemoveChild(child);

                        removeFromChild = mdxCollection.IsEmpty();
                    }
                }

                result = removeFromChild || result;
            }

            return(result);
        }
Exemple #2
0
 public static MdxMovAvg MovAvg(string dateDimension, IMdxElement measure, int offsetDays)
 {
     return(new MdxMovAvg(
                new MdxHierarchy(dateDimension).CurrentMember(),
                measure,
                offsetDays));
 }
Exemple #3
0
        private static List <MdxHierarchy> GetHierarhies(IMdxElement rows)
        {
            var allHierarchies = LinqExtendedDescendans.DescendansAllLayerBFS(
                rows,
                element => element is MdxHierarchy,
                element => element.GetChildren())
                                 .Cast <MdxHierarchy>()
                                 .ToList();

            return(allHierarchies);
        }
Exemple #4
0
        //TODO: сделать internal

        private static Dictionary <string, List <IMdxElement> > GetWhereValues(IMdxElement whereMdx)
        {
            var allValues = LinqExtendedDescendans.DescendansAllLayerBFS(
                whereMdx,
                element => element.GetType() == typeof(MdxValueElement),
                element => element.GetChildren());

            var valuesByNames = allValues
                                .GroupBy(el => ((MdxValueElement)el).Name)
                                .ToDictionary(elements => elements.Key, elements => elements.ToList());

            return(valuesByNames);
        }
Exemple #5
0
        public void ReplaceChild(string name, IMdxElement newChildren)
        {
            for (var i = 0; i < _measures.Count; i++)
            {
                var measure = _measures[i];

                if (measure.GetType() != typeof(MdxHierarchy))
                {
                    continue;
                }

                if (((MdxHierarchy)measure).Name == name)
                {
                    _measures[i] = newChildren;
                }
            }
        }
        private static List <MdxValueElement> GetMdxValueElements(IMdxElement initWhere)
        {
            var wheres = new List <MdxValueElement>();

            if (initWhere.GetType() == typeof(MdxValueElement))
            {
                wheres.Add((MdxValueElement)initWhere);

                return(wheres);
            }

            if (initWhere.GetType() == typeof(TypedMdxElement))
            {
                var initWhereChildren = initWhere.GetChildren()
                                        .Where(el => el.GetType() == typeof(MdxValueElement))
                                        .ToArray();

                wheres.AddRange(initWhereChildren.Cast <MdxValueElement>());
            }
            return(wheres);
        }
Exemple #7
0
 public MdxAvg(IMdxElement dimension, IMdxElement measure)
 {
     _dimension = dimension;
     _measure   = measure;
 }
Exemple #8
0
 public MdxMovAvg(IMdxElement mdxElement, IMdxElement measure, int offset)
 {
     _mdxElement = mdxElement;
     _measure    = measure;
     _offset     = offset;
 }
 public static bool Remove(this IMdxElement mdxElement, params IMdxElement[] deleteNodes)
 {
     return(Remove(mdxElement, new HashSet <IMdxElement>(deleteNodes)));
 }
 public MdxSubtraction(IMdxElement firstMeasure, IMdxElement secondMeasure)
 {
     _firstMeasure  = firstMeasure;
     _secondMeasure = secondMeasure;
 }
Exemple #11
0
 public void ReplaceChild(string name, IMdxElement newChildren)
 {
     throw new System.NotImplementedException();
 }
Exemple #12
0
 public MdxMember(string name, MdxMeasureElement asMemberMember)
 {
     _name     = name;
     _asMember = asMemberMember;
 }
Exemple #13
0
 public MdxRound(IMdxElement numeratorMeasure, int digitsCount)
 {
     _numeratorMeasure = numeratorMeasure;
     _digitsCount      = digitsCount;
 }
Exemple #14
0
 public void RemoveChild(IMdxElement child)
 {
     _rows.Remove(child);
 }
Exemple #15
0
 public MdxSubset(IMdxElement mdxElement, int start, int count)
 {
     _count      = count;
     _start      = start;
     _mdxElement = mdxElement;
 }
 public MdxMeasureIsNullElement(IMdxElement measure)
 {
     _measure = measure;
 }
 public MdxMultiplyNumber(IMdxElement measure, decimal number)
 {
     _measure = measure;
     _number  = number;
 }
Exemple #18
0
 public MdxAvg(IMdxElement dimension, MdxMeasureElement measure)
     : this(dimension, (IMdxElement)measure)
 {
 }
Exemple #19
0
 public void RemoveChild(IMdxElement child)
 {
     _mdxBuilders.Remove(child);
 }
Exemple #20
0
 public MdxSet(string name, IMdxElement asMemberMember)
 {
     _name     = name;
     _asMember = asMemberMember;
 }
Exemple #21
0
 public MdxSum(IMdxElement mdxElement, IMdxElement measure)
 {
     _mdxElement = mdxElement;
     _measure    = measure;
 }
Exemple #22
0
 public void RemoveChild(IMdxElement child)
 {
     _measures.Remove(child);
 }
Exemple #23
0
 public MdxPrirost(IMdxElement mdxElement, IMdxElement measure)
 {
     _mdxElement = mdxElement;
     _measure    = measure;
 }
Exemple #24
0
 public MdxSum(IMdxElement mdxElement, MdxMeasureElement measure)
     : this(mdxElement, (IMdxElement)measure)
 {
 }
Exemple #25
0
 public MdxTopCountElement(IMdxElement setExpression, int count, IMdxElement measure = null)
 {
     _setExpression = setExpression;
     _measure       = measure;
     _count         = count;
 }
Exemple #26
0
 public MdxDivide(IMdxElement numeratorMeasure, IMdxElement denominatorMeasure)
 {
     _numeratorMeasure   = numeratorMeasure;
     _denominatorMeasure = denominatorMeasure;
 }
Exemple #27
0
 public MdxIif(IMdxElement iifExpression, IMdxElement trueValue, IMdxElement falseValue)
 {
     _iifExpression = iifExpression;
     _trueValue     = trueValue;
     _falseValue    = falseValue;
 }
Exemple #28
0
 public MdxDivide(MdxMeasureElement numeratorMeasure, MdxMeasureElement denominatorMeasure, double defaultResult = 0)
 {
     _numeratorMeasure   = numeratorMeasure;
     _denominatorMeasure = denominatorMeasure;
     _defaultResult      = defaultResult;
 }
Exemple #29
0
 public static MdxRound By2(IMdxElement numeratorMeasure)
 {
     return(new MdxRound(
                numeratorMeasure,
                2));
 }
 public MdxFilterElement(IMdxElement mdxSetExpression, IMdxElement mdxLogicalExpression)
 {
     _mdxSetExpression     = mdxSetExpression;
     _mdxLogicalExpression = mdxLogicalExpression;
 }