コード例 #1
0
        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);
        }
コード例 #2
0
 public static MdxMovAvg MovAvg(string dateDimension, IMdxElement measure, int offsetDays)
 {
     return(new MdxMovAvg(
                new MdxHierarchy(dateDimension).CurrentMember(),
                measure,
                offsetDays));
 }
コード例 #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);
        }
コード例 #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);
        }
コード例 #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;
                }
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
ファイル: MdxAvg.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxAvg(IMdxElement dimension, IMdxElement measure)
 {
     _dimension = dimension;
     _measure   = measure;
 }
コード例 #8
0
ファイル: MdxMovAvg.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxMovAvg(IMdxElement mdxElement, IMdxElement measure, int offset)
 {
     _mdxElement = mdxElement;
     _measure    = measure;
     _offset     = offset;
 }
コード例 #9
0
 public static bool Remove(this IMdxElement mdxElement, params IMdxElement[] deleteNodes)
 {
     return(Remove(mdxElement, new HashSet <IMdxElement>(deleteNodes)));
 }
コード例 #10
0
 public MdxSubtraction(IMdxElement firstMeasure, IMdxElement secondMeasure)
 {
     _firstMeasure  = firstMeasure;
     _secondMeasure = secondMeasure;
 }
コード例 #11
0
 public void ReplaceChild(string name, IMdxElement newChildren)
 {
     throw new System.NotImplementedException();
 }
コード例 #12
0
ファイル: MdxMember.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxMember(string name, MdxMeasureElement asMemberMember)
 {
     _name     = name;
     _asMember = asMemberMember;
 }
コード例 #13
0
ファイル: MdxRound.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxRound(IMdxElement numeratorMeasure, int digitsCount)
 {
     _numeratorMeasure = numeratorMeasure;
     _digitsCount      = digitsCount;
 }
コード例 #14
0
ファイル: MdxRowElement.cs プロジェクト: flipworldit/Olap.Mdx
 public void RemoveChild(IMdxElement child)
 {
     _rows.Remove(child);
 }
コード例 #15
0
ファイル: MdxSubset.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxSubset(IMdxElement mdxElement, int start, int count)
 {
     _count      = count;
     _start      = start;
     _mdxElement = mdxElement;
 }
コード例 #16
0
 public MdxMeasureIsNullElement(IMdxElement measure)
 {
     _measure = measure;
 }
コード例 #17
0
 public MdxMultiplyNumber(IMdxElement measure, decimal number)
 {
     _measure = measure;
     _number  = number;
 }
コード例 #18
0
ファイル: MdxAvg.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxAvg(IMdxElement dimension, MdxMeasureElement measure)
     : this(dimension, (IMdxElement)measure)
 {
 }
コード例 #19
0
 public void RemoveChild(IMdxElement child)
 {
     _mdxBuilders.Remove(child);
 }
コード例 #20
0
 public MdxSet(string name, IMdxElement asMemberMember)
 {
     _name     = name;
     _asMember = asMemberMember;
 }
コード例 #21
0
 public MdxSum(IMdxElement mdxElement, IMdxElement measure)
 {
     _mdxElement = mdxElement;
     _measure    = measure;
 }
コード例 #22
0
 public void RemoveChild(IMdxElement child)
 {
     _measures.Remove(child);
 }
コード例 #23
0
ファイル: MdxPrirost.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxPrirost(IMdxElement mdxElement, IMdxElement measure)
 {
     _mdxElement = mdxElement;
     _measure    = measure;
 }
コード例 #24
0
 public MdxSum(IMdxElement mdxElement, MdxMeasureElement measure)
     : this(mdxElement, (IMdxElement)measure)
 {
 }
コード例 #25
0
 public MdxTopCountElement(IMdxElement setExpression, int count, IMdxElement measure = null)
 {
     _setExpression = setExpression;
     _measure       = measure;
     _count         = count;
 }
コード例 #26
0
ファイル: MdxDivide.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxDivide(IMdxElement numeratorMeasure, IMdxElement denominatorMeasure)
 {
     _numeratorMeasure   = numeratorMeasure;
     _denominatorMeasure = denominatorMeasure;
 }
コード例 #27
0
ファイル: MdxIif.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxIif(IMdxElement iifExpression, IMdxElement trueValue, IMdxElement falseValue)
 {
     _iifExpression = iifExpression;
     _trueValue     = trueValue;
     _falseValue    = falseValue;
 }
コード例 #28
0
ファイル: MdxDivide.cs プロジェクト: flipworldit/Olap.Mdx
 public MdxDivide(MdxMeasureElement numeratorMeasure, MdxMeasureElement denominatorMeasure, double defaultResult = 0)
 {
     _numeratorMeasure   = numeratorMeasure;
     _denominatorMeasure = denominatorMeasure;
     _defaultResult      = defaultResult;
 }
コード例 #29
0
ファイル: Round.cs プロジェクト: flipworldit/Olap.Mdx
 public static MdxRound By2(IMdxElement numeratorMeasure)
 {
     return(new MdxRound(
                numeratorMeasure,
                2));
 }
コード例 #30
0
 public MdxFilterElement(IMdxElement mdxSetExpression, IMdxElement mdxLogicalExpression)
 {
     _mdxSetExpression     = mdxSetExpression;
     _mdxLogicalExpression = mdxLogicalExpression;
 }