From 5af9f0b3a63bccef1e4d189f6ee25e201ee8e12b Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Mon, 19 Sep 2016 13:43:34 +0100 Subject: [PATCH] Revert "Split out selector implementation to address java compilation issue" This reverts commit 70ba4cedab891161d2e29db4699e81ac7f4cf5f4. --- .../impl/virtuoso/RDFServiceVirtuoso.java | 38 ++++++++++++++++++- .../impl/virtuoso/VirtuosoDoubleSelector.java | 33 ---------------- 2 files changed, 36 insertions(+), 35 deletions(-) delete mode 100644 api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/VirtuosoDoubleSelector.java diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/RDFServiceVirtuoso.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/RDFServiceVirtuoso.java index 248601fe5..1c7ff10a0 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/RDFServiceVirtuoso.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/RDFServiceVirtuoso.java @@ -16,7 +16,6 @@ import org.apache.jena.rdf.model.Property; import org.apache.jena.rdf.model.RDFNode; import org.apache.jena.rdf.model.Resource; import org.apache.jena.rdf.model.Selector; -import org.apache.jena.rdf.model.SimpleSelector; import org.apache.jena.rdf.model.Statement; import org.apache.jena.rdf.model.StmtIterator; import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceDataset; @@ -192,7 +191,42 @@ public class RDFServiceVirtuoso extends RDFServiceSparql { // If the object is a numeric literal if (object.isLiteral() && isNumeric(object.asLiteral().getDatatypeURI())) { // Find a matching statement in the triple store, based on normalized numeric values - StmtIterator matching = fromTripleStoreModel.listStatements(new VirtuosoDoubleSelector(subject.asResource(), predicate, object)); + StmtIterator matching = fromTripleStoreModel.listStatements(new Selector() { + @Override + public boolean test(Statement statement) { + RDFNode objectToMatch = statement.getObject(); + + // Both values are numeric, so compare them as parsed doubles + if (objectToMatch.isLiteral()) { + String num1 = object.asLiteral().getString(); + String num2 = objectToMatch.asLiteral().getString(); + + return Double.parseDouble(num1) == Double.parseDouble(num2); + } + + return false; + } + + @Override + public boolean isSimple() { + return false; + } + + @Override + public Resource getSubject() { + return subject.asResource(); + } + + @Override + public Property getPredicate() { + return predicate; + } + + @Override + public RDFNode getObject() { + return null; + } + }); // For every matching statement // Rewrite the object as the one in the file model (they are the same, just differ in datatype) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/VirtuosoDoubleSelector.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/VirtuosoDoubleSelector.java deleted file mode 100644 index 3ad3d73d1..000000000 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/virtuoso/VirtuosoDoubleSelector.java +++ /dev/null @@ -1,33 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.rdfservice.impl.virtuoso; - -import org.apache.jena.rdf.model.Property; -import org.apache.jena.rdf.model.RDFNode; -import org.apache.jena.rdf.model.Resource; -import org.apache.jena.rdf.model.SimpleSelector; -import org.apache.jena.rdf.model.Statement; - -public class VirtuosoDoubleSelector extends SimpleSelector { - public VirtuosoDoubleSelector() { - } - - public VirtuosoDoubleSelector(Resource subject, Property predicate, RDFNode object) { - super(subject, predicate, object); - } - - @Override - public boolean test(Statement statement) { - RDFNode objectToMatch = statement.getObject(); - - // Both values are numeric, so compare them as parsed doubles - if (objectToMatch.isLiteral()) { - String num1 = object.asLiteral().getString(); - String num2 = objectToMatch.asLiteral().getString(); - - return Double.parseDouble(num1) == Double.parseDouble(num2); - } - - return false; - } -}