Updates to help with debugging etc. and some new code in the reorder controller.
This commit is contained in:
parent
549bebf566
commit
899ad4a8c0
2 changed files with 82 additions and 7 deletions
|
@ -8,13 +8,27 @@ import org.apache.commons.httpclient.HttpStatus;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
import com.hp.hpl.jena.datatypes.TypeMapper;
|
||||||
|
import com.hp.hpl.jena.ontology.OntModel;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Model;
|
||||||
|
import com.hp.hpl.jena.rdf.model.ModelFactory;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Resource;
|
||||||
|
import com.hp.hpl.jena.rdf.model.ResourceFactory;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Property;
|
||||||
|
import com.hp.hpl.jena.rdf.model.RDFNode;
|
||||||
|
import com.hp.hpl.jena.rdf.model.Literal;
|
||||||
|
import com.hp.hpl.jena.shared.Lock;
|
||||||
|
|
||||||
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions;
|
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseBasicAjaxControllers;
|
import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseBasicAjaxControllers;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.beans.DataProperty;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatementImpl;
|
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatementImpl;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
import edu.cornell.mannlib.vitro.webapp.controller.ajax.VitroAjaxController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.DataPropertyStatementDao;
|
import edu.cornell.mannlib.vitro.webapp.dao.DataPropertyStatementDao;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This controller receives Ajax requests for reordering a list of individuals.
|
* This controller receives Ajax requests for reordering a list of individuals.
|
||||||
|
@ -85,7 +99,56 @@ public class ReorderController extends VitroAjaxController {
|
||||||
|
|
||||||
// This may not be the most efficient way. Should we instead build up a Model of retractions and additions, so
|
// This may not be the most efficient way. Should we instead build up a Model of retractions and additions, so
|
||||||
// we only hit the database once?
|
// we only hit the database once?
|
||||||
|
reorderIndividuals(individualUris, vreq, rankPredicate);
|
||||||
|
|
||||||
|
|
||||||
|
response.setStatus(HttpServletResponse.SC_OK);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reorderIndividuals(String[] individualUris, VitroRequest vreq, String rankPredicate) {
|
||||||
|
//Testing new mechanism
|
||||||
|
OntModel writeModel = vreq.getJenaOntModel();
|
||||||
|
Model additions = ModelFactory.createDefaultModel();
|
||||||
|
Model retractions = ModelFactory.createDefaultModel();
|
||||||
|
Property rankPredicateProperty = ResourceFactory.createProperty(rankPredicate);
|
||||||
|
DataProperty dp = vreq.getWebappDaoFactory().getDataPropertyDao().getDataPropertyByURI(rankPredicate);
|
||||||
|
String datapropURI = dp.getRangeDatatypeURI();
|
||||||
int counter = 1;
|
int counter = 1;
|
||||||
|
for (String individualUri : individualUris) {
|
||||||
|
Resource individualResource = ResourceFactory.createResource(individualUri);
|
||||||
|
//Deletions are all old statements with rank predicate
|
||||||
|
retractions.add(writeModel.listStatements(individualResource, rankPredicateProperty, (RDFNode) null));
|
||||||
|
//New statement is new literal with the data property from
|
||||||
|
Literal dataLiteral = null;
|
||||||
|
if(datapropURI != null && datapropURI.length() > 0) {
|
||||||
|
dataLiteral = ResourceFactory.createTypedLiteral(String.valueOf(counter), TypeMapper.getInstance().getSafeTypeByName(datapropURI));
|
||||||
|
} else {
|
||||||
|
dataLiteral = ResourceFactory.createPlainLiteral(String.valueOf(counter));
|
||||||
|
|
||||||
|
}
|
||||||
|
additions.add(individualResource, rankPredicateProperty, dataLiteral);
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Lock lock = null;
|
||||||
|
try{
|
||||||
|
lock = writeModel.getLock();
|
||||||
|
lock.enterCriticalSection(Lock.WRITE);
|
||||||
|
writeModel.getBaseModel().notifyEvent(new EditEvent(null,true));
|
||||||
|
writeModel.add( additions );
|
||||||
|
writeModel.remove( retractions );
|
||||||
|
}catch(Throwable t){
|
||||||
|
log.error("error adding edit change n3required model to in memory model \n"+ t.getMessage() );
|
||||||
|
}finally{
|
||||||
|
writeModel.getBaseModel().notifyEvent(new EditEvent(null,false));
|
||||||
|
lock.leaveCriticalSection();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//old code that for some reason doesn't seem to actually commit the changes
|
||||||
|
/*
|
||||||
|
* int counter = 1;
|
||||||
for (String individualUri : individualUris) {
|
for (String individualUri : individualUris) {
|
||||||
// Retract all existing rank statements for this individual
|
// Retract all existing rank statements for this individual
|
||||||
dpsDao.deleteDataPropertyStatementsForIndividualByDataProperty(individualUri, rankPredicate);
|
dpsDao.deleteDataPropertyStatementsForIndividualByDataProperty(individualUri, rankPredicate);
|
||||||
|
@ -97,7 +160,7 @@ public class ReorderController extends VitroAjaxController {
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
response.setStatus(HttpServletResponse.SC_OK);
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,18 @@ import edu.cornell.mannlib.vitro.webapp.beans.DataProperty;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
|
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatement;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatementImpl;
|
import edu.cornell.mannlib.vitro.webapp.beans.DataPropertyStatementImpl;
|
||||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.controller.edit.ReorderController;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.DataPropertyStatementDao;
|
import edu.cornell.mannlib.vitro.webapp.dao.DataPropertyStatementDao;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.IndividualUpdateEvent;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.IndividualUpdateEvent;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
public class DataPropertyStatementDaoJena extends JenaBaseDao implements DataPropertyStatementDao
|
public class DataPropertyStatementDaoJena extends JenaBaseDao implements DataPropertyStatementDao
|
||||||
{
|
{
|
||||||
|
private static final Log log = LogFactory.getLog(DataPropertyStatementDaoJena.class);
|
||||||
|
|
||||||
|
|
||||||
private DatasetWrapperFactory dwf;
|
private DatasetWrapperFactory dwf;
|
||||||
|
|
||||||
|
@ -156,7 +162,11 @@ public class DataPropertyStatementDaoJena extends JenaBaseDao implements DataPro
|
||||||
Property datatypeProperty = ResourceFactory.createProperty(
|
Property datatypeProperty = ResourceFactory.createProperty(
|
||||||
dataPropertyURI);
|
dataPropertyURI);
|
||||||
ontModel.removeAll(indRes, datatypeProperty, (Literal)null);
|
ontModel.removeAll(indRes, datatypeProperty, (Literal)null);
|
||||||
} finally {
|
} catch(Exception ex) {
|
||||||
|
log.error("Error occurred in removal of data property " + dataPropertyURI + " for " + individualURI);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
|
||||||
getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(
|
getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(
|
||||||
getWebappDaoFactory().getUserURI(),
|
getWebappDaoFactory().getUserURI(),
|
||||||
false,
|
false,
|
||||||
|
@ -280,6 +290,8 @@ public class DataPropertyStatementDaoJena extends JenaBaseDao implements DataPro
|
||||||
if (res != null && prop != null && literal != null && dataPropertyStmt.getData().length()>0) {
|
if (res != null && prop != null && literal != null && dataPropertyStmt.getData().length()>0) {
|
||||||
res.addProperty(prop, literal);
|
res.addProperty(prop, literal);
|
||||||
}
|
}
|
||||||
|
} catch(Exception ex){
|
||||||
|
log.error("Error occurred in adding a data property for " + dataPropertyStmt.toString());
|
||||||
}finally {
|
}finally {
|
||||||
getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),false,dataPropertyStmt.getIndividualURI()));
|
getOntModel().getBaseModel().notifyEvent(new IndividualUpdateEvent(getWebappDaoFactory().getUserURI(),false,dataPropertyStmt.getIndividualURI()));
|
||||||
ontModel.leaveCriticalSection();
|
ontModel.leaveCriticalSection();
|
||||||
|
|
Loading…
Add table
Reference in a new issue