public MdxSelectStatement CreateWrappedStatement(MdxSelectStatement original)
        {
            if (original == null)
            {
                return(null);
            }

            try
            {
                MdxSelectStatement select = (MdxSelectStatement)original.Clone();

                if (select.Axes.Count <= 0)
                {
                    return(select);
                }

                var axis0_actions = ColumnsActionChain;
                if (select.Axes[0].Name.ToLower() == "1" || select.Axes[0].Name.ToLower() == "rows")
                {
                    axis0_actions = RowsActionChain;
                }

                select.Axes[0] = axis0_actions.GetWrappedAxis(select.Axes[0] /*, this.ConcretizeMdxObject*/);

                if (select.Axes.Count <= 1)
                {
                    return(select);
                }

                var axis1_actions = RowsActionChain;
                if (select.Axes[1].Name.ToLower() == "0" || select.Axes[1].Name.ToLower() == "columns")
                {
                    axis1_actions = ColumnsActionChain;
                }

                select.Axes[1] = axis1_actions.GetWrappedAxis(select.Axes[1] /*, this.ConcretizeMdxObject*/);

                // Переворот осей
                if (RotateAxes)
                {
                    if (select.Axes.Count > 1)
                    {
                        var axis0 = select.Axes[0];
                        select.Axes[0]      = select.Axes[1];
                        select.Axes[0].Name = "0";
                        select.Axes[1]      = axis0;
                        axis0.Name          = "1";
                    }
                }
                return(select);
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #2
0
        private MdxSelectStatement CreateWrappedStatement()
        {
            if (!string.IsNullOrEmpty(Query) && m_OriginalStatement == null)
            {
                using (MdxDomProvider provider = MdxDomProvider.CreateProvider())
                {
                    m_OriginalStatement = provider.ParseMdx(this.Query) as MdxSelectStatement;
                }
            }

            MdxSelectStatement select = null;

            try
            {
                if (m_OriginalStatement != null)
                {
                    select = m_OriginalStatement.Clone() as MdxSelectStatement; // (MdxSelectStatement)Serializer.Deserialize(Serializer.Serialize(m_OriginalStatement));
                    if (select != null)
                    {
                        if (History.CurrentHistoryItem != null)
                        {
                            if (select.Axes.Count > 0)
                            {
                                select.Axes[0] = GetWrappedAxis(select.Axes[0], History.CurrentHistoryItem.ColumnsActionChain);
                                if (select.Axes.Count > 1)
                                {
                                    select.Axes[1] = GetWrappedAxis(select.Axes[1], History.CurrentHistoryItem.RowsActionChain);
                                }

                                // Переворот осей
                                if (RotateAxes)
                                {
                                    if (select.Axes.Count > 1)
                                    {
                                        MdxExpression axis0_expression = select.Axes[0].Expression;
                                        select.Axes[0].Expression = select.Axes[1].Expression;
                                        select.Axes[1].Expression = axis0_expression;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(select);
        }
        private String MoveAxes(String originalQuery)
        {
            string             result    = String.Empty;
            MdxSelectStatement statement = GetMoveAxesStatement(originalQuery);

            if (statement != null)
            {
                using (MdxDomProvider provider = MdxDomProvider.CreateProvider())
                {
                    StringBuilder sb = new StringBuilder();
                    provider.GenerateMdxFromDom(statement, sb, new MdxGeneratorOptions());
                    result = sb.ToString();
                }
            }
            return(result);
        }
Пример #4
0
        private String MoveAxes(String originalQuery)
        {
            string result = String.Empty;

            if (!String.IsNullOrEmpty(originalQuery))
            {
                using (MdxDomProvider provider = MdxDomProvider.CreateProvider())
                {
                    MdxSelectStatement statement = provider.ParseMdx(originalQuery) as MdxSelectStatement;
                    if (statement != null)
                    {
                        if (statement.Where == null)
                        {
                            statement.Where = new MdxWhereClause();
                        }

                        if (statement.Axes != null && statement.Axes.Count > 2)
                        {
                            IList <MdxExpression> expr = new List <MdxExpression>();
                            if (statement.Where.Expression != null)
                            {
                                expr.Add(statement.Where.Expression);
                            }

                            for (int i = 2; i < statement.Axes.Count; i++)
                            {
                                expr.Add(statement.Axes[i].Expression);
                            }

                            statement.Where.Expression = new MdxTupleExpression(expr);
                            while (statement.Axes.Count > 2)
                            {
                                statement.Axes.RemoveAt(2);
                            }
                        }

                        StringBuilder sb = new StringBuilder();
                        provider.GenerateMdxFromDom(statement, sb, new MdxGeneratorOptions());
                        result = sb.ToString();
                    }
                }
            }
            return(result);
        }
        private MdxSelectStatement GetMoveAxesStatement(String originalQuery)
        {
            MdxSelectStatement statement = null;

            if (!String.IsNullOrEmpty(originalQuery))
            {
                using (MdxDomProvider provider = MdxDomProvider.CreateProvider())
                {
                    statement = provider.ParseMdx(originalQuery) as MdxSelectStatement;
                    if (statement != null)
                    {
                        if (statement.Where == null)
                        {
                            statement.Where = new MdxWhereClause();
                        }

                        if (statement.Axes != null && statement.Axes.Count > 2)
                        {
                            IList <MdxExpression> expr = new List <MdxExpression>();
                            if (statement.Where.Expression != null)
                            {
                                expr.Add(statement.Where.Expression);
                            }

                            for (int i = 2; i < statement.Axes.Count; i++)
                            {
                                expr.Add(statement.Axes[i].Expression);
                            }

                            statement.Where.Expression = new MdxTupleExpression(expr);
                            while (statement.Axes.Count > 2)
                            {
                                statement.Axes.RemoveAt(2);
                            }
                        }
                    }
                }
            }
            return(statement);
        }
Пример #6
0
        private MdxSelectStatement CreateWrappedStatement()
        {
            if (m_OriginalStatement == null)
            {
                return(null);
            }

            try
            {
                MdxSelectStatement select = (MdxSelectStatement)m_OriginalStatement.Clone();
                if (this.CurrentHistoryItem == null)
                {
                    return(select);
                }

                return(this.CurrentHistoryItem.CreateWrappedStatement(select));
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #7
0
    // $ANTLR end "select_statement"


    // $ANTLR start "select_statement_subcube"
    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:85:1: select_statement_subcube returns [MdxSelectStatement value] : SELECT ( '*' | a1= axis_specification ( ',' a2= axis_specification )* )? FROM c= cube_specification ( WHERE t= condition )? ;
    public MdxSelectStatement select_statement_subcube() // throws RecognitionException [1]
    {   

        MdxSelectStatement value = default(MdxSelectStatement);

        MdxAxis a1 = default(MdxAxis);

        MdxAxis a2 = default(MdxAxis);

        MdxObject c = default(MdxObject);

        MdxExpression t = default(MdxExpression);


        try 
    	{
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:86:2: ( SELECT ( '*' | a1= axis_specification ( ',' a2= axis_specification )* )? FROM c= cube_specification ( WHERE t= condition )? )
            // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:86:4: SELECT ( '*' | a1= axis_specification ( ',' a2= axis_specification )* )? FROM c= cube_specification ( WHERE t= condition )?
            {
            	Match(input,SELECT,FOLLOW_SELECT_in_select_statement_subcube445); 
            	 value = new MdxSelectStatement();  
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:87:4: ( '*' | a1= axis_specification ( ',' a2= axis_specification )* )?
            	int alt12 = 3;
            	int LA12_0 = input.LA(1);

            	if ( (LA12_0 == 59) )
            	{
            	    alt12 = 1;
            	}
            	else if ( (LA12_0 == PROPERTIES || LA12_0 == NON || LA12_0 == DIMENSION || LA12_0 == INTEGER || LA12_0 == RANET_EXPRESSION || LA12_0 == NOT || (LA12_0 >= STRING && LA12_0 <= CASE) || (LA12_0 >= ID && LA12_0 <= QUOTED_ID) || LA12_0 == 61 || (LA12_0 >= 68 && LA12_0 <= 69) || LA12_0 == 74) )
            	{
            	    alt12 = 2;
            	}
            	switch (alt12) 
            	{
            	    case 1 :
            	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:87:6: '*'
            	        {
            	        	Match(input,59,FOLLOW_59_in_select_statement_subcube454); 

            	        }
            	        break;
            	    case 2 :
            	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:88:6: a1= axis_specification ( ',' a2= axis_specification )*
            	        {
            	        	PushFollow(FOLLOW_axis_specification_in_select_statement_subcube463);
            	        	a1 = axis_specification();
            	        	state.followingStackPointer--;

            	        	 value.Axes.Add(a1); 
            	        	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:89:6: ( ',' a2= axis_specification )*
            	        	do 
            	        	{
            	        	    int alt11 = 2;
            	        	    int LA11_0 = input.LA(1);

            	        	    if ( (LA11_0 == 58) )
            	        	    {
            	        	        alt11 = 1;
            	        	    }


            	        	    switch (alt11) 
            	        		{
            	        			case 1 :
            	        			    // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:89:8: ',' a2= axis_specification
            	        			    {
            	        			    	Match(input,58,FOLLOW_58_in_select_statement_subcube474); 
            	        			    	PushFollow(FOLLOW_axis_specification_in_select_statement_subcube478);
            	        			    	a2 = axis_specification();
            	        			    	state.followingStackPointer--;

            	        			    	 value.Axes.Add(a2); 

            	        			    }
            	        			    break;

            	        			default:
            	        			    goto loop11;
            	        	    }
            	        	} while (true);

            	        	loop11:
            	        		;	// Stops C# compiler whining that label 'loop11' has no statements


            	        }
            	        break;

            	}

            	Match(input,FROM,FOLLOW_FROM_in_select_statement_subcube494); 
            	PushFollow(FOLLOW_cube_specification_in_select_statement_subcube498);
            	c = cube_specification();
            	state.followingStackPointer--;

            	 value.CubeSpecification=c; 
            	// D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:92:4: ( WHERE t= condition )?
            	int alt13 = 2;
            	int LA13_0 = input.LA(1);

            	if ( (LA13_0 == WHERE) )
            	{
            	    alt13 = 1;
            	}
            	switch (alt13) 
            	{
            	    case 1 :
            	        // D:\\tfs\\Ranet.UILibrary.OLAP4\\trunk\\UILibrary.Olap\\Ranet.Olap.Mdx\\Compiler\\Parser\\mdx.g:92:6: WHERE t= condition
            	        {
            	        	Match(input,WHERE,FOLLOW_WHERE_in_select_statement_subcube507); 
            	        	PushFollow(FOLLOW_condition_in_select_statement_subcube511);
            	        	t = condition();
            	        	state.followingStackPointer--;

            	        	 value.Where=new MdxWhereClause(t); 

            	        }
            	        break;

            	}


            }

        }
        catch (RecognitionException re) 
    	{
            ReportError(re);
            Recover(input,re);
        }
        finally 
    	{
        }
        return value;
    }