1 5 6 7 8 package com.hp.hpl.jena.rdql.parser; 9 10 11 import java.io.PrintWriter ; 12 import com.hp.hpl.jena.graph.query.IndexValues; 13 import com.hp.hpl.jena.graph.query.Expression; 14 import com.hp.hpl.jena.rdql.*; 15 16 public class Q_UnaryNot extends ExprNode implements Expr, ExprBoolean 17 { 18 private String printName = "unaryminus"; 19 private String opSymbol = "!"; 20 Expr expr; 21 22 Q_UnaryNot(int id) 23 { 24 super(id); 25 } 26 27 Q_UnaryNot(RDQLParser p, int id) 28 { 29 super(p, id); 30 } 31 32 public void jjtClose() 33 { 34 int n = jjtGetNumChildren(); 35 if (n != 1) throw new QueryException("Q_UnaryNot: Wrong number of children: " + n); 36 expr = (Expr) jjtGetChild(0); 37 } 38 39 public NodeValue eval(Query q, IndexValues env) 40 { 41 NodeValue v = expr.eval(q, env); 42 43 if (!v.isBoolean()) throw new EvalTypeException("Q_UnaryNot: Wanted a number: got " + expr); 44 45 NodeValueSettable result; 46 47 result = new WorkingVar(); 48 result.setBoolean(!v.getBoolean()); 49 return result; 50 } 51 52 55 public boolean isApply() { return true ; } 56 public String getFun() { return super.constructURI(this.getClass().getName()) ; } 57 public int argCount() { return 1; } 58 public Expression getArg(int i) 59 { 60 if ( i == 0 && expr instanceof Expression ) 61 return (Expression)expr ; 62 return null; 63 } 64 65 public String asInfixString() 66 { 67 return QueryPrintUtils.asInfixString1(expr, printName, opSymbol); 68 } 69 70 public String asPrefixString() 71 { 72 return QueryPrintUtils.asPrefixString(expr, null, printName, opSymbol); 73 } 74 75 public void print(PrintWriter pw, int level) 76 { 77 QueryPrintUtils.print(pw, expr, null, printName, opSymbol, level); 78 } 79 80 public String toString() 81 { 82 return asInfixString(); 83 } 84 85 } 86 87 112 | Popular Tags |