private static String getParameterValue(
     TargetParameter parameter, WhatIfEngineInstance ei, SpagoBICellWrapper cell) {
   if (parameter.isAbsolute()) {
     return parameter.getValue();
   }
   String value = null;
   String dimensionName = parameter.getDimension();
   String hierarchyName = parameter.getHierarchy();
   String levelName = parameter.getLevel();
   String propertyName = parameter.getProperty();
   logger.debug(
       "Looking for dimension "
           + dimensionName
           + ", hierarchy "
           + hierarchyName
           + ", level "
           + levelName
           + ", property "
           + propertyName
           + " ...");
   Hierarchy hierarchy =
       getHierarchy(ei.getSpagoBIPivotModel().getCube(), ei.getModelConfig(), dimensionName);
   Member member = cell.getContextMember(hierarchy);
   logger.debug("Considering context member " + member.getUniqueName());
   logger.debug("Member hierarchy is " + hierarchy.getUniqueName());
   if (hierarchy.getUniqueName().equals(hierarchyName)) {
     if (propertyName == null || propertyName.trim().equals("")) {
       value = getLevelValue(member, levelName);
     } else {
       value = getMemberPropertyValue(member, propertyName);
     }
   }
   return value;
 }
  public void testWithQuery() throws Exception {
    WhatIfEngineInstance ei = getWhatifengineiEngineInstance(getCatalogue());
    SpagoBIPivotModel pivotModel = (SpagoBIPivotModel) ei.getPivotModel();

    SpagoBICellSetWrapper cellSetWrapper = (SpagoBICellSetWrapper) pivotModel.getCellSet();
    SpagoBICellWrapper cellWrapper = (SpagoBICellWrapper) cellSetWrapper.getCell(0);

    cellWrapper.getMembers()[1].setProperty(WhatIfConstants.MEMBER_PROPERTY_LEAF, null);

    EqualPartitioningOnLeafsAllocationAlgorithm ae =
        new EqualPartitioningOnLeafsAllocationAlgorithm(ei);

    Long leafs = ae.getDataManager().getLeafs(cellWrapper.getMembers());

    System.out.println(leafs);
  }
  public static String buildCrossNavigationUrl(
      int targetIndex, SpagoBICellWrapper cellWrapper, WhatIfEngineInstance ei) throws Exception {
    logger.debug("IN");
    SpagoBIPivotModel modelWrapper = ei.getSpagoBIPivotModel();
    Target target = modelWrapper.getCrossNavigation().getTargets().get(targetIndex);
    List<TargetParameter> parameters = target.getParameters();
    StringBuffer buffer =
        new StringBuffer(
            "parent.execCrossNavigation(window.name, '"
                + StringEscapeUtils.escapeJavaScript(target.documentLabel)
                + "', '");
    if (!parameters.isEmpty()) {
      for (int i = 0; i < parameters.size(); i++) {
        TargetParameter aParameter = parameters.get(i);
        String parameterName = aParameter.name;
        String parameterValue = getParameterValue(aParameter, ei, cellWrapper);
        if (parameterValue != null) {
          buffer.append(
              StringEscapeUtils.escapeJavaScript(parameterName + "=" + parameterValue + "&"));
        }
      }
    }

    if (buffer.charAt(buffer.length() - 1) == '&') {
      buffer.deleteCharAt(buffer.length() - 1);
    }
    if (target.customizedView != null) {
      buffer.append("', '" + StringEscapeUtils.escapeJavaScript(target.customizedView) + "'");
    } else {
      buffer.append("', ''");
    }

    if (target.titleCross != null
        && target.targetCross != null
        && target.targetCross.equalsIgnoreCase("tab")) {
      buffer.append(",'" + target.titleCross + "','tab'");
    } else if (target.titleCross != null) {
      buffer.append(",'" + target.titleCross + "'");
    }

    buffer.append(");");
    String toReturn = buffer.toString();
    logger.debug("OUT: returning [" + toReturn + "]");
    return toReturn;
  }