Java源码示例:org.apache.olingo.odata2.api.uri.expression.UnaryExpression
示例1
@Override
public Object visitUnary(UnaryExpression ue, UnaryOperator operator, Object operand)
{
// operand is a Node<?> (Expression Tree)
// Returns an instance of Transformer<?> (functional java) as a Node<?> (Expression Tree)
Transformer trans;
switch (operator)
{
case NOT: trans = Transformers.not(); break;
case MINUS: trans = Transformers.minus(); break;
default:
throw new UnsupportedOperationException("Unsupported operator: " + operator.toUriLiteral());
}
ExecutableExpressionTree.Node param = ExecutableExpressionTree.Node.class.cast(operand);
return ExecutableExpressionTree.Node.createNode(trans, param);
}
示例2
protected void validateUnaryOperatorTypes(final UnaryExpression unaryExpression)
throws ExpressionParserInternalError {
InfoUnaryOperator unOpt = availableUnaryOperators.get(unaryExpression.getOperator().toUriLiteral());
EdmType operandType = unaryExpression.getOperand().getEdmType();
if ((operandType == null) && (resourceEntityType == null)) {
return;
}
List<EdmType> actualParameterTypes = new ArrayList<EdmType>();
actualParameterTypes.add(operandType);
ParameterSet parameterSet = unOpt.validateParameterSet(actualParameterTypes);
if (parameterSet != null) {
unaryExpression.setEdmType(parameterSet.getReturnType());
}
}
示例3
@Override
public Object visitUnary(UnaryExpression unary_expression,
UnaryOperator operator, Object operand)
{
switch (operator)
{
case MINUS:
{
if (operand instanceof Long)
{
return -((Long) operand);
}
else if (operand instanceof Double)
{
return -((Double) operand);
}
else
{
throw new UnsupportedOperationException("Invalid expression: " +
unary_expression.getUriLiteral());
}
}
case NOT:
{
return Restrictions.not((Criterion) operand);
}
default:
break;
}
throw new UnsupportedOperationException("Unsupported operator: " +
operator.toUriLiteral());
}
示例4
private void appendExpression(final CommonExpression expression, final Writer writer) throws IOException {
final ExpressionKind kind = expression.getKind();
writer.append("<span class=\"kind\">")
.append(kind.toString())
.append("</span> <span class=\"literal\">")
.append(kind == ExpressionKind.MEMBER ? ((MemberExpression) expression).getProperty().getUriLiteral() :
expression.getUriLiteral())
.append("</span>, type <span class=\"type\">")
.append(expression.getEdmType().toString())
.append("</span>");
if (kind == ExpressionKind.UNARY) {
writer.append("<ul class=\"expr\"><li>");
appendExpression(((UnaryExpression) expression).getOperand(), writer);
writer.append("</li></ul>");
} else if (kind == ExpressionKind.BINARY) {
writer.append("<ol class=\"expr\"><li>");
appendExpression(((BinaryExpression) expression).getLeftOperand(), writer);
writer.append("</li><li>");
appendExpression(((BinaryExpression) expression).getRightOperand(), writer);
writer.append("</li></ol>");
} else if (kind == ExpressionKind.METHOD) {
final MethodExpression methodExpression = (MethodExpression) expression;
if (methodExpression.getParameterCount() > 0) {
writer.append("<ol class=\"expr\">");
for (final CommonExpression parameter : methodExpression.getParameters()) {
writer.append("<li>");
appendExpression(parameter, writer);
writer.append("</li>");
}
writer.append("</ol>");
}
} else if (kind == ExpressionKind.MEMBER) {
writer.append("<ul class=\"expr\"><li>");
appendExpression(((MemberExpression) expression).getPath(), writer);
writer.append("</li></ul>");
}
}
示例5
protected CommonExpression readUnaryoperator(final Token lookToken, final InfoUnaryOperator unaryOperator)
throws ExpressionParserException, ExpressionParserInternalError {
tokenList.expectToken(lookToken.getUriLiteral(), true);
CommonExpression operand = readElement(null);
UnaryExpression unaryExpression = new UnaryExpressionImpl(unaryOperator, operand);
validateUnaryOperatorTypes(unaryExpression); // throws ExpressionInvalidOperatorTypeException
return unaryExpression;
}
示例6
@Override
public Object visitUnary(final UnaryExpression unaryExpression, final UnaryOperator operator, final Object operand) {
try {
StringWriter writer = new StringWriter();
JsonStreamWriter jsonStreamWriter = new JsonStreamWriter(writer);
jsonStreamWriter.beginObject().namedStringValueRaw("nodeType", unaryExpression.getKind().toString()).separator()
.namedStringValueRaw("operator", operator.toUriLiteral()).separator().namedStringValueRaw("type",
getType(unaryExpression)).separator().name("operand").unquotedValue(operand.toString()).endObject();
writer.flush();
return writer.toString();
} catch (final IOException e) {
return null;
}
}
示例7
@Override
public Object visitUnary(final UnaryExpression unaryExpression, final UnaryOperator operator, final Object operand) {
return "{" + operator.toUriLiteral() + " " + operand.toString() + "}";
}
示例8
@Override
public Object visitUnary(UnaryExpression unaryExpression, UnaryOperator operator, Object operand) {
throw new SearchParseException("Unsupported operation visitUnary: " + unaryExpression
+ "," + operator + "," + operand);
}