merging changes for NIHVIVO-959 fillExistingObjectPropertyStatements error

This commit is contained in:
bjl23 2010-07-23 18:06:22 +00:00
parent 32fa4851a6
commit 44976b4b72
2 changed files with 66 additions and 61 deletions

View file

@ -638,13 +638,13 @@ public class IndividualJena extends IndividualImpl implements Individual {
} else { } else {
try { try {
webappDaoFactory.getObjectPropertyStatementDao().fillExistingObjectPropertyStatements(this); webappDaoFactory.getObjectPropertyStatementDao().fillExistingObjectPropertyStatements(this);
Iterator stmtIt = this.getObjectPropertyStatements().iterator(); //Iterator stmtIt = this.getObjectPropertyStatements().iterator();
while (stmtIt.hasNext()) { //while (stmtIt.hasNext()) {
ObjectPropertyStatement stmt = (ObjectPropertyStatement) stmtIt.next(); // ObjectPropertyStatement stmt = (ObjectPropertyStatement) stmtIt.next();
stmt.setObject(webappDaoFactory.getIndividualDao().getIndividualByURI(stmt.getObject().getURI())); // stmt.setObject(webappDaoFactory.getIndividualDao().getIndividualByURI(stmt.getObject().getURI()));
} //}
} catch (Exception e) { } catch (Exception e) {
log.error(this.getClass().getName()+" could not fill existing ObjectPropertyStatements for "+this.getURI()); log.error(this.getClass().getName()+" could not fill existing ObjectPropertyStatements for "+this.getURI(), e);
} }
return this.objectPropertyStatements; return this.objectPropertyStatements;
} }

View file

@ -61,61 +61,66 @@ public class ObjectPropertyStatementDaoJena extends JenaBaseDao implements Objec
ObjectPropertyDaoJena opDaoJena = new ObjectPropertyDaoJena(getWebappDaoFactory()); ObjectPropertyDaoJena opDaoJena = new ObjectPropertyDaoJena(getWebappDaoFactory());
Resource ind = getOntModel().getResource(entity.getURI()); getOntModel().enterCriticalSection(Lock.READ);
List<ObjectPropertyStatement> objPropertyStmtList = new ArrayList<ObjectPropertyStatement>(); try {
ClosableIterator<Statement> propIt = ind.listProperties(); Resource ind = getOntModel().getResource(entity.getURI());
try { List<ObjectPropertyStatement> objPropertyStmtList = new ArrayList<ObjectPropertyStatement>();
while (propIt.hasNext()) { ClosableIterator<Statement> propIt = ind.listProperties();
Statement st = (Statement) propIt.next(); try {
while (propIt.hasNext()) {
Statement st = (Statement) propIt.next();
if (st.getObject().isResource() && !(NONUSER_NAMESPACES.contains(st.getPredicate().getNameSpace()))) { if (st.getObject().isResource() && !(NONUSER_NAMESPACES.contains(st.getPredicate().getNameSpace()))) {
try { try {
ObjectPropertyStatement objPropertyStmt = new ObjectPropertyStatementImpl(); ObjectPropertyStatement objPropertyStmt = new ObjectPropertyStatementImpl();
objPropertyStmt.setSubjectURI(entity.getURI()); objPropertyStmt.setSubjectURI(entity.getURI());
objPropertyStmt.setSubject(entity); objPropertyStmt.setSubject(entity);
try { try {
objPropertyStmt.setObjectURI(((Resource)st.getObject()).getURI()); objPropertyStmt.setObjectURI(((Resource)st.getObject()).getURI());
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
} }
objPropertyStmt.setPropertyURI(st.getPredicate().getURI()); objPropertyStmt.setPropertyURI(st.getPredicate().getURI());
try { try {
Property prop = st.getPredicate(); Property prop = st.getPredicate();
if( uriToObjectProperty.containsKey(prop.getURI())){ if( uriToObjectProperty.containsKey(prop.getURI())){
objPropertyStmt.setProperty(uriToObjectProperty.get(prop.getURI())); objPropertyStmt.setProperty(uriToObjectProperty.get(prop.getURI()));
}else{ }else{
ObjectProperty p = opDaoJena.propertyFromOntProperty(getOntModel().getObjectProperty(prop.getURI())); ObjectProperty p = opDaoJena.propertyFromOntProperty(getOntModel().getObjectProperty(prop.getURI()));
if( p != null ){ if( p != null ){
uriToObjectProperty.put(prop.getURI(), p); uriToObjectProperty.put(prop.getURI(), p);
objPropertyStmt.setProperty(uriToObjectProperty.get(prop.getURI())); objPropertyStmt.setProperty(uriToObjectProperty.get(prop.getURI()));
}else{ }else{
//if ObjectProperty not found in ontology, skip it //if ObjectProperty not found in ontology, skip it
continue; continue;
} }
} }
} catch (Throwable g) { } catch (Throwable g) {
//do not add statement to list //do not add statement to list
log.debug("exception while trying to get object property for statement list, statement skipped.", g); log.debug("exception while trying to get object property for statement list, statement skipped.", g);
continue; continue;
} }
if (objPropertyStmt.getObjectURI() != null) { if (objPropertyStmt.getObjectURI() != null) {
Individual objInd = getWebappDaoFactory().getIndividualDao().getIndividualByURI(objPropertyStmt.getObjectURI()); Individual objInd = getWebappDaoFactory().getIndividualDao().getIndividualByURI(objPropertyStmt.getObjectURI());
objPropertyStmt.setObject(objInd); objPropertyStmt.setObject(objInd);
} }
//add object property statement to list for Individual //add object property statement to list for Individual
if ((objPropertyStmt.getSubjectURI() != null) && (objPropertyStmt.getPropertyURI() != null) && (objPropertyStmt.getObject() != null)){ if ((objPropertyStmt.getSubjectURI() != null) && (objPropertyStmt.getPropertyURI() != null) && (objPropertyStmt.getObject() != null)){
objPropertyStmtList.add(objPropertyStmt); objPropertyStmtList.add(objPropertyStmt);
} }
} catch (Throwable t) { } catch (Throwable t) {
t.printStackTrace(); t.printStackTrace();
} }
} }
} }
} finally { } finally {
propIt.close(); propIt.close();
} }
entity.setObjectPropertyStatements(objPropertyStmtList); entity.setObjectPropertyStatements(objPropertyStmtList);
} finally {
getOntModel().leaveCriticalSection();
}
return entity; return entity;
} }
} }