Package mondrian.olap

Examples of mondrian.olap.Parameter


      }

      final Parameter[] parameterDefs = query.getParameters();
      for (int i = 0; i < parameterDefs.length; i++)
      {
        final Parameter def = parameterDefs[i];
        Object parameterValue = parameters.get(def.getName());
        final Object processedParamValue;
        final Type parameterType = def.getType();

        // Mondrian doesn't handle null MemberType/SetType parameters well (http://jira.pentaho.com/browse/MONDRIAN-745)
        // If parameterValue is null, give it the default value
        try
        {
          if (parameterValue == null && (parameterType instanceof MemberType || parameterType instanceof SetType))
          {
            parameterValue = def.getDefaultExp().toString();
          }
        }
        catch (Exception e)
        {
          // Ignore - this is a safety procedure anyway
        }

        if (parameterValue != null)
        {

          if (parameterType instanceof StringType)
          {
            if (!(parameterValue instanceof String))
            {
              throw new ReportDataFactoryException(parameterValue + " is incorrect for type " + parameterType);
            }
            processedParamValue = parameterValue;
          }
          else if (parameterType instanceof NumericType)
          {
            if (!(parameterValue instanceof Number))
            {
              throw new ReportDataFactoryException(parameterValue + " is incorrect for type " + parameterType);
            }
            processedParamValue = parameterValue;
          }
          else if (parameterType instanceof MemberType)
          {
            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);
                }
              }

              processedParamValue = list;
            }
            else
            {
              if (!(parameterValue instanceof OlapElement))
              {
                throw new ReportDataFactoryException(parameterValue + " is incorrect for type " + parameterType);
              }
              else
              {
                processedParamValue = parameterValue;
              }
            }
          }
          else
          {
            processedParamValue = parameterValue;
          }
        }
        else
        {
          processedParamValue = null;
        }

        // Mondrian allows null values to be passed in, so we'll go ahead and
        // convert null values to their defaults for now until MONDRIAN-745 is
        // resolved.

        final Exp exp = def.getDefaultExp();
        if (processedParamValue == null && exp != null && exp instanceof Literal)
        {
          def.setValue(((Literal) exp).getValue());
        }
        else
        {
          def.setValue(processedParamValue);
        }
      }

      final Result resultSet = connection.execute(query);
      if (resultSet == null)
View Full Code Here


      // Alternatively, JNDI is possible. Maybe even more ..
      final Query query = connection.parseQuery(mdxQuery);
      final Parameter[] queryParameters = query.getParameters();
      for (int i = 0; i < queryParameters.length; i++)
      {
        final Parameter queryParameter = queryParameters[i];
        parameter.add(queryParameter.getName());
      }
      if (jdbcUserField != null)
      {
        parameter.add(jdbcUserField);
      }
View Full Code Here

  private void parametrizeQuery(final DataRow parameters, final Query query) throws ReportDataFactoryException
  {
    final Parameter[] parameterDefs = query.getParameters();
    for (int i = 0; i < parameterDefs.length; i++)
    {
      final Parameter def = parameterDefs[i];
      final Type parameterType = def.getType();
      final Object parameterValue = preprocessMemberParameter(def, parameters, parameterType);
      final Object processedParamValue = computeParameterValue(query, parameterValue, parameterType);

      // Mondrian allows null values to be passed in, so we'll go ahead and
      // convert null values to their defaults for now until MONDRIAN-745 is
      // resolved.

      final Exp exp = def.getDefaultExp();
      if (processedParamValue == null && exp != null && exp instanceof Literal)
      {
        Literal exp1 = (Literal) exp;
        def.setValue(exp1.getValue());
      }
      else
      {
        def.setValue(processedParamValue);
      }
    }
  }
View Full Code Here

      // Alternatively, JNDI is possible. Maybe even more ..
      final Query query = connection.parseQuery(mdxQuery);
      final Parameter[] queryParameters = query.getParameters();
      for (int i = 0; i < queryParameters.length; i++)
      {
        final Parameter queryParameter = queryParameters[i];
        parameter.add(queryParameter.getName());
      }
      if (jdbcUserField != null)
      {
        parameter.add(jdbcUserField);
      }
View Full Code Here

    {
        getParameter(parameterIndex).setValue(x);
    }

    public void setObject(int parameterIndex, Object x) throws SQLException {
        final Parameter parameter = getParameter(parameterIndex);
        if (x instanceof MondrianOlap4jMember) {
            MondrianOlap4jMember mondrianOlap4jMember =
                (MondrianOlap4jMember) x;
            x = mondrianOlap4jMember.member;
        }
        parameter.setValue(x);
    }
View Full Code Here

    }

    // implement OlapParameterMetaData

    public String getParameterName(int param) throws OlapException {
        Parameter paramDef = getParameter(param);
        return paramDef.getName();
    }
View Full Code Here

        }
        return parameters[param - 1];
    }

    public Type getParameterOlapType(int param) throws OlapException {
        Parameter paramDef = getParameter(param);
        return olap4jConnection.toOlap4j(paramDef.getType());
    }
View Full Code Here

            },
            type).getName();
    }

    public int getParameterMode(int param) throws SQLException {
        Parameter paramDef = getParameter(param); // forces param range check
        Util.discard(paramDef);
        return ParameterMetaData.parameterModeIn;
    }
View Full Code Here

TOP

Related Classes of mondrian.olap.Parameter

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.