Skip to content

Commit

Permalink
Fix XMLA driver where dimension type=Geography.
Browse files Browse the repository at this point in the history
See issue https://sourceforge.net/forum/message.php?msg_id=7301948 "j.l.AIOOBE 17 with Geography Dimension".


git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@190 c6a108a4-781c-0410-a6c6-c2d559e19af0
  • Loading branch information
julianhyde committed Apr 27, 2009
1 parent fd57914 commit baf3322
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -863,7 +863,7 @@ public void handle(Element row, Context context, List<XmlaOlap4jDimension> list)
final int dimensionType =
integerElement(row, "DIMENSION_TYPE");
final Dimension.Type type =
Dimension.Type.values()[dimensionType];
Dimension.Type.forXmlaOrdinal(dimensionType);
final String defaultHierarchyUniqueName =
stringElement(row, "DEFAULT_HIERARCHY");
list.add(
Expand Down
28 changes: 28 additions & 0 deletions src/org/olap4j/metadata/Dimension.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@

import org.olap4j.OlapException;

import java.util.HashMap;
import java.util.Map;

/**
* An organized hierarchy of categories, known as levels, that describes data
* in a cube.
Expand Down Expand Up @@ -103,6 +106,21 @@ public enum Type {

private final int xmlaOrdinal;

private static final Map<Integer, Type> xmlaOrdinalTypeMap;

static {
Map<Integer, Type> map = new HashMap<Integer, Type>();
for (Type type : values()) {
map.put(type.xmlaOrdinal, type);
}
xmlaOrdinalTypeMap = map;
}

/**
* Creates a Dimension Type.
*
* @param xmlaOrdinal Ordinal code as specified by XMLA
*/
private Type(int xmlaOrdinal) {
this.xmlaOrdinal = xmlaOrdinal;
}
Expand All @@ -118,6 +136,16 @@ private Type(int xmlaOrdinal) {
public final int xmlaOrdinal() {
return xmlaOrdinal;
}

/**
* Returns the type whose XMLA ordinal code is as given.
*
* @param xmlaOrdinal Ordinal code as specified by XMLA
* @return Dimension type, or null
*/
public static Type forXmlaOrdinal(int xmlaOrdinal) {
return xmlaOrdinalTypeMap.get(xmlaOrdinal);
}
}
}

Expand Down

0 comments on commit baf3322

Please sign in to comment.