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); }
public static MdxMovAvg MovAvg(string dateDimension, IMdxElement measure, int offsetDays) { return(new MdxMovAvg( new MdxHierarchy(dateDimension).CurrentMember(), measure, offsetDays)); }
private static List <MdxHierarchy> GetHierarhies(IMdxElement rows) { var allHierarchies = LinqExtendedDescendans.DescendansAllLayerBFS( rows, element => element is MdxHierarchy, element => element.GetChildren()) .Cast <MdxHierarchy>() .ToList(); return(allHierarchies); }
//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); }
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); }
public MdxAvg(IMdxElement dimension, IMdxElement measure) { _dimension = dimension; _measure = measure; }
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; }
public void ReplaceChild(string name, IMdxElement newChildren) { throw new System.NotImplementedException(); }
public MdxMember(string name, MdxMeasureElement asMemberMember) { _name = name; _asMember = asMemberMember; }
public MdxRound(IMdxElement numeratorMeasure, int digitsCount) { _numeratorMeasure = numeratorMeasure; _digitsCount = digitsCount; }
public void RemoveChild(IMdxElement child) { _rows.Remove(child); }
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; }
public MdxAvg(IMdxElement dimension, MdxMeasureElement measure) : this(dimension, (IMdxElement)measure) { }
public void RemoveChild(IMdxElement child) { _mdxBuilders.Remove(child); }
public MdxSet(string name, IMdxElement asMemberMember) { _name = name; _asMember = asMemberMember; }
public MdxSum(IMdxElement mdxElement, IMdxElement measure) { _mdxElement = mdxElement; _measure = measure; }
public void RemoveChild(IMdxElement child) { _measures.Remove(child); }
public MdxPrirost(IMdxElement mdxElement, IMdxElement measure) { _mdxElement = mdxElement; _measure = measure; }
public MdxSum(IMdxElement mdxElement, MdxMeasureElement measure) : this(mdxElement, (IMdxElement)measure) { }
public MdxTopCountElement(IMdxElement setExpression, int count, IMdxElement measure = null) { _setExpression = setExpression; _measure = measure; _count = count; }
public MdxDivide(IMdxElement numeratorMeasure, IMdxElement denominatorMeasure) { _numeratorMeasure = numeratorMeasure; _denominatorMeasure = denominatorMeasure; }
public MdxIif(IMdxElement iifExpression, IMdxElement trueValue, IMdxElement falseValue) { _iifExpression = iifExpression; _trueValue = trueValue; _falseValue = falseValue; }
public MdxDivide(MdxMeasureElement numeratorMeasure, MdxMeasureElement denominatorMeasure, double defaultResult = 0) { _numeratorMeasure = numeratorMeasure; _denominatorMeasure = denominatorMeasure; _defaultResult = defaultResult; }
public static MdxRound By2(IMdxElement numeratorMeasure) { return(new MdxRound( numeratorMeasure, 2)); }
public MdxFilterElement(IMdxElement mdxSetExpression, IMdxElement mdxLogicalExpression) { _mdxSetExpression = mdxSetExpression; _mdxLogicalExpression = mdxLogicalExpression; }