@@ -48,13 +48,27 @@ abstract class XmlaOlap4jDatabaseMetaData implements OlapDatabaseMetaData {
48
48
this .olap4jConnection = olap4jConnection ;
49
49
}
50
50
51
+ private ResultSet getMetadata (
52
+ XmlaOlap4jConnection .MetadataRequest metadataRequest ,
53
+ Object ... patternValues ) throws OlapException
54
+ {
55
+ return getMetadata (
56
+ metadataRequest ,
57
+ Collections .emptyMap (),
58
+ patternValues );
59
+ }
60
+
51
61
/**
52
62
* Executes a metadata query and returns the result as a JDBC
53
63
* {@link ResultSet}.
54
64
*
55
65
* @param metadataRequest Name of the metadata request. Corresponds to the
56
66
* XMLA method name, e.g. "MDSCHEMA_CUBES"
57
67
*
68
+ * @param overrides Map of metadata columns to forced values. Used
69
+ * to override the value returned by the server for a list of
70
+ * columns.
71
+ *
58
72
* @param patternValues Array of alternating parameter name and value
59
73
* pairs. If the parameter value is null, it is ignored.
60
74
*
@@ -64,6 +78,7 @@ abstract class XmlaOlap4jDatabaseMetaData implements OlapDatabaseMetaData {
64
78
*/
65
79
private ResultSet getMetadata (
66
80
XmlaOlap4jConnection .MetadataRequest metadataRequest ,
81
+ Map <XmlaOlap4jConnection .MetadataColumn , String > overrides ,
67
82
Object ... patternValues ) throws OlapException
68
83
{
69
84
assert patternValues .length % 2 == 0 ;
@@ -132,9 +147,13 @@ private ResultSet getMetadata(
132
147
for (XmlaOlap4jConnection .MetadataColumn column
133
148
: metadataRequest .columns )
134
149
{
135
- final String value =
136
- XmlaOlap4jUtil .stringElement (row , column .xmlaName );
137
- valueList .add (value );
150
+ if (overrides .containsKey (column )) {
151
+ valueList .add (overrides .get (column ));
152
+ } else {
153
+ final String value =
154
+ XmlaOlap4jUtil .stringElement (row , column .xmlaName );
155
+ valueList .add (value );
156
+ }
138
157
}
139
158
rowList .add (valueList );
140
159
}
@@ -1039,8 +1058,17 @@ public ResultSet getCubes(
1039
1058
String cubeNamePattern )
1040
1059
throws OlapException
1041
1060
{
1061
+ // XMLA doesn't support drillthrough so override
1062
+ // whatever the server returns.
1063
+ final Map <XmlaOlap4jConnection .MetadataColumn , String > overrides =
1064
+ new HashMap <XmlaOlap4jConnection .MetadataColumn , String >();
1065
+ overrides .put (
1066
+ XmlaOlap4jConnection .MetadataRequest
1067
+ .MDSCHEMA_CUBES .getColumn ("IS_DRILLTHROUGH_ENABLED" ),
1068
+ "false" );
1042
1069
return getMetadata (
1043
1070
XmlaOlap4jConnection .MetadataRequest .MDSCHEMA_CUBES ,
1071
+ overrides ,
1044
1072
"CATALOG_NAME" , catalog ,
1045
1073
"SCHEMA_NAME" , wildcard (schemaPattern ),
1046
1074
"CUBE_NAME" , wildcard (cubeNamePattern ));
0 commit comments