Skip to content

Commit

Permalink
XMLA driver now reads member corresponding to each measure, so that i…
Browse files Browse the repository at this point in the history
…t can sort by ordinal.

git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@71 c6a108a4-781c-0410-a6c6-c2d559e19af0
  • Loading branch information
julianhyde committed Feb 5, 2008
1 parent 0582677 commit 82b4b82
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
24 changes: 22 additions & 2 deletions src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -805,7 +805,8 @@ public void handle(Element row, Context context, List<XmlaOlap4jLevel> list) {
}

static class MeasureHandler extends HandlerImpl<XmlaOlap4jMeasure> {
public void handle(Element row, Context context, List<XmlaOlap4jMeasure> list) {
public void handle(Element row, Context context, List<XmlaOlap4jMeasure> list)
throws OlapException {
/*
Example:
Expand Down Expand Up @@ -845,11 +846,30 @@ public void handle(Element row, Context context, List<XmlaOlap4jMeasure> list) {
(XmlaOlap4jLevel)
context.getCube(row).getHierarchies().get("Measures")
.getLevels().get(0);

// Every measure is a member. MDSCHEMA_MEASURES does not return all
// properties of measures, so lookup the corresponding member. In
// particular, we need the ordinal.
if (list.isEmpty()) {
// First call this method, ask for all members of the measures
// level. This should ensures that we get all members in one
// round trip.
final List<Member> measureMembers = measuresLevel.getMembers();
Olap4jUtil.discard(measureMembers);
}
Member member =
context.getCube(row).getMetadataReader().lookupMemberByUniqueName(
measureUniqueName);
int ordinal = -1;
if (member != null) {
ordinal = member.getOrdinal();
}

list.add(
new XmlaOlap4jMeasure(
measuresLevel, measureUniqueName, measureName,
measureCaption, description, null, measureAggregator,
datatype, measureIsVisible));
datatype, measureIsVisible, ordinal));
}

public void sortList(List<XmlaOlap4jMeasure> list) {
Expand Down
5 changes: 3 additions & 2 deletions src/org/olap4j/driver/xmla/XmlaOlap4jMeasure.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@ class XmlaOlap4jMeasure
String parentMemberUniqueName,
Aggregator aggregator,
Datatype datatype,
boolean visible)
boolean visible,
int ordinal)
{
super(
olap4jLevel, uniqueName, name, caption, description,
parentMemberUniqueName, Type.MEASURE, 0, -1);
parentMemberUniqueName, Type.MEASURE, 0, ordinal);
this.aggregator = aggregator;
this.datatype = datatype;
this.visible = visible;
Expand Down

0 comments on commit 82b4b82

Please sign in to comment.