private static Map<String,Object> createExecutedFragmentExpressionParameters( final IExpressionContext context, final AssignationSequence parameters, final boolean syntheticParameters, final StandardExpressionExecutionContext expContext) { if (parameters == null || parameters.size() == 0) { return null; } final Map<String,Object> parameterValues = new HashMap<String, Object>(parameters.size() + 2); final List<Assignation> assignationValues = parameters.getAssignations(); final int assignationValuesLen = assignationValues.size(); for (int i = 0; i < assignationValuesLen; i++) { final Assignation assignation = assignationValues.get(i); final IStandardExpression parameterNameExpr = assignation.getLeft(); final String parameterName; if (!syntheticParameters) { final Object parameterNameValue = parameterNameExpr.execute(context, expContext); parameterName = (parameterNameValue == null ? null : parameterNameValue.toString()); } else { // Parameters are synthetic so we know this is a mere literal like "_argX", no need to perform an exec parameterName = ((TextLiteralExpression)parameterNameExpr).getValue().getValue(); } final IStandardExpression parameterValueExpr = assignation.getRight(); final Object parameterValueValue = parameterValueExpr.execute(context, expContext); parameterValues.put(parameterName, parameterValueValue); } return parameterValues; }
private static AssignationSequence createSyntheticallyNamedParameterSequence(final ExpressionSequence expSeq) { final List<Assignation> assignations = new ArrayList<Assignation>(expSeq.size() + 2); int argIndex = 0; for (final IStandardExpression expression : expSeq.getExpressions()) { final IStandardExpression parameterName = Expression.parse(TextLiteralExpression.wrapStringIntoLiteral(UNNAMED_PARAMETERS_PREFIX + argIndex++)); assignations.add(new Assignation(parameterName, expression)); } return new AssignationSequence(assignations); }
@Override public String toString() { return getStringRepresentation(); }
public static boolean hasSyntheticParameters( final FragmentSelection fragmentSelection, final Configuration configuration, final IProcessingContext processingContext, final StandardExpressionExecutionContext expContext) { // The parameter sequence will be considered "synthetically named" if its variable names are all synthetic // (see the "parameterNamesAreSynthetic" method for more info). if (!fragmentSelection.hasParameters()) { return false; } final AssignationSequence fragmentSelectionParameters = fragmentSelection.getParameters(); final Set<String> variableNames = new HashSet<String>(fragmentSelectionParameters.size() + 2); for (final Assignation assignation : fragmentSelectionParameters.getAssignations()) { final IStandardExpression variableNameExpr = assignation.getLeft(); final Object variableNameValue = variableNameExpr.execute(configuration, processingContext, expContext); final String variableName = (variableNameValue == null? null : variableNameValue.toString()); variableNames.add(variableName); } return parameterNamesAreSynthetic(variableNames); }
return new Assignation(state.get(nodeIndex).getExpression(),null); return new Assignation(leftExpr, rightExpr);
@Override public String toString() { return getStringRepresentation(); }
private static AssignationSequence createSyntheticallyNamedParameterSequence(final ExpressionSequence expSeq) { final List<Assignation> assignations = new ArrayList<Assignation>(expSeq.size() + 2); int argIndex = 0; for (final IStandardExpression expression : expSeq.getExpressions()) { final IStandardExpression parameterName = Expression.parse(TextLiteralExpression.wrapStringIntoLiteral(UNNAMED_PARAMETERS_PREFIX + argIndex++)); assignations.add(new Assignation(parameterName, expression)); } return new AssignationSequence(assignations); }
return new Assignation(state.get(nodeIndex).getExpression(),null); return new Assignation(leftExpr, rightExpr);
private static Map<String,Object> resolveFragmentParameters( final Configuration configuration, final IProcessingContext processingContext, final AssignationSequence parameters) { if (parameters == null) { return null; } final Map<String,Object> parameterValues = new HashMap<String, Object>(parameters.size() + 2); for (final Assignation assignation : parameters.getAssignations()) { final IStandardExpression parameterNameExpr = assignation.getLeft(); final Object parameterNameValue = parameterNameExpr.execute(configuration, processingContext); final String parameterName = (parameterNameValue == null? null : parameterNameValue.toString()); final IStandardExpression parameterValueExpr = assignation.getRight(); final Object parameterValueValue = parameterValueExpr.execute(configuration, processingContext); parameterValues.put(parameterName, parameterValueValue); } return parameterValues; }
for (final Assignation assignation : assignations) { final IStandardExpression leftExpr = assignation.getLeft(); final Object leftValue = leftExpr.execute(configuration, assignationExecutionArguments); final IStandardExpression rightExpr = assignation.getRight(); final Object rightValue = rightExpr.execute(configuration, assignationExecutionArguments);
@Override public int compare(StructuredContentDTO o1, StructuredContentDTO o2) { AssignationSequence sortAssignments = AssignationUtils.parseAssignationSequence(arguments.getConfiguration(), arguments, sorts, false); CompareToBuilder compareBuilder = new CompareToBuilder(); for (Assignation sortAssignment : sortAssignments) { String property = sortAssignment.getLeft().getStringRepresentation(); Object val1 = o1.getPropertyValue(property); Object val2 = o2.getPropertyValue(property); if (sortAssignment.getRight().execute(arguments.getConfiguration(), arguments).equals("ASCENDING")) { compareBuilder.append(val1, val2); } else { compareBuilder.append(val2, val1); } } return compareBuilder.toComparison(); } });
for (Assignation assignment : assignments) { if (ObjectUtils.notEqual(assignment.getRight().execute(arguments.getConfiguration(), arguments), item.getValues().get(assignment.getLeft().getStringRepresentation()))) { LOG.info("Excluding content " + item.getId() + " based on the property value of " + assignment.getLeft().getStringRepresentation()); valid = false; break;