public List<SaikuMember> getAllMembers( SaikuCube cube, String dimension, String hierarchy, String level) throws SaikuOlapException { try { Cube nativeCube = getNativeCube(cube); Dimension dim = nativeCube.getDimensions().get(dimension); if (dim != null) { Hierarchy h = dim.getHierarchies().get(hierarchy); if (h == null) { for (Hierarchy hlist : dim.getHierarchies()) { if (hlist.getUniqueName().equals(hierarchy) || hlist.getName().equals(hierarchy)) { h = hlist; } } } if (h != null) { Level l = h.getLevels().get(level); if (l == null) { for (Level lvl : h.getLevels()) { if (lvl.getUniqueName().equals(level) || lvl.getName().equals(level)) { return (ObjectUtil.convertMembers(lvl.getMembers())); } } } else { return (ObjectUtil.convertMembers(l.getMembers())); } } } } catch (OlapException e) { throw new SaikuOlapException("Cannot get all members", e); } return new ArrayList<SaikuMember>(); }
public static Hierarchy getHierarchy(Cube cube, ModelConfig modelConfig, String dimensionName) { List<Dimension> dimensions = cube.getDimensions(); Dimension result = null; for (java.util.Iterator<Dimension> iterator = dimensions.iterator(); iterator.hasNext(); ) { Dimension dimension = iterator.next(); if (dimension.getUniqueName().equals("[" + dimensionName + "]")) { result = dimension; } } if (result == null) { logger.error("Could not find dimension"); throw new SpagoBIEngineRuntimeException("Could not find dimension"); } logger.debug("Found dimension " + result.getUniqueName()); // get Hierarchy Used by dimension NamedList<Hierarchy> hierarchies = result.getHierarchies(); Hierarchy hierarchy = null; if (hierarchies == null || hierarchies.size() == 0) { logger.error("Could not find hierarchies for dimension"); throw new SpagoBIEngineRuntimeException("Could not find hierarchies for dimension"); } else if (hierarchies.size() == 1) { hierarchy = hierarchies.get(0); } else { String hierarchyUsed = modelConfig.getDimensionHierarchyMap().get(dimensionName); hierarchy = hierarchies.get(hierarchyUsed); } return hierarchy; }
public List<SaikuLevel> getAllLevels(SaikuCube cube, String dimension, String hierarchy) throws SaikuOlapException { Cube nativeCube = getNativeCube(cube); Dimension dim = nativeCube.getDimensions().get(dimension); if (dim != null) { Hierarchy h = dim.getHierarchies().get(hierarchy); if (h == null) { for (Hierarchy hlist : dim.getHierarchies()) { if (hlist.getUniqueName().equals(hierarchy) || hlist.getName().equals(hierarchy)) { h = hlist; } } } if (h != null) { List<SaikuLevel> levels = (ObjectUtil.convertLevels(h.getLevels())); return levels; } } return new ArrayList<SaikuLevel>(); }
private void metadataTest(String dsUri, int numberOfDimensions, int numberOfMeasures) { try { // We have to use MDX encoded name String name = URLEncoder.encode(dsUri, "UTF-8"); name = name.replace("%", "XXX"); name = name.replace(".", "YYY"); name = name.replace("-", "ZZZ"); // xmla4js is attaching square brackets automatically // xmla-server is using a set of values for a restriction. Cube cube = olapConnection .getOlapDatabases() .get(0) .getCatalogs() .get(0) .getSchemas() .get(0) .getCubes() .get("[" + name + "]"); // Currently, we have to first query for dimensions. List<Dimension> dimensions = cube.getDimensions(); // Number of dimensions assertEquals(numberOfDimensions, dimensions.size()); for (Dimension dimension : dimensions) { List<Member> members = dimension.getHierarchies().get(0).getLevels().get(0).getMembers(); // Each dimension should have some members assertEquals(true, members.size() >= 1); } List<Measure> measures = cube.getMeasures(); // Number of measures assertEquals(numberOfMeasures, measures.size()); } catch (OlapException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } }