You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/05/07 21:56:02 UTC
svn commit: r1335220 - in
/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr: E_Add.java
E_Divide.java E_Multiply.java E_Subtract.java nodevalue/NodeValueOps.java
Author: andy
Date: Mon May 7 19:56:02 2012
New Revision: 1335220
URL: http://svn.apache.org/viewvc?rev=1335220&view=rev
Log:
JENA-235
Wire in date/time/duration arithmetic.
Modified:
jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Add.java
jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Divide.java
jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Multiply.java
jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Subtract.java
jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueOps.java
Modified: jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Add.java
URL: http://svn.apache.org/viewvc/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Add.java?rev=1335220&r1=1335219&r2=1335220&view=diff
==============================================================================
--- jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Add.java (original)
+++ jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Add.java Mon May 7 19:56:02 2012
@@ -19,6 +19,7 @@
package com.hp.hpl.jena.sparql.expr;
import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.NodeValueOps ;
import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
public class E_Add extends ExprFunction2
@@ -37,14 +38,7 @@ public class E_Add extends ExprFunction2
if ( ARQ.isStrictMode() )
return XSDFuncOp.numAdd(x, y) ;
- if ( true )
- {
- if ( x.isString() && y.isString() )
- return NodeValue.makeString(x.asString()+y.asString()) ;
- if ( ! x.isNumber() || ! y.isNumber() )
- throw new ExprEvalTypeException("Operator '+' requires two numbers or two strings: got: "+x+" and "+y) ;
- }
- return XSDFuncOp.numAdd(x, y) ;
+ return NodeValueOps.additionNV(x, y) ;
}
@Override
Modified: jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Divide.java
URL: http://svn.apache.org/viewvc/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Divide.java?rev=1335220&r1=1335219&r2=1335220&view=diff
==============================================================================
--- jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Divide.java (original)
+++ jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Divide.java Mon May 7 19:56:02 2012
@@ -18,6 +18,8 @@
package com.hp.hpl.jena.sparql.expr;
+import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.NodeValueOps ;
import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
public class E_Divide extends ExprFunction2
@@ -31,7 +33,13 @@ public class E_Divide extends ExprFuncti
}
@Override
- public NodeValue eval(NodeValue x, NodeValue y) { return XSDFuncOp.numDivide(x, y) ; }
+ public NodeValue eval(NodeValue x, NodeValue y)
+ {
+ if ( ARQ.isStrictMode() )
+ return XSDFuncOp.numDivide(x, y) ;
+
+ return NodeValueOps.divisionNV(x, y) ;
+ }
@Override
public Expr copy(Expr e1, Expr e2) { return new E_Divide(e1 , e2 ) ; }
Modified: jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Multiply.java
URL: http://svn.apache.org/viewvc/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Multiply.java?rev=1335220&r1=1335219&r2=1335220&view=diff
==============================================================================
--- jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Multiply.java (original)
+++ jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Multiply.java Mon May 7 19:56:02 2012
@@ -18,6 +18,8 @@
package com.hp.hpl.jena.sparql.expr;
+import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.NodeValueOps ;
import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
public class E_Multiply extends ExprFunction2
@@ -31,7 +33,12 @@ public class E_Multiply extends ExprFunc
}
@Override
- public NodeValue eval(NodeValue x, NodeValue y) { return XSDFuncOp.numMultiply(x, y) ; }
+ public NodeValue eval(NodeValue x, NodeValue y) {
+ if ( ARQ.isStrictMode() )
+ return XSDFuncOp.numMultiply(x, y) ;
+
+ return NodeValueOps.multiplicationNV(x, y) ;
+ }
@Override
public Expr copy(Expr e1, Expr e2) { return new E_Multiply(e1 , e2 ) ; }
Modified: jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Subtract.java
URL: http://svn.apache.org/viewvc/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Subtract.java?rev=1335220&r1=1335219&r2=1335220&view=diff
==============================================================================
--- jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Subtract.java (original)
+++ jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/E_Subtract.java Mon May 7 19:56:02 2012
@@ -18,6 +18,8 @@
package com.hp.hpl.jena.sparql.expr;
+import com.hp.hpl.jena.query.ARQ ;
+import com.hp.hpl.jena.sparql.expr.nodevalue.NodeValueOps ;
import com.hp.hpl.jena.sparql.expr.nodevalue.XSDFuncOp ;
public class E_Subtract extends ExprFunction2
@@ -31,7 +33,13 @@ public class E_Subtract extends ExprFunc
}
@Override
- public NodeValue eval(NodeValue x, NodeValue y) { return XSDFuncOp.numSubtract(x, y) ; }
+ public NodeValue eval(NodeValue x, NodeValue y)
+ {
+ if ( ARQ.isStrictMode() )
+ return XSDFuncOp.numSubtract(x, y) ;
+
+ return NodeValueOps.subtractionNV(x, y) ;
+ }
@Override
public Expr copy(Expr e1, Expr e2) { return new E_Subtract(e1 , e2 ) ; }
Modified: jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueOps.java
URL: http://svn.apache.org/viewvc/jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueOps.java?rev=1335220&r1=1335219&r2=1335220&view=diff
==============================================================================
--- jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueOps.java (original)
+++ jena/Jena2/ARQ/trunk/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/NodeValueOps.java Mon May 7 19:56:02 2012
@@ -35,7 +35,6 @@ import javax.xml.datatype.XMLGregorianCa
import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
import com.hp.hpl.jena.graph.Node ;
-import com.hp.hpl.jena.query.ARQ ;
import com.hp.hpl.jena.sparql.expr.ExprEvalTypeException ;
import com.hp.hpl.jena.sparql.expr.NodeValue ;
import com.hp.hpl.jena.sparql.expr.ValueSpaceClassification ;
@@ -113,8 +112,6 @@ public class NodeValueOps
if ( vs1.equals(VSPACE_NUM) && vs2.equals(VSPACE_NUM) )
return XSDFuncOp.numAdd(nv1, nv2) ;
- if ( ARQ.isStrictMode() )
- throw new ExprEvalTypeException("Operator '+' requires two numbers: got: "+nv1+" and "+nv2) ;
if ( vs1.equals(VSPACE_STRING) && vs2.equals(VSPACE_STRING) )
return NodeValue.makeString(nv1.asString()+nv2.asString()) ;
@@ -177,8 +174,6 @@ public class NodeValueOps
if ( vs1.equals(VSPACE_NUM) && vs2.equals(VSPACE_NUM) )
return XSDFuncOp.numSubtract(nv1, nv2) ;
- if ( ARQ.isStrictMode() )
- throw new ExprEvalTypeException("Operator '-' requires two numbers: got: "+nv1+" and "+nv2) ;
if ( vs1.equals(VSPACE_DURATION) && vs2.equals(VSPACE_DURATION) )
{
@@ -247,8 +242,7 @@ public class NodeValueOps
if ( vs1.equals(VSPACE_NUM) && vs2.equals(VSPACE_NUM) )
return XSDFuncOp.numMultiply(nv1, nv2) ;
- if ( ARQ.isStrictMode() )
- throw new ExprEvalTypeException("Operator '*' requires two numbers: got: "+nv1+" and "+nv2) ;
+
if ( vs1.equals(VSPACE_DURATION) && vs2.equals(VSPACE_NUM) )
{
// ONLY defined for dayTime.
@@ -271,8 +265,7 @@ public class NodeValueOps
if ( vs1.equals(VSPACE_NUM) && vs2.equals(VSPACE_NUM) )
return XSDFuncOp.numDivide(nv1, nv2) ;
-// if ( ARQ.isStrictMode() )
-// throw new ExprEvalTypeException("Operator '*' requires two numbers: got: "+nv1+" and "+nv2) ;
+
throw new ExprEvalTypeException("Operator '/' : Undefined division: "+nv1+" and "+nv2) ;
}