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; }
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; }