NIHVIVO-28 Rename resource utility added
This commit is contained in:
parent
6a5194d677
commit
b4ed9e4b31
1 changed files with 110 additions and 6 deletions
|
@ -57,6 +57,7 @@ import com.hp.hpl.jena.sdb.sql.SDBConnection;
|
||||||
import com.hp.hpl.jena.sdb.store.DatabaseType;
|
import com.hp.hpl.jena.sdb.store.DatabaseType;
|
||||||
import com.hp.hpl.jena.sdb.store.LayoutType;
|
import com.hp.hpl.jena.sdb.store.LayoutType;
|
||||||
import com.hp.hpl.jena.shared.Lock;
|
import com.hp.hpl.jena.shared.Lock;
|
||||||
|
import com.hp.hpl.jena.util.ResourceUtils;
|
||||||
import com.hp.hpl.jena.util.iterator.ClosableIterator;
|
import com.hp.hpl.jena.util.iterator.ClosableIterator;
|
||||||
|
|
||||||
import edu.cornell.mannlib.vedit.controller.BaseEditController;
|
import edu.cornell.mannlib.vedit.controller.BaseEditController;
|
||||||
|
@ -65,6 +66,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
||||||
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.InsertException;
|
import edu.cornell.mannlib.vitro.webapp.dao.InsertException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.JenaBaseDao;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.SimpleOntModelSelector;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.SimpleOntModelSelector;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSDBModelMaker;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSDBModelMaker;
|
||||||
|
@ -105,7 +107,9 @@ public class JenaIngestController extends BaseEditController {
|
||||||
private static final String MERGE_RESULT = "/templates/edit/specific/merge_result.jsp";
|
private static final String MERGE_RESULT = "/templates/edit/specific/merge_result.jsp";
|
||||||
private static final String SPARQL_CONSTRUCT_CLASS = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#SPARQLCONSTRUCTQuery";
|
private static final String SPARQL_CONSTRUCT_CLASS = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#SPARQLCONSTRUCTQuery";
|
||||||
private static final String SPARQL_QUERYSTR_PROP = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#queryStr";
|
private static final String SPARQL_QUERYSTR_PROP = "http://vitro.mannlib.cornell.edu/ns/vitro/0.7/sparql#queryStr";
|
||||||
|
private static final String RENAME_RESOURCE = "/jenaIngest/renameResource.jsp";
|
||||||
|
private static final String RENAME_RESULT = "/jenaIngest/renameResult.jsp";
|
||||||
|
|
||||||
public void doGet (HttpServletRequest request, HttpServletResponse response) {
|
public void doGet (HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
|
||||||
if (!checkLoginStatus(request,response)) {
|
if (!checkLoginStatus(request,response)) {
|
||||||
|
@ -458,6 +462,22 @@ public class JenaIngestController extends BaseEditController {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if("renameResource".equals(actionStr)){
|
||||||
|
String uri1 = vreq.getParameter("uri1");
|
||||||
|
String uri2 = vreq.getParameter("uri2");
|
||||||
|
if(uri1!=null){
|
||||||
|
String result = doRename(uri1,uri2,response);
|
||||||
|
request.setAttribute("result",result);
|
||||||
|
request.setAttribute("title","Rename Resources");
|
||||||
|
request.setAttribute("bodyJsp",RENAME_RESULT);
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
request.setAttribute("title","Rename Resource");
|
||||||
|
request.setAttribute("bodyJsp",RENAME_RESOURCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
request.setAttribute("title","Ingest Menu");
|
request.setAttribute("title","Ingest Menu");
|
||||||
|
@ -972,8 +992,6 @@ public class JenaIngestController extends BaseEditController {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
boolean resourcePresent=true;
|
boolean resourcePresent=true;
|
||||||
OntModel vitroJenaModel = (OntModel) getServletContext().getAttribute("baseOntModel");
|
OntModel vitroJenaModel = (OntModel) getServletContext().getAttribute("baseOntModel");
|
||||||
vitroJenaModel.enterCriticalSection(Lock.WRITE);
|
|
||||||
log.info("Going into loop");
|
|
||||||
Resource res = null;
|
Resource res = null;
|
||||||
do{
|
do{
|
||||||
uri = newNamespace + "individual" + random.nextInt();
|
uri = newNamespace + "individual" + random.nextInt();
|
||||||
|
@ -981,11 +999,9 @@ public class JenaIngestController extends BaseEditController {
|
||||||
StmtIterator stmtItr1 = vitroJenaModel.listStatements(res,(Property)null,(RDFNode)null);
|
StmtIterator stmtItr1 = vitroJenaModel.listStatements(res,(Property)null,(RDFNode)null);
|
||||||
if(!stmtItr1.hasNext()){
|
if(!stmtItr1.hasNext()){
|
||||||
resourcePresent=false;
|
resourcePresent=false;
|
||||||
|
res.removeAll((Property)null);
|
||||||
}
|
}
|
||||||
}while(resourcePresent);
|
}while(resourcePresent);
|
||||||
log.info("url assigned");
|
|
||||||
res.removeAll((Property)null);
|
|
||||||
vitroJenaModel.leaveCriticalSection();
|
|
||||||
return uri;
|
return uri;
|
||||||
}
|
}
|
||||||
private String doMerge(String uri1, String uri2,HttpServletResponse response,HttpServletRequest request){
|
private String doMerge(String uri1, String uri2,HttpServletResponse response,HttpServletRequest request){
|
||||||
|
@ -1042,6 +1058,94 @@ public class JenaIngestController extends BaseEditController {
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
private String doRename(String uri1,String uri2,HttpServletResponse response){
|
||||||
|
|
||||||
|
String userURI = null;
|
||||||
|
String uri = null;
|
||||||
|
String result = null;
|
||||||
|
Integer counter = 0;
|
||||||
|
Boolean namespacePresent = false;
|
||||||
|
OntModel baseOntModel = (OntModel)
|
||||||
|
getServletContext().getAttribute("baseOntModel");
|
||||||
|
OntModel ontModel = (OntModel)
|
||||||
|
getServletContext().getAttribute("jenaOntModel");
|
||||||
|
OntModel infOntModel = (OntModel)
|
||||||
|
getServletContext().getAttribute(JenaBaseDao.INFERENCE_ONT_MODEL_ATTRIBUTE_NAME);
|
||||||
|
WebappDaoFactory wdf =
|
||||||
|
(WebappDaoFactory)getServletContext().getAttribute("webappDaoFactory");
|
||||||
|
List<String> urisToChange = new LinkedList<String>();
|
||||||
|
|
||||||
|
ontModel.enterCriticalSection(Lock.READ);
|
||||||
|
try {
|
||||||
|
Iterator<Individual> indIter = ontModel.listIndividuals();
|
||||||
|
while( indIter.hasNext()){
|
||||||
|
Individual ind = indIter.next();
|
||||||
|
String namespace = ind.getNameSpace();
|
||||||
|
if( namespace != null ){
|
||||||
|
if( uri1.equals(namespace) ){
|
||||||
|
uri = ind.getURI();
|
||||||
|
urisToChange.add(uri);
|
||||||
|
namespacePresent = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}finally {
|
||||||
|
ontModel.leaveCriticalSection();
|
||||||
|
}
|
||||||
|
if(!namespacePresent){
|
||||||
|
result = "0 resource renamed";
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for( String oldURIStr : urisToChange){
|
||||||
|
baseOntModel.enterCriticalSection(Lock.WRITE);
|
||||||
|
ontModel.enterCriticalSection(Lock.WRITE);
|
||||||
|
infOntModel.enterCriticalSection(Lock.WRITE);
|
||||||
|
try{
|
||||||
|
long time1 = System.currentTimeMillis();
|
||||||
|
Resource res = baseOntModel.getResource(oldURIStr);
|
||||||
|
Resource infRes = infOntModel.getResource(oldURIStr);
|
||||||
|
long time2 = System.currentTimeMillis();
|
||||||
|
String newURIStr=null;
|
||||||
|
newURIStr = getUnusedURI(uri2);
|
||||||
|
long time3 = System.currentTimeMillis();
|
||||||
|
System.out.println("time to get new uri: " + Long.toString(time3 - time2)
|
||||||
|
);
|
||||||
|
System.out.println("Renaming "+ oldURIStr + " to " + newURIStr);
|
||||||
|
ResourceUtils.renameResource(res,newURIStr);
|
||||||
|
ResourceUtils.renameResource(infRes,newURIStr);
|
||||||
|
long time4 = System.currentTimeMillis();
|
||||||
|
System.out.println(" time to rename : " + Long.toString( time4 - time3));
|
||||||
|
System.out.println(" time for one resource: " + Long.toString( time4 -
|
||||||
|
time1));
|
||||||
|
} finally {
|
||||||
|
infOntModel.leaveCriticalSection();
|
||||||
|
ontModel.leaveCriticalSection();
|
||||||
|
baseOntModel.leaveCriticalSection();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Thread.currentThread().sleep(200);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*baseOntModel.enterCriticalSection(Lock.WRITE);
|
||||||
|
ontModel.enterCriticalSection(Lock.WRITE);
|
||||||
|
try{
|
||||||
|
baseOntModel.getBaseModel().notifyEvent(new EditEvent(null,true));
|
||||||
|
baseOntModel.getBaseModel().notifyEvent(new EditEvent(null,false));
|
||||||
|
} finally {
|
||||||
|
ontModel.leaveCriticalSection();
|
||||||
|
baseOntModel.leaveCriticalSection();
|
||||||
|
}*/
|
||||||
|
result = counter.toString() + " resources renamed";
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
public void prepareSmush (VitroRequest vreq) {
|
public void prepareSmush (VitroRequest vreq) {
|
||||||
String smushPropURI = vreq.getParameter("smushPropURI");
|
String smushPropURI = vreq.getParameter("smushPropURI");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue