Exemplo n.º 1
0
  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>();
  }
Exemplo n.º 2
0
  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;
  }
Exemplo n.º 3
0
  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();
    }
  }