BalticAmadeus.FluentMdx.MdxExpression.GetStringExpression C# (CSharp) Method

GetStringExpression() protected method

protected GetStringExpression ( ) : string
return string
        protected override string GetStringExpression()
        {
            var sb = new StringBuilder();

            if (_isNegative)
                sb.Append("-(");

            if (_isNot)
                sb.Append("NOT (");

            var operandsEnumerator = _operands.GetEnumerator();
            if (!operandsEnumerator.MoveNext())
                throw new InvalidOperationException("Expression must have at least one operand!");

            if (operandsEnumerator.Current is MdxExpression)
                sb.Append(string.Format("({0})", operandsEnumerator.Current));
            else
                sb.Append(operandsEnumerator.Current);

            foreach (var op in _operators)
            {
                sb.Append(" ");
                sb.Append(op);
                sb.Append(" ");

                if (!operandsEnumerator.MoveNext())
                    throw new InvalidOperationException("Expression expects more operands that specified!");

                if (operandsEnumerator.Current is MdxExpression)
                    sb.Append(string.Format("({0})", operandsEnumerator.Current));
                else
                    sb.Append(operandsEnumerator.Current);
            }

            if (_isNegative)
                sb.Append(")");

            if (_isNot)
                sb.Append(")");

            return sb.ToString();
        }