diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java index 1df0e1b3f..0d6ad6d69 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/ObjectPropertyStatementDao.java @@ -23,6 +23,8 @@ public interface ObjectPropertyStatementDao { List getObjectPropertyStatements(ObjectProperty objectProperty, int startIndex, int endIndex); + List getObjectPropertyStatements(ObjectPropertyStatement objPropertyStmt); + Individual fillExistingObjectPropertyStatements( Individual entity ); int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt ); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java index 57617a690..e81d3a7cf 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/filtering/ObjectPropertyStatementDaoFiltering.java @@ -27,6 +27,7 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec } + @Override public void deleteObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) { innerObjectPropertyStatementDao.deleteObjectPropertyStatement(objPropertyStmt); } @@ -48,6 +49,7 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec } } + @Override public Individual fillExistingObjectPropertyStatements(Individual entity) { Individual ind = innerObjectPropertyStatementDao.fillExistingObjectPropertyStatements(entity); if( ind == null ) @@ -58,15 +60,24 @@ class ObjectPropertyStatementDaoFiltering extends BaseFiltering implements Objec } } + @Override public List getObjectPropertyStatements(ObjectProperty objectProperty) { return filterAndWrapList( innerObjectPropertyStatementDao.getObjectPropertyStatements(objectProperty), filters ); } + @Override public List getObjectPropertyStatements(ObjectProperty objectProperty, int startIndex, int endIndex) { return filterAndWrapList( innerObjectPropertyStatementDao.getObjectPropertyStatements(objectProperty, startIndex, endIndex) ,filters); } - public int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) { + @Override + public List getObjectPropertyStatements( + ObjectPropertyStatement objPropertyStmt) { + return filterAndWrapList(innerObjectPropertyStatementDao.getObjectPropertyStatements(objPropertyStmt), filters); + } + + @Override + public int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) { return innerObjectPropertyStatementDao.insertNewObjectPropertyStatement(objPropertyStmt); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java index f7ffafd2f..cfc7d3be2 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/ObjectPropertyStatementDaoJena.java @@ -12,6 +12,7 @@ import com.hp.hpl.jena.rdf.model.Property; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.rdf.model.ResourceFactory; import com.hp.hpl.jena.rdf.model.Statement; +import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.shared.Lock; import com.hp.hpl.jena.util.iterator.ClosableIterator; @@ -28,6 +29,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec super(wadf); } + @Override public void deleteObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) { deleteObjectPropertyStatement(objPropertyStmt, getOntModelSelector().getABoxModel()); } @@ -50,6 +52,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec } } + @Override public Individual fillExistingObjectPropertyStatements(Individual entity) { if (entity.getURI() == null) return entity; @@ -60,7 +63,7 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec Resource ind = getOntModel().getResource(entity.getURI()); List objPropertyStmtList = new ArrayList(); - ClosableIterator propIt = ind.listProperties(); + ClosableIterator propIt = ind.listProperties(); try { while (propIt.hasNext()) { Statement st = (Statement) propIt.next(); @@ -119,16 +122,18 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec private int NO_LIMIT = -1; + @Override public List getObjectPropertyStatements (ObjectProperty objectProperty) { return getObjectPropertyStatements(objectProperty, NO_LIMIT, NO_LIMIT); } + @Override public List getObjectPropertyStatements (ObjectProperty objectProperty, int startIndex, int endIndex) { getOntModel().enterCriticalSection(Lock.READ); List opss = new ArrayList(); try { Property prop = ResourceFactory.createProperty(objectProperty.getURI()); - ClosableIterator opsIt = getOntModel().listStatements(null,prop,(Resource)null); + ClosableIterator opsIt = getOntModel().listStatements(null,prop,(Resource)null); try { int count = 0; while ( (opsIt.hasNext()) && ((endIndex<0) || (count getObjectPropertyStatements( + ObjectPropertyStatement objPropertyStmt) { + List opss = new ArrayList(); + + getOntModel().enterCriticalSection(Lock.READ); + try { + String subjectUri = objPropertyStmt.getSubjectURI(); + String propertyUri = objPropertyStmt.getPropertyURI(); + String objectUri = objPropertyStmt.getObjectURI(); + + Resource subject = (subjectUri == null) ? null : ResourceFactory.createResource(subjectUri); + Property property = (propertyUri == null) ? null : ResourceFactory + .createProperty(propertyUri); + Resource object = (objectUri == null) ? null : ResourceFactory.createResource(objectUri); + StmtIterator opsIt = getOntModel().listStatements(subject, property, object); + try { + while (opsIt.hasNext()) { + Statement stmt = opsIt.next(); + if (stmt.getObject().isResource()) { + Resource objRes = (Resource) stmt.getObject(); + if (!objRes.isAnon()) { + ObjectPropertyStatement ops = new ObjectPropertyStatementImpl(); + ops.setSubjectURI(stmt.getSubject().getURI()); + ops.setPropertyURI(stmt.getPredicate().getURI()); + ops.setObjectURI(objRes.getURI()); + opss.add(ops); + } + } + } + } finally { + opsIt.close(); + } + } finally { + getOntModel().leaveCriticalSection(); + } + return opss; + } + + @Override + public int insertNewObjectPropertyStatement(ObjectPropertyStatement objPropertyStmt) { return insertNewObjectPropertyStatement(objPropertyStmt, getOntModelSelector().getABoxModel()); }