Package mondrian.olap

Examples of mondrian.olap.Member


  {
    members = new JRMondrianMember[position.size()];
    int idx = 0;
    for (Iterator it = position.iterator(); it.hasNext(); ++idx)
    {
      Member member = (Member) it.next();
      members[idx] = factory.createMember(member);
    }
  }
View Full Code Here


          {
            final MemberType memberType = (MemberType) parameterType;
            final Hierarchy hierarchy = memberType.getHierarchy();
            if (parameterValue instanceof String)
            {
              final Member member = findMember(query, hierarchy, query.getCube(), String.valueOf(parameterValue));
              if (member != null)
              {
                processedParamValue = new MemberExpr(member);
              }
              else
              {
                processedParamValue = null;
              }
            }
            else
            {
              if (!(parameterValue instanceof OlapElement))
              {
                throw new ReportDataFactoryException(parameterValue + " is incorrect for type " + parameterType);
              }
              else
              {
                processedParamValue = parameterValue;
              }
            }
          }
          else if (parameterType instanceof SetType)
          {
            final SetType setType = (SetType) parameterType;
            final Hierarchy hierarchy = setType.getHierarchy();
            if (parameterValue instanceof String)
            {
              final String rawString = (String) parameterValue;
              final String[] memberStr = rawString.replaceFirst("^ *\\{", "").replaceFirst("} *$", "").split(",");
              final List<Member> list = new ArrayList<Member>(memberStr.length);

              for (int j = 0; j < memberStr.length; j++)
              {
                final String str = memberStr[j];
                final Member member = findMember(query, hierarchy, query.getCube(), String.valueOf(str));
                if (member != null)
                {
                  list.add(member);
                }
              }
View Full Code Here

                            final Cube cube,
                            final String parameter) throws ReportDataFactoryException
  {
    try
    {
      final Member directValue = yuckyInternalMondrianLookup(query, hierarchy, parameter);
      if (directValue != null)
      {
        return directValue;
      }
    }
    catch (Exception e)
    {
      // It is non fatal if that fails. Invalid input has this effect.
    }

    Member memberById = null;
    Member memberByUniqueId = null;

    final boolean searchForNames = MondrianProperties.instance().NeedDimensionPrefix.get() == false;
    final boolean missingMembersIsFatal = MondrianProperties.instance().IgnoreInvalidMembersDuringQuery.get();

    try
    {
      final Member directValue = lookupDirectly(hierarchy, cube, parameter, searchForNames);
      if (directValue != null)
      {
        return directValue;
      }
    }
    catch (Exception e)
    {
      // It is non fatal if that fails. Invalid input has this effect.
    }

    final Query memberQuery = connection.parseQuery("SELECT " + hierarchy.getQualifiedName() // NON-NLS
        + ".AllMembers ON 0, {} ON 1 FROM " + cube.getQualifiedName()); // NON-NLS
    final Result result = connection.execute(memberQuery);
    try
    {
      final List<Position> positionList = result.getAxes()[0].getPositions();
      for (int i = 0; i < positionList.size(); i++)
      {
        final Position position = positionList.get(i);
        for (int j = 0; j < position.size(); j++)
        {
          final Member member = position.get(j);
          if (parameter.equals(MondrianUtil.getUniqueMemberName(member)))
          {
            if (memberByUniqueId == null)
            {
              memberByUniqueId = member;
            }
            else
            {
              logger.warn("Encountered a member with a duplicate unique key: " + member.getQualifiedName()); // NON-NLS
            }
          }
          if (searchForNames == false)
          {
            continue;
          }
          if (parameter.equals(member.getName()))
          {
            if (memberById == null)
            {
              memberById = member;
            }
            else
            {
              logger.warn("Encountered a member with a duplicate name: " + member.getQualifiedName()); // NON-NLS
            }
          }
        }
      }
    }
View Full Code Here

  private Member lookupDirectly(final Hierarchy hierarchy,
                                final Cube cube,
                                final String parameter,
                                final boolean searchForNames)
  {
    Member memberById = null;
    Member memberByUniqueId = null;
    final Query queryDirect = connection.parseQuery("SELECT STRTOMEMBER(" + quote(parameter) + ") ON 0, {} ON 1 FROM " // NON-NLS
        + cube.getQualifiedName());
    final Result resultDirect = connection.execute(queryDirect);
    try
    {
      final List<Position> positionList = resultDirect.getAxes()[0].getPositions();
      for (int i = 0; i < positionList.size(); i++)
      {
        final Position position = positionList.get(i);
        for (int j = 0; j < position.size(); j++)
        {
          final Member member = position.get(j);

          // If the parameter starts with '[', we'll assume we have the full
          // member specification specification. Otherwise, keep the funky lookup
          // route. We do check whether we get a second member (heck, should not
          // happen, but I've seen pigs fly already).

          if (parameter.startsWith("["))
          {
            if (memberByUniqueId == null)
            {
              memberByUniqueId = member;
            }
            else
            {
              logger.warn("Encountered a member with a duplicate key: " + member.getQualifiedName()); // NON-NLS
            }
          }
          if (searchForNames == false)
          {
            continue;
          }
          if (parameter.equals(member.getName()))
          {
            if (memberById == null)
            {
              memberById = member;
            }
            else
            {
              logger.warn("Encountered a member with a duplicate name: " + member.getQualifiedName()); // NON-NLS
            }
          }
        }
      }
    }
View Full Code Here

    return null;
  }

  protected Member yuckyInternalMondrianLookup(final Query query, final Hierarchy hierarchy, final String parameter)
  {
    final Member memberById = (Member) Util.lookup(query, Util.parseIdentifier(parameter));
    if (memberById != null)
    {
      final Hierarchy memberHierarchy = memberById.getHierarchy();
      if (hierarchy != memberHierarchy)
      {
        if (ObjectUtilities.equal(hierarchy, memberHierarchy) == false)
        {
          logger.warn("Cannot match hierarchy of member found with the hierarchy specfied in the parameter: " // NON-NLS
View Full Code Here

    final Axis axis = axes[AXIS_ROW];
    final List<Position> positions = axis.getPositions();
    final Position firstPosition = positions.get(0);
    if (columnNumber < firstPosition.size())
    {
      final Member member = firstPosition.get(columnNumber);
      return member.getHierarchy().getName();
    }
    else
    {
      final Member member = firstPosition.get(firstPosition.size() - 1);
      return member.getHierarchy().getName() + '{' + columnNumber + '}';
    }
  }
View Full Code Here

    final int colCount = positions.size();
    final GenericObjectTable result = new GenericObjectTable(20, Math.max(1, colCount));
    for (int c = 0; c < colCount; c++)
    {
      final Position position = positions.get(c);
      Member member = null;
      final int rowCount = position.size();
      for (int r = 0; r < rowCount; r++)
      {
        member = position.get(r);
        if (member != null)
        {
          result.setObject(r, c, member.getName());
        }
      }

      if (member != null)
      {
        result.setObject(rowCount, c, member.getHierarchy().getName());
      }
    }
    return result;
  }
View Full Code Here

    final GenericObjectTable result = new GenericObjectTable(Math.max(1, rowCount), 5);

    for (int r = 0; r < rowCount; r++)
    {
      final Position position = positions.get(r);
      Member member = null;
      final int colCount = position.size();
      for (int c = 0; c < colCount; c++)
      {
        member = position.get(c);
        result.setObject(r, c, member.getName());
      }
      if (member != null)
      {
        result.setObject(r, colCount, member.getHierarchy().getName());
      }
    }
    return result;
  }
View Full Code Here

    for (int positionsIndex = 0; positionsIndex < positions.size(); positionsIndex++)
    {
      final Position position = positions.get(positionsIndex);
      for (int positionIndex = 0; positionIndex < position.size(); positionIndex++)
      {
        Member m = position.get(positionIndex);
        computeDeepColumnNames(m, strategy);
      }
    }

    return strategy.values().size();
View Full Code Here

      for (int positionsIndex = 0; positionsIndex < positions.size(); positionsIndex++)
      {
        final Position position = positions.get(positionsIndex);
        for (int positionIndex = 0; positionIndex < position.size(); positionIndex++)
        {
          Member m = position.get(positionIndex);
          computeDeepColumnNames(m, strategy);
        }
      }

      Collection<Member> columnNamesSet = strategy.values();
View Full Code Here

TOP

Related Classes of mondrian.olap.Member

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.