[Mulgara-svn] r1585 - trunk/src/jar/query/java/org/mulgara/query/filter/value
pag at mulgara.org
pag at mulgara.org
Tue Mar 3 21:53:16 UTC 2009
Author: pag
Date: 2009-03-03 13:53:15 -0800 (Tue, 03 Mar 2009)
New Revision: 1585
Modified:
trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java
Log:
Added the ability for functions to return numerical results
Modified: trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java
===================================================================
--- trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java 2009-03-03 21:52:50 UTC (rev 1584)
+++ trunk/src/jar/query/java/org/mulgara/query/filter/value/ExternalFn.java 2009-03-03 21:53:15 UTC (rev 1585)
@@ -30,7 +30,7 @@
* @copyright © 2008 <a href="http://www.topazproject.org/">The Topaz Project</a>
* @licence <a href="{@docRoot}/../../LICENCE.txt">Open Software License v3.0</a>
*/
-public class ExternalFn extends AbstractAccessorFn {
+public class ExternalFn extends AbstractAccessorFn implements NumericExpression {
/** Generated Serialization ID for RMI */
private static final long serialVersionUID = 5748124115023875223L;
@@ -77,7 +77,8 @@
*/
private boolean isCast(URI u) {
if (XSD_SCHEME.equals(fnUri.getScheme()) && XSD_PART.equals(fnUri.getSchemeSpecificPart())) return true;
- if (RDF.XML_LITERAL.equals(u)) return true;
+ if (XSD.DOM.equals(fnUri.getScheme())) return true;
+ if (RDF.XML_LITERAL.equals(u) || RDF.XML_LITERAL_ABBR.equals(u)) return true;
return false;
}
@@ -173,4 +174,16 @@
}
return result;
}
+
+ /**
+ * Extract a numeric value from this expression, if legal. This may result in a type exception.
+ * @see org.mulgara.query.filter.value.NumericExpression#getNumber()
+ * @return A numeric value for the resolved expression.
+ * @throws QueryException If the resolved expression is not a numeric type.
+ */
+ public Number getNumber() throws QueryException {
+ RDFTerm result = resolve();
+ if (!result.isLiteral() && !(result instanceof NumericExpression)) throw new QueryException("Type Error: Not valid to ask the numeric form of a: " + result.getClass().getSimpleName());
+ return ((NumericExpression)result).getNumber();
+ }
}
More information about the Mulgara-svn
mailing list