Skip to content

Commit

Permalink
MONDRIAN:MDXQueryServlet cannot handle 1-dimensional queries. Refer t…
Browse files Browse the repository at this point in the history
…o the BUG 733049

[git-p4: depot-paths = "//open/mondrian/": change = 703]
  • Loading branch information
ebengtso committed Aug 14, 2003
1 parent c40507c commit 83c2ce1
Showing 1 changed file with 26 additions and 10 deletions.
36 changes: 26 additions & 10 deletions src/main/mondrian/web/servlet/MDXQueryServlet.java
Expand Up @@ -12,17 +12,25 @@

package mondrian.web.servlet;

import mondrian.olap.*;
import mondrian.web.taglib.ResultCache;
import mondrian.xom.StringEscaper;
import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

import mondrian.olap.Cell;
import mondrian.olap.DriverManager;
import mondrian.olap.Member;
import mondrian.olap.MondrianProperties;
import mondrian.olap.Position;
import mondrian.olap.Query;
import mondrian.olap.Result;
import mondrian.olap.Util;
import mondrian.web.taglib.ResultCache;
import mondrian.xom.StringEscaper;

/**
* <code>MDXQueryServlet</code> is a servlet which receives MDX queries,
Expand Down Expand Up @@ -76,20 +84,28 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re
mdxConnection = DriverManager.getConnection(connectString, getServletContext(), false);
Query q = mdxConnection.parseQuery(queryString);
Result result = mdxConnection.execute(q);
/*
if (result.getAxes().length != 2) {
throw Util.newError("Can only handle queries with 2 axes; this query has " +
result.getAxes().length + "axes");
}
*/
Position slicers[] = result.getSlicerAxis().positions;
html.append("<table class='resulttable' cellspacing=1 border=0>");
final String nl = System.getProperty("line.separator");
html.append(nl);

final Position[] columns = result.getAxes()[0].positions,
rows = result.getAxes()[1].positions;
final int columnWidth = columns.length == 1 ? 0 : columns[0].members.length,
rowWidth = rows.length == 1 ? 0 : rows[0].members.length;

Position[] columns = result.getAxes()[0].positions;
Position[] rows = null;
if( result.getAxes().length == 2 )
rows = result.getAxes()[1].positions;

int columnWidth = columns[0].members.length;
//int columnWidth = columns.length == 1 ? 0 : columns[0].members.length;
int rowWidth = 0;
if( result.getAxes().length == 2 )
rowWidth = result.getAxes()[1].positions[0].members.length;

for (int j=0; j<columnWidth; j++) {
if (j == 0) {
// Print the top-left cell, and fill it with slicer members.
Expand Down

0 comments on commit 83c2ce1

Please sign in to comment.