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; } }
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); }
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); }
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; } }
// $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; }