コード例 #1
0
  protected String[] getTypeBoundedStaticOperand(
      Operand leadOperand, String operator, String[] operandValuesToBound) {
    String[] boundedValues = new String[operandValuesToBound.length];

    for (int i = 0; i < operandValuesToBound.length; i++) {

      String operandValueToBound = operandValuesToBound[i];
      String boundedValue = operandValueToBound;

      if (parentStatement.OPERAND_TYPE_INLINE_CALCULATED_FIELD.equalsIgnoreCase(leadOperand.type)) {
        String leadOpernadValue = leadOperand.values[0];
        JSONObject leadOperandJSON = null;
        try {
          leadOperandJSON = new JSONObject(leadOpernadValue);
        } catch (Throwable t) {
          throw new RuntimeException(
              "Impossible to parse operand value [" + leadOpernadValue + "]", t);
        }

        String type = leadOperandJSON.optString("type");
        boundedValue = getValueBounded(operandValueToBound, type);
      } else if (parentStatement.OPERAND_TYPE_SIMPLE_FIELD.equalsIgnoreCase(leadOperand.type)
          || parentStatement.OPERAND_TYPE_PARENT_FIELD.equalsIgnoreCase(leadOperand.type)) {

        IModelField datamartField =
            parentStatement.getDataSource().getModelStructure().getField(leadOperand.values[0]);
        boundedValue = getValueBounded(operandValueToBound, datamartField.getType());
      }

      boundedValues[i] = boundedValue;
    }

    return boundedValues;
  }
コード例 #2
0
  protected String[] buildOperand(Operand operand, Query query, Map entityAliasesMaps) {
    String[] operandElement;

    logger.debug("IN");

    try {
      Assert.assertNotNull(
          operand,
          "Input parameter [operand] cannot be null in order to execute method [buildUserProvidedWhereField]");
      operandElement = new String[] {""};

      if (parentStatement.OPERAND_TYPE_STATIC.equalsIgnoreCase(operand.type)) {
        operandElement = buildStaticOperand(operand);
      } else if (parentStatement.OPERAND_TYPE_SUBQUERY.equalsIgnoreCase(operand.type)) {
        operandElement = new String[] {buildQueryOperand(operand)};
      } else if (parentStatement.OPERAND_TYPE_SIMPLE_FIELD.equalsIgnoreCase(operand.type)
          || parentStatement.OPERAND_TYPE_INLINE_CALCULATED_FIELD.equalsIgnoreCase(operand.type)) {
        operandElement = new String[] {buildFieldOperand(operand, query, entityAliasesMaps)};
      } else if (parentStatement.OPERAND_TYPE_PARENT_FIELD.equalsIgnoreCase(operand.type)) {
        operandElement = new String[] {buildParentFieldOperand(operand, query, entityAliasesMaps)};
      } else {
        // NOTE: OPERAND_TYPE_CALCULATED_FIELD cannot be used in where condition
        Assert.assertUnreachable("Invalid operand type [" + operand.type + "]");
      }
    } finally {
      logger.debug("OUT");
    }
    return operandElement;
  }