NIHVIVO-945 code change for generation of local names with positive integers.

This commit is contained in:
ass92 2010-07-22 17:51:15 +00:00
parent 035c4c3735
commit ef712eb11a

View file

@ -79,7 +79,6 @@ import edu.cornell.mannlib.vitro.webapp.utils.Csv2Rdf;
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils; import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils;
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestWorkflowProcessor; import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestWorkflowProcessor;
import edu.cornell.mannlib.vitro.webapp.utils.jena.WorkflowOntology; import edu.cornell.mannlib.vitro.webapp.utils.jena.WorkflowOntology;
import edu.cornell.mannlib.vitro.webapp.beans.Ontology; import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao; import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao;
@ -443,6 +442,7 @@ public class JenaIngestController extends BaseEditController {
} }
else if(oldModel!=null){ else if(oldModel!=null){
doPermanentURI(oldModel,newModel,oldNamespace,newNamespace,dNamespace,maker,vreq); doPermanentURI(oldModel,newModel,oldNamespace,newNamespace,dNamespace,maker,vreq);
request.setAttribute("title","Ingest Menu"); request.setAttribute("title","Ingest Menu");
request.setAttribute("bodyJsp",INGEST_MENU_JSP); request.setAttribute("bodyJsp",INGEST_MENU_JSP);
} }
@ -979,7 +979,7 @@ public class JenaIngestController extends BaseEditController {
if(oldNamespace.equals(res.getNameSpace())){ if(oldNamespace.equals(res.getNameSpace())){
Resource newRes = null; Resource newRes = null;
if(!newNamespace.equals("")){ if(!newNamespace.equals("")){
uri = getUnusedURI(newNamespace); uri = getUnusedURI(newNamespace,wdf);
} }
else if(!dNamespace.equals("")){ else if(!dNamespace.equals("")){
try{ try{
@ -1004,21 +1004,23 @@ public class JenaIngestController extends BaseEditController {
} }
private String getUnusedURI(String newNamespace){ private String getUnusedURI(String newNamespace,WebappDaoFactory wdf){
String uri = null; String uri = null;
Random random = new Random(Integer.MAX_VALUE); String errMsg = null;
boolean resourcePresent=true; Random random = new Random();
OntModel vitroJenaModel = (OntModel) getServletContext().getAttribute("baseOntModel"); boolean uriIsGood = false;
Resource res = null; int attempts = 0;
do{
uri = newNamespace + "n" + random.nextInt(); while( uriIsGood == false && attempts < 30 ){
res = vitroJenaModel.getResource(uri); uri = newNamespace + "n" + random.nextInt( Math.min(Integer.MAX_VALUE,(int)Math.pow(2,attempts + 13)) );
StmtIterator stmtItr1 = vitroJenaModel.listStatements(res,(Property)null,(RDFNode)null); errMsg = wdf.checkURI(uri);
if(!stmtItr1.hasNext()){ if( errMsg != null)
resourcePresent=false; uri = null;
res.removeAll((Property)null); else
uriIsGood = true;
attempts++;
} }
}while(resourcePresent);
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){