public XMLADimensionInfo[] requestDimensions(XMLAClient xmlaClient) { dimensionInfos.clear(); try { XMLARestrictions rest = setRestrictions(); XMLAProperties prop = new XMLAProperties(); String connectionName = xmlaClient.getConnections()[0].getName(); prop.setDataSourceInfo(connectionName); prop.setCatalog(cube.getDatabase().getId()); Document result = xmlaClient.getDimensionList(rest, prop); NodeList nl = result.getElementsByTagName("row"); if (nl == null || nl.getLength() == 0) { return new XMLADimensionInfo[0]; } parseXMLANodeList(nl, connectionName, xmlaClient); } catch (Exception e) { e.printStackTrace(); return new XMLADimensionInfo[0]; } return dimensionInfos.toArray(new XMLADimensionInfo[0]); }
protected void parseResult( HashMap<String, String> result, String connectionName, XMLAClient xmlaClient) { String name = result.get(ITEM_DIMENSION_CAPTION); String id = result.get(ITEM_DIMENSION_UNIQUE_NAME); XMLADimensionInfo dimInfo = new XMLADimensionInfo( xmlaClient, name, id, (XMLADatabaseInfo) cube.getDatabase(), cube.getId(), connection); dimInfo.setDimensionUniqueName(id); try { dimInfo.setElementCount(Integer.parseInt(result.get(ITEM_DIMENSION_CARDINALITY))); } catch (Exception e) { } try { int type = Integer.parseInt(result.get(ITEM_DIMENSION_TYPE)); dimInfo.setXmlaType( type == 2 ? XMLADimensionInfo.XMLA_TYPE_MEASURES : XMLADimensionInfo.XMLA_TYPE_NORMAL); } catch (Exception e) { } String ourId = XMLADimensionInfo.getIDString(result.get(ITEM_DEFAULT_HIERARCHY), cube.getId()); HierarchyInfo hierarchy = connection.getHierarchy(dimInfo, ourId); if (hierarchy == null) { HierarchyInfo[] allHierarchies = connection.getHierarchies(dimInfo); if (allHierarchies != null) { for (HierarchyInfo hier : allHierarchies) { if (hier != null) { hierarchy = hier; break; } } } } dimInfo.setDefaultHierarchy((XMLAHierarchyInfo) hierarchy); dimInfo.setHierarchyUniqueName(hierarchy.getId()); dimensionInfos.add(dimInfo); }