diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java index f51a79c2c..9ae5b271d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java @@ -24,6 +24,7 @@ import java.util.regex.Pattern; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; +import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -83,1191 +84,1161 @@ import edu.cornell.mannlib.vitro.webapp.utils.jena.WorkflowOntology; public class JenaIngestController extends BaseEditController { - private static final Log log = LogFactory.getLog(JenaIngestController.class); - - private static final String INGEST_MENU_JSP = "/jenaIngest/ingestMenu.jsp"; - private static final String LIST_MODELS_JSP = "/jenaIngest/listModels.jsp"; - private static final String CREATE_MODEL_JSP = "/jenaIngest/createModel.jsp"; - private static final String LOAD_RDF_DATA_JSP = "/jenaIngest/loadRDFData.jsp"; - private static final String EXECUTE_SPARQL_JSP = "/jenaIngest/sparqlConstruct.jsp"; - private static final String RENAME_BNODES_JSP = "/jenaIngest/renameBNodes.jsp"; - private static final String RENAME_BNODES_URI_SELECT_JSP = "/jenaIngest/renameBNodesURISelect.jsp"; - private static final String SMUSH_JSP = "/jenaIngest/smushSingleModel.jsp"; - private static final String CONNECT_DB_JSP = "/jenaIngest/connectDB.jsp"; - private static final String CSV2RDF_JSP = "/jenaIngest/csv2rdf.jsp"; - private static final String PROCESS_STRINGS_JSP = "/jenaIngest/processStrings.jsp"; - private static final String SUBTRACT_MODELS_JSP = "/jenaIngest/subtractModels.jsp"; - private static final String SPLIT_PROPERTY_VALUES_JSP = "/jenaIngest/splitPropertyValues.jsp"; - private static final String EXECUTE_WORKFLOW_JSP = "/jenaIngest/executeWorkflow.jsp"; - private static final String WORKFLOW_STEP_JSP = "/jenaIngest/workflowStep.jsp"; - private static final String GENERATE_TBOX_JSP = "/jenaIngest/generateTBox.jsp"; - private static final String PERMANENT_URI = "/jenaIngest/permanentURI.jsp"; - private static final String MERGE_RESOURCES = "/jenaIngest/mergeResources.jsp"; - private static final String MERGE_RESULT = "/jenaIngest/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_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"; + private static final Log log = LogFactory.getLog(JenaIngestController.class); + + private static final String INGEST_MENU_JSP = "/jenaIngest/ingestMenu.jsp"; + private static final String LIST_MODELS_JSP = "/jenaIngest/listModels.jsp"; + private static final String CREATE_MODEL_JSP = "/jenaIngest/createModel.jsp"; + private static final String LOAD_RDF_DATA_JSP = "/jenaIngest/loadRDFData.jsp"; + private static final String EXECUTE_SPARQL_JSP = "/jenaIngest/sparqlConstruct.jsp"; + private static final String RENAME_BNODES_JSP = "/jenaIngest/renameBNodes.jsp"; + private static final String RENAME_BNODES_URI_SELECT_JSP = "/jenaIngest/renameBNodesURISelect.jsp"; + private static final String SMUSH_JSP = "/jenaIngest/smushSingleModel.jsp"; + private static final String CONNECT_DB_JSP = "/jenaIngest/connectDB.jsp"; + private static final String CSV2RDF_JSP = "/jenaIngest/csv2rdf.jsp"; + private static final String PROCESS_STRINGS_JSP = "/jenaIngest/processStrings.jsp"; + private static final String SUBTRACT_MODELS_JSP = "/jenaIngest/subtractModels.jsp"; + private static final String SPLIT_PROPERTY_VALUES_JSP = "/jenaIngest/splitPropertyValues.jsp"; + private static final String EXECUTE_WORKFLOW_JSP = "/jenaIngest/executeWorkflow.jsp"; + private static final String WORKFLOW_STEP_JSP = "/jenaIngest/workflowStep.jsp"; + private static final String GENERATE_TBOX_JSP = "/jenaIngest/generateTBox.jsp"; + private static final String PERMANENT_URI = "/jenaIngest/permanentURI.jsp"; + private static final String MERGE_RESOURCES = "/jenaIngest/mergeResources.jsp"; + private static final String MERGE_RESULT = "/jenaIngest/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_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"; - private static final Map attachedModels = new HashMap(); - - @Override - public void doGet(HttpServletRequest request, HttpServletResponse response){ - if (!isAuthorizedToDisplayPage(request, response, new Actions( - new UseAdvancedDataToolsPages()))) { - return; - } - - VitroRequest vreq = new VitroRequest(request); - - ModelMaker maker = getVitroJenaModelMaker(vreq); - - String actionStr = vreq.getParameter("action"); - actionStr = (actionStr != null) ? actionStr : ""; - String modelType = vreq.getParameter("modelType"); - - if("listModels".equals(actionStr)) { - processListModelsRequest(vreq, maker, modelType); - } else if("rdbModels".equals(actionStr)){ - processRDBModelsRequest(vreq, maker, modelType); - } else if("sdbModels".equals(actionStr)){ - processSDBModelsRequest(vreq, maker, modelType); - } else if("createModel".equals(actionStr)) { + private static final Map attachedModels = new HashMap(); + + @Override + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + if (!isAuthorizedToDisplayPage(request, response, new Actions( + new UseAdvancedDataToolsPages()))) { + return; + } + + VitroRequest vreq = new VitroRequest(request); + ModelMaker maker = getVitroJenaModelMaker(vreq); + String modelType = getModelType(vreq, maker); + + String actionStr = vreq.getParameter("action"); + actionStr = (actionStr != null) ? actionStr : ""; + + if("listModels".equals(actionStr)) { + processListModelsRequest(vreq, maker, modelType); + } else if("rdbModels".equals(actionStr)){ + processRDBModelsRequest(vreq, maker, modelType); + } else if("sdbModels".equals(actionStr)){ + processSDBModelsRequest(vreq, maker, modelType); + } else if("createModel".equals(actionStr)) { processCreateModelRequest(vreq, maker, modelType); - } else if("removeModel".equals(actionStr)) { + } else if("removeModel".equals(actionStr)) { processRemoveModelRequest(vreq, maker, modelType); - } else if("loadRDFData".equals(actionStr)) { + } else if("loadRDFData".equals(actionStr)) { processLoadRDFDataRequest(vreq, maker, modelType); - } else if("cleanLiterals".equals(actionStr)) { - processCleanLiteralsRequest(vreq, maker, modelType); - } else if("outputModel".equals(actionStr)) { - processOutputModelRequest(vreq, response, maker, modelType); + } else if("cleanLiterals".equals(actionStr)) { + processCleanLiteralsRequest(vreq, maker, modelType); + } else if("outputModel".equals(actionStr)) { + processOutputModelRequest(vreq, response, maker, modelType); return; // don't attempt to display a JSP - } else if("clearModel".equals(actionStr)) { - processClearModelRequest(vreq, maker, modelType); - } else if("attachModel".equals(actionStr)) { - processAttachModelRequest(vreq, maker, modelType); - } else if("detachModel".equals(actionStr)) { - processDetachModelRequest(vreq, maker, modelType); - } else if("renameBNodes".equals(actionStr)) { - processRenameBNodesRequest(vreq, maker, modelType); - } else if("renameBNodesURISelect".equals(actionStr)){ - processRenameBNodesURISelectRequest(vreq, maker, modelType); - } else if("smushSingleModel".equals(actionStr)) { - processSmushSingleModelRequest(vreq, maker, modelType); - } else if("connectDB".equals(actionStr)) { - processConnectDBRequest(vreq, maker, modelType); - } else if("csv2rdf".equals(actionStr)) { - processCsv2rdfRequest(vreq, maker, modelType); - } else if("processStrings".equals(actionStr)) { - processProcessStringsRequest(vreq, maker, modelType); - } else if("splitPropertyValues".equals(actionStr)) { - processSplitPropertyValuesRequest(vreq, maker, modelType); - } else if("subtractModels".equals(actionStr)) { - processSubtractModelRequest(vreq, maker, modelType); - } else if("executeWorkflow".equals(actionStr)) { - processExecuteWorkflowRequest(vreq, maker, modelType); - } else if("executeSparql".equals(actionStr)) { - processExecuteSparqlRequest(vreq, maker, modelType); - } else if ("generateTBox".equals(actionStr)) { - processGenerateTBoxRequest(vreq, maker, modelType); - } else if("permanentURI".equals(actionStr)){ - processPermanentURIRequest(vreq, maker, modelType); - } else if("mergeResources".equals(actionStr)){ - processMergeResourceRequest(vreq, maker, modelType); - } else if("renameResource".equals(actionStr)){ - processRenameResourceRequest(vreq, response, maker, modelType); - } else if("mergeResult".equals(actionStr)){ - processMergeResultRequest(vreq, response, maker, modelType); - } - - else { - request.setAttribute("title","Ingest Menu"); - request.setAttribute("bodyJsp",INGEST_MENU_JSP); - } - - RequestDispatcher rd = request.getRequestDispatcher( - Controllers.BASIC_JSP); - request.setAttribute("css", - ""); - + } else if("clearModel".equals(actionStr)) { + processClearModelRequest(vreq, maker, modelType); + } else if("attachModel".equals(actionStr)) { + processAttachModelRequest(vreq, maker, modelType); + } else if("detachModel".equals(actionStr)) { + processDetachModelRequest(vreq, maker, modelType); + } else if("renameBNodes".equals(actionStr)) { + processRenameBNodesRequest(vreq, maker, modelType); + } else if("renameBNodesURISelect".equals(actionStr)){ + processRenameBNodesURISelectRequest(vreq, maker, modelType); + } else if("smushSingleModel".equals(actionStr)) { + processSmushSingleModelRequest(vreq, maker, modelType); + } else if("connectDB".equals(actionStr)) { + processConnectDBRequest(vreq, maker, modelType); + } else if("csv2rdf".equals(actionStr)) { + processCsv2rdfRequest(vreq, maker, modelType); + } else if("processStrings".equals(actionStr)) { + processProcessStringsRequest(vreq, maker, modelType); + } else if("splitPropertyValues".equals(actionStr)) { + processSplitPropertyValuesRequest(vreq, maker, modelType); + } else if("subtractModels".equals(actionStr)) { + processSubtractModelRequest(vreq, maker, modelType); + } else if("executeWorkflow".equals(actionStr)) { + processExecuteWorkflowRequest(vreq, maker, modelType); + } else if("executeSparql".equals(actionStr)) { + processExecuteSparqlRequest(vreq, maker, modelType); + } else if ("generateTBox".equals(actionStr)) { + processGenerateTBoxRequest(vreq, maker, modelType); + } else if("permanentURI".equals(actionStr)){ + processPermanentURIRequest(vreq, maker, modelType); + } else if("mergeResources".equals(actionStr)){ + processMergeResourceRequest(vreq, maker, modelType); + } else if("renameResource".equals(actionStr)){ + processRenameResourceRequest(vreq, response, maker, modelType); + } else if("mergeResult".equals(actionStr)){ + processMergeResultRequest(vreq, response, maker, modelType); + } + + else { + request.setAttribute("title","Ingest Menu"); + request.setAttribute("bodyJsp",INGEST_MENU_JSP); + } + + maker = getVitroJenaModelMaker(vreq); + request.setAttribute("modelNames", maker.listModels().toList()); + request.setAttribute("vitroJenaModelMaker", maker); + + RequestDispatcher rd = request.getRequestDispatcher( + Controllers.BASIC_JSP); try { rd.forward(request, response); } catch (Exception e) { log.error(e,e); + throw new ServletException(e); } - - } - - private void processListModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType ) { - String modelT = (String)getServletContext().getAttribute("modelT"); - if(modelT == null){ - boolean initialSwitch = true; // SDB mode initially - if(initialSwitch){ - VitroJenaSDBModelMaker vsmm = (VitroJenaSDBModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - vreq.getSession().setAttribute("vitroJenaModelMaker", vsmm); - modelT = "sdb"; - } - else{ - modelT = "rdb"; - } - } - if(modelT.equals("rdb")){ - vreq.setAttribute("modelType", "rdb"); - vreq.setAttribute("infoLine", "RDB models"); - } - else{ - vreq.setAttribute("modelType", "sdb"); - vreq.setAttribute("infoLine", "SDB models"); - } - vreq.setAttribute("title","Available Models"); - vreq.setAttribute("bodyJsp",LIST_MODELS_JSP); - } - - private void processRDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - VitroJenaModelMaker vjmm = (VitroJenaModelMaker) getServletContext().getAttribute("vitroJenaModelMaker"); - vreq.getSession().setAttribute("vitroJenaModelMaker", vjmm); - getServletContext().setAttribute("modelT", "rdb"); - getServletContext().setAttribute("info", "RDB models"); - vreq.setAttribute("modelType", "rdb"); - vreq.setAttribute("infoLine", "RDB models"); - vreq.setAttribute("title","Available Models"); - vreq.setAttribute("bodyJsp",LIST_MODELS_JSP); - } - - private void processSDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - VitroJenaSDBModelMaker vsmm = (VitroJenaSDBModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - vreq.getSession().setAttribute("vitroJenaModelMaker", vsmm); - getServletContext().setAttribute("modelT", "sdb"); - getServletContext().setAttribute("info", "SDB models"); - vreq.setAttribute("modelType", "sdb"); - vreq.setAttribute("infoLine", "SDB models"); - vreq.setAttribute("title","Available Models"); - vreq.setAttribute("bodyJsp",LIST_MODELS_JSP); - } - - private void processCreateModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String modelName = vreq.getParameter("modelName"); - if (modelName != null) { - if(modelType.equals("sdb")){ - maker = (VitroJenaSDBModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - vreq.setAttribute("modelType", "sdb"); - vreq.setAttribute("infoLine", "SDB models"); - } - else{ - vreq.setAttribute("modelType", "rdb"); - vreq.setAttribute("infoLine", "RDB models"); - } - doCreateModel(modelName, maker); - vreq.setAttribute("title","Available Models"); - vreq.setAttribute("bodyJsp",LIST_MODELS_JSP); - } else { - vreq.setAttribute("modelType", modelType); - vreq.setAttribute("title","Create New Model"); - vreq.setAttribute("bodyJsp",CREATE_MODEL_JSP); - } - } - - private void processRemoveModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - if(modelType.equals("sdb")){ - vreq.setAttribute("modelType", "sdb"); - vreq.setAttribute("infoLine", "SDB models"); - } - else{ - vreq.setAttribute("modelType", "rdb"); - vreq.setAttribute("infoLine", "RDB models"); - } - String modelName = vreq.getParameter("modelName"); - if (modelName!=null) { - doRemoveModel(modelName, maker); - } - vreq.setAttribute("title","Available Models"); - vreq.setAttribute("bodyJsp",LIST_MODELS_JSP); - } - - private void processClearModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - if(modelType.equals("sdb")){ - vreq.setAttribute("infoLine", "SDB models"); - } - else{ - vreq.setAttribute("infoLine", "RDB models"); - } - String modelName = vreq.getParameter("modelName"); - if (modelName != null) { - doClearModel(modelName,maker); - } - vreq.setAttribute("title","Available Models"); - vreq.setAttribute("bodyJsp",LIST_MODELS_JSP); - } - - private void processLoadRDFDataRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String docLoc = vreq.getParameter("docLoc"); - String filePath = vreq.getParameter("filePath"); - String modelName = vreq.getParameter("modelName"); - String languageParam = null; - String language = ( (languageParam = vreq.getParameter("language")) != null) ? languageParam : "RDF/XML"; - if (docLoc!=null && modelName != null) { - doLoadRDFData(modelName,docLoc,filePath,language,maker); - vreq.setAttribute("title","Ingest Menu"); - vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); - } else { - vreq.setAttribute("title","Load RDF Data"); - vreq.setAttribute("bodyJsp",LOAD_RDF_DATA_JSP); - } - } - - private void processOutputModelRequest(VitroRequest vreq, - HttpServletResponse response, - ModelMaker maker, - String modelType) { - String modelNameStr = vreq.getParameter("modelName"); - Model model = getModel(modelNameStr,vreq); - JenaOutputUtils.setNameSpacePrefixes(model,vreq.getWebappDaoFactory()); - model.enterCriticalSection(Lock.READ); - try { - OutputStream out = response.getOutputStream(); - response.setContentType("application/x-turtle"); - //out.write("\n".getBytes()); - model.write(out, "TTL"); - out.flush(); - out.close(); - } catch (com.hp.hpl.jena.shared.CannotEncodeCharacterException cece) { - // there's got to be a better way to do this - byte[] badCharBytes = String.valueOf(cece.getBadChar()).getBytes(); - String errorMsg = "Cannot encode character with byte values: (decimal) "; - for (int i=0; i sourceModelList = new ArrayList(); - for (int i = 0; i < sourceModel.length ; i++) { - Model m = maker.getModel(sourceModel[i]); - if (m != null) { - sourceModelList.add(m); - } - } - Map> propertyMap = - utils.generatePropertyMap(sourceModelList, maker); - List sourceModelNameList = Arrays.asList(sourceModel); - vreq.setAttribute("sourceModel",sourceModelNameList); - vreq.setAttribute("propertyMap", propertyMap); - vreq.setAttribute("enablePropertyPatternURIs", !propertyMap.isEmpty()); - vreq.setAttribute("title","URI Select"); - vreq.setAttribute("bodyJsp",RENAME_BNODES_URI_SELECT_JSP); - } else { - vreq.setAttribute("title","Rename Blank Nodes"); - vreq.setAttribute("bodyJsp",RENAME_BNODES_JSP); - } - } - - private void processRenameBNodesURISelectRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String namespaceEtcStr = vreq.getParameter("namespaceEtcStr"); - String pattern = vreq.getParameter("pattern"); - String concatenate = vreq.getParameter("concatenate"); - String[] sourceModel = (String[]) vreq.getParameterValues("sourceModelName"); - if(namespaceEtcStr != null) { - if (namespaceEtcStr.isEmpty()) { - if ("true".equals(vreq.getParameter("csv2rdf"))) { - processCsv2rdfRequest(vreq, maker, modelType); - return; - } else { - vreq.setAttribute("errorMsg", "Please enter a value."); - processRenameBNodesRequest(vreq, maker, modelType); - return; - } - } - if (concatenate.equals("integer")) { - doRenameBNodes(vreq,namespaceEtcStr, false, null, sourceModel); - } else { - pattern = pattern.trim(); - doRenameBNodes(vreq,namespaceEtcStr, true, pattern, sourceModel); - } - vreq.setAttribute("title", "Ingest Menu"); - vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); - } - else{ - vreq.setAttribute("title", "URI Select"); - vreq.setAttribute("bodyJsp", RENAME_BNODES_URI_SELECT_JSP); - } - } - - private void processSmushSingleModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String propertyURIStr = vreq.getParameter("propertyURI"); - if (propertyURIStr != null) { - doSmushSingleModel(vreq); - vreq.setAttribute("title","Ingest Menu"); - vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); - } else { - vreq.setAttribute("title","Smush Resources"); - vreq.setAttribute("bodyJsp",SMUSH_JSP); - } - } - - private void processConnectDBRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String jdbcUrl = vreq.getParameter("jdbcUrl"); - String tripleStore = vreq.getParameter("tripleStore"); - if (jdbcUrl != null) { - try { - doConnectDB(vreq); - } catch (SQLException sqle) { - throw new RuntimeException("Unable to connect to DB", sqle); - } - if ("SDB".equals(tripleStore)) { - getServletContext().setAttribute("modelT", "sdb"); - getServletContext().setAttribute("info", "SDB models"); - vreq.setAttribute("modelType", "sdb"); - vreq.setAttribute("infoLine", "SDB models"); - } else { - getServletContext().setAttribute("modelT", "rdb"); - getServletContext().setAttribute("info", "RDB models"); - vreq.setAttribute("modelType", "rdb"); - vreq.setAttribute("infoLine", "RDB models"); - } - vreq.setAttribute("title","Ingest Menu"); - vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); - } else { - List dbTypes = DatabaseType.allNames(); - Collections.sort(dbTypes, new CollationSort()); - vreq.setAttribute("dbTypes", dbTypes); - vreq.setAttribute("title", "Connect Jena Database"); - vreq.setAttribute("bodyJsp",CONNECT_DB_JSP); - } - } - - private void processCsv2rdfRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String csvUrl = vreq.getParameter("csvUrl"); - if (csvUrl != null) { - /*doExecuteCsv2Rdf(vreq);*/ - vreq.setAttribute("title","IngestMenu"); - vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); - } else { - vreq.setAttribute("title","Convert CSV to RDF"); - vreq.setAttribute("bodyJsp",CSV2RDF_JSP); - } - } - - private void processProcessStringsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String className = vreq.getParameter("className"); - if (className != null) { - doProcessStrings(vreq); - vreq.setAttribute("title","IngestMenu"); - vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); - } else { - vreq.setAttribute("title","Process Strings"); - vreq.setAttribute("bodyJsp",PROCESS_STRINGS_JSP); - } - } - - private void processSplitPropertyValuesRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String splitRegex = vreq.getParameter("splitRegex"); - if (splitRegex != null) { - doSplitPropertyValues(vreq); - vreq.setAttribute("title","IngestMenu"); - vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); - } else { - vreq.setAttribute("title","Split PropertyValues"); - vreq.setAttribute("bodyJsp",SPLIT_PROPERTY_VALUES_JSP); - } - } - - private void processSubtractModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String modela = vreq.getParameter("modela"); - if (modela != null) { - doSubtractModels(vreq); - vreq.setAttribute("title","IngestMenu"); - vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); - } else { - vreq.setAttribute("title", "Subtract Models"); - vreq.setAttribute("bodyJsp",SUBTRACT_MODELS_JSP); - } - } - - private void processExecuteWorkflowRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String workflowURIStr = vreq.getParameter("workflowURI"); - String workflowStepURIStr = vreq.getParameter("workflowStepURI"); - if (workflowURIStr != null && workflowStepURIStr != null) { - doExecuteWorkflow(vreq); - vreq.setAttribute("title","IngestMenu"); - vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); - } else if (workflowURIStr != null) { - // Select the workflow step at which to start - OntModel jenaOntModel = (OntModel) getModel("vitro:jenaOntModel",vreq); - vreq.setAttribute("workflowSteps", new JenaIngestWorkflowProcessor( - jenaOntModel.getIndividual(workflowURIStr), - getVitroJenaModelMaker(vreq)).getWorkflowSteps(null)); - vreq.setAttribute("title", "Choose Workflow Step"); - vreq.setAttribute("bodyJsp", WORKFLOW_STEP_JSP); - } else { - OntModel jenaOntModel = (OntModel) getServletContext().getAttribute("jenaOntModel"); - jenaOntModel.enterCriticalSection(Lock.READ); - List savedQueryList = new LinkedList(); - try { - Resource workflowClassRes = WorkflowOntology.Workflow; - savedQueryList.addAll(jenaOntModel.listIndividuals(workflowClassRes).toList()); - } finally { - jenaOntModel.leaveCriticalSection(); - } - vreq.setAttribute("workflows",savedQueryList); - vreq.setAttribute("title", "Execute Workflow"); - vreq.setAttribute("bodyJsp", EXECUTE_WORKFLOW_JSP); - } - } - - private void processExecuteSparqlRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String sparqlQueryStr = vreq.getParameter("sparqlQueryStr"); - OntModel jenaOntModel = (OntModel) getServletContext().getAttribute("jenaOntModel"); - jenaOntModel.enterCriticalSection(Lock.READ); - List savedQueryList = new LinkedList(); - try { - Resource sparqlConstructClassRes = ResourceFactory.createResource(SPARQL_CONSTRUCT_CLASS); - savedQueryList.addAll(jenaOntModel.listIndividuals(sparqlConstructClassRes).toList()); - } finally { - jenaOntModel.leaveCriticalSection(); - } - /*ass92*/ + + } + + private void processListModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + showModelList(vreq, maker, modelType); + } + + private void processRDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + VitroJenaModelMaker vjmm = (VitroJenaModelMaker) getServletContext().getAttribute("vitroJenaModelMaker"); + vreq.getSession().setAttribute("vitroJenaModelMaker", vjmm); + showModelList(vreq, vjmm, "rdb"); + } + + private void processSDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + VitroJenaSDBModelMaker vsmm = (VitroJenaSDBModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); + vreq.getSession().setAttribute("vitroJenaModelMaker", vsmm); + showModelList(vreq, vsmm, "sdb"); + } + + private void processCreateModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String modelName = vreq.getParameter("modelName"); + if (modelName != null) { + doCreateModel(modelName, maker); + showModelList(vreq, maker, modelType); + } else { + vreq.setAttribute("modelType", modelType); + vreq.setAttribute("title","Create New Model"); + vreq.setAttribute("bodyJsp",CREATE_MODEL_JSP); + } + } + + private void processRemoveModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String modelName = vreq.getParameter("modelName"); + if (modelName!=null) { + doRemoveModel(modelName, maker); + } + showModelList(vreq, maker, modelType); + } + + private void processClearModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String modelName = vreq.getParameter("modelName"); + if (modelName != null) { + doClearModel(modelName,maker); + } + showModelList(vreq, maker, modelType); + } + + private void processLoadRDFDataRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String docLoc = vreq.getParameter("docLoc"); + String filePath = vreq.getParameter("filePath"); + String modelName = vreq.getParameter("modelName"); + String languageParam = null; + String language = ( (languageParam = vreq.getParameter("language")) != null) ? languageParam : "RDF/XML"; + if (docLoc!=null && modelName != null) { + doLoadRDFData(modelName,docLoc,filePath,language,maker); + vreq.setAttribute("title","Ingest Menu"); + vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); + } else { + vreq.setAttribute("title","Load RDF Data"); + vreq.setAttribute("bodyJsp",LOAD_RDF_DATA_JSP); + } + } + + private void processOutputModelRequest(VitroRequest vreq, + HttpServletResponse response, + ModelMaker maker, + String modelType) { + String modelNameStr = vreq.getParameter("modelName"); + Model model = getModel(modelNameStr,vreq); + JenaOutputUtils.setNameSpacePrefixes(model,vreq.getWebappDaoFactory()); + model.enterCriticalSection(Lock.READ); + try { + OutputStream out = response.getOutputStream(); + response.setContentType("application/x-turtle"); + //out.write("\n".getBytes()); + model.write(out, "TTL"); + out.flush(); + out.close(); + } catch (com.hp.hpl.jena.shared.CannotEncodeCharacterException cece) { + // there's got to be a better way to do this + byte[] badCharBytes = String.valueOf(cece.getBadChar()).getBytes(); + String errorMsg = "Cannot encode character with byte values: (decimal) "; + for (int i=0; i sourceModelList = new ArrayList(); + for (int i = 0; i < sourceModel.length ; i++) { + Model m = maker.getModel(sourceModel[i]); + if (m != null) { + sourceModelList.add(m); + } + } + Map> propertyMap = + utils.generatePropertyMap(sourceModelList, maker); + List sourceModelNameList = Arrays.asList(sourceModel); + vreq.setAttribute("sourceModel",sourceModelNameList); + vreq.setAttribute("propertyMap", propertyMap); + vreq.setAttribute("enablePropertyPatternURIs", !propertyMap.isEmpty()); + vreq.setAttribute("title","URI Select"); + vreq.setAttribute("bodyJsp",RENAME_BNODES_URI_SELECT_JSP); + } else { + vreq.setAttribute("title","Rename Blank Nodes"); + vreq.setAttribute("bodyJsp",RENAME_BNODES_JSP); + } + } + + private void processRenameBNodesURISelectRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String namespaceEtcStr = vreq.getParameter("namespaceEtcStr"); + String pattern = vreq.getParameter("pattern"); + String concatenate = vreq.getParameter("concatenate"); + String[] sourceModel = (String[]) vreq.getParameterValues("sourceModelName"); + if(namespaceEtcStr != null) { + if (namespaceEtcStr.isEmpty()) { + if ("true".equals(vreq.getParameter("csv2rdf"))) { + processCsv2rdfRequest(vreq, maker, modelType); + return; + } else { + vreq.setAttribute("errorMsg", "Please enter a value."); + processRenameBNodesRequest(vreq, maker, modelType); + return; + } + } + if (concatenate.equals("integer")) { + doRenameBNodes(vreq,namespaceEtcStr, false, null, sourceModel); + } else { + pattern = pattern.trim(); + doRenameBNodes(vreq,namespaceEtcStr, true, pattern, sourceModel); + } + vreq.setAttribute("title", "Ingest Menu"); + vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); + } + else{ + vreq.setAttribute("title", "URI Select"); + vreq.setAttribute("bodyJsp", RENAME_BNODES_URI_SELECT_JSP); + } + } + + private void processSmushSingleModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String propertyURIStr = vreq.getParameter("propertyURI"); + if (propertyURIStr != null) { + doSmushSingleModel(vreq); + vreq.setAttribute("title","Ingest Menu"); + vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); + } else { + vreq.setAttribute("title","Smush Resources"); + vreq.setAttribute("bodyJsp",SMUSH_JSP); + } + } + + private void processConnectDBRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String jdbcUrl = vreq.getParameter("jdbcUrl"); + String tripleStore = vreq.getParameter("tripleStore"); + if (jdbcUrl != null) { + try { + doConnectDB(vreq); + } catch (SQLException sqle) { + throw new RuntimeException("Unable to connect to DB", sqle); + } + if ("SDB".equals(tripleStore)) { + getServletContext().setAttribute("modelT", "sdb"); + getServletContext().setAttribute("info", "SDB models"); + vreq.setAttribute("modelType", "sdb"); + vreq.setAttribute("infoLine", "SDB models"); + } else { + getServletContext().setAttribute("modelT", "rdb"); + getServletContext().setAttribute("info", "RDB models"); + vreq.setAttribute("modelType", "rdb"); + vreq.setAttribute("infoLine", "RDB models"); + } + vreq.setAttribute("title","Ingest Menu"); + vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); + } else { + List dbTypes = DatabaseType.allNames(); + Collections.sort(dbTypes, new CollationSort()); + vreq.setAttribute("dbTypes", dbTypes); + vreq.setAttribute("title", "Connect Jena Database"); + vreq.setAttribute("bodyJsp",CONNECT_DB_JSP); + } + } + + private void processCsv2rdfRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String csvUrl = vreq.getParameter("csvUrl"); + if (csvUrl != null) { + /*doExecuteCsv2Rdf(vreq);*/ + vreq.setAttribute("title","IngestMenu"); + vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); + } else { + vreq.setAttribute("title","Convert CSV to RDF"); + vreq.setAttribute("bodyJsp",CSV2RDF_JSP); + } + } + + private void processProcessStringsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String className = vreq.getParameter("className"); + if (className != null) { + doProcessStrings(vreq); + vreq.setAttribute("title","IngestMenu"); + vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); + } else { + vreq.setAttribute("title","Process Strings"); + vreq.setAttribute("bodyJsp",PROCESS_STRINGS_JSP); + } + } + + private void processSplitPropertyValuesRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String splitRegex = vreq.getParameter("splitRegex"); + if (splitRegex != null) { + doSplitPropertyValues(vreq); + vreq.setAttribute("title","IngestMenu"); + vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); + } else { + vreq.setAttribute("title","Split PropertyValues"); + vreq.setAttribute("bodyJsp",SPLIT_PROPERTY_VALUES_JSP); + } + } + + private void processSubtractModelRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String modela = vreq.getParameter("modela"); + if (modela != null) { + doSubtractModels(vreq); + vreq.setAttribute("title","IngestMenu"); + vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); + } else { + vreq.setAttribute("title", "Subtract Models"); + vreq.setAttribute("bodyJsp",SUBTRACT_MODELS_JSP); + } + } + + private void processExecuteWorkflowRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String workflowURIStr = vreq.getParameter("workflowURI"); + String workflowStepURIStr = vreq.getParameter("workflowStepURI"); + if (workflowURIStr != null && workflowStepURIStr != null) { + doExecuteWorkflow(vreq); + vreq.setAttribute("title","IngestMenu"); + vreq.setAttribute("bodyJsp", INGEST_MENU_JSP); + } else if (workflowURIStr != null) { + // Select the workflow step at which to start + OntModel jenaOntModel = (OntModel) getModel("vitro:jenaOntModel",vreq); + vreq.setAttribute("workflowSteps", new JenaIngestWorkflowProcessor( + jenaOntModel.getIndividual(workflowURIStr), + getVitroJenaModelMaker(vreq)).getWorkflowSteps(null)); + vreq.setAttribute("title", "Choose Workflow Step"); + vreq.setAttribute("bodyJsp", WORKFLOW_STEP_JSP); + } else { + OntModel jenaOntModel = (OntModel) getServletContext().getAttribute("jenaOntModel"); + jenaOntModel.enterCriticalSection(Lock.READ); + List savedQueryList = new LinkedList(); + try { + Resource workflowClassRes = WorkflowOntology.Workflow; + savedQueryList.addAll(jenaOntModel.listIndividuals(workflowClassRes).toList()); + } finally { + jenaOntModel.leaveCriticalSection(); + } + vreq.setAttribute("workflows",savedQueryList); + vreq.setAttribute("title", "Execute Workflow"); + vreq.setAttribute("bodyJsp", EXECUTE_WORKFLOW_JSP); + } + } + + private void processExecuteSparqlRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String sparqlQueryStr = vreq.getParameter("sparqlQueryStr"); + OntModel jenaOntModel = (OntModel) getServletContext().getAttribute("jenaOntModel"); + jenaOntModel.enterCriticalSection(Lock.READ); + List savedQueryList = new LinkedList(); + try { + Resource sparqlConstructClassRes = ResourceFactory.createResource(SPARQL_CONSTRUCT_CLASS); + savedQueryList.addAll(jenaOntModel.listIndividuals(sparqlConstructClassRes).toList()); + } finally { + jenaOntModel.leaveCriticalSection(); + } + /*ass92*/ OntologyDao daoObj = vreq.getFullWebappDaoFactory().getOntologyDao(); List ontologiesObj = daoObj.getAllOntologies(); ArrayList prefixList = new ArrayList(); if(ontologiesObj !=null && ontologiesObj.size()>0){ - Iterator ontItr = ontologiesObj.iterator(); - while(ontItr.hasNext()){ - Ontology ont = (Ontology) ontItr.next(); - prefixList.add(ont.getPrefix() == null ? "(not yet specified)" : ont.getPrefix()); - prefixList.add(ont.getURI() == null ? "" : ont.getURI()); - } + Iterator ontItr = ontologiesObj.iterator(); + while(ontItr.hasNext()){ + Ontology ont = (Ontology) ontItr.next(); + prefixList.add(ont.getPrefix() == null ? "(not yet specified)" : ont.getPrefix()); + prefixList.add(ont.getURI() == null ? "" : ont.getURI()); + } } else{ - prefixList.add("" + "No Ontologies added" + ""); - prefixList.add("" + "Load Ontologies" + ""); + prefixList.add("" + "No Ontologies added" + ""); + prefixList.add("" + "Load Ontologies" + ""); } vreq.setAttribute("prefixList", prefixList); /*complete*/ - if (sparqlQueryStr != null) { - String validationMessage = ""; - if (vreq.getParameterValues("sourceModelName") == null) { - validationMessage += "

Please select one or more source models.

"; - } - if (vreq.getParameter("destinationModelName") == null) { - validationMessage += "

Please select a destination model

"; - } - if (validationMessage.length() > 0) { - vreq.setAttribute("validationMessage", validationMessage); - } else { - long constructedStmtCount = 0; - try { - constructedStmtCount = doExecuteSparql(vreq); - } catch (QueryParseException qpe) { - String errorMsg = "

Unable to parse query:

"; - if (qpe.getMessage() != null) { - errorMsg += "

" + qpe.getMessage() + "

"; - } - vreq.setAttribute("errorMsg", errorMsg); - } catch (InconsistentOntologyException ioe) { - String errorMsg = "

Inconsistent source ontology:

"; - if (ioe.getMessage() != null) { - errorMsg += "

" + ioe.getMessage() + "

"; - } - vreq.setAttribute("errorMsg", errorMsg); - } - vreq.setAttribute("constructedStmtCount", constructedStmtCount); - } - vreq.setAttribute("savedQueries",savedQueryList); - vreq.setAttribute("title","SPARQL CONSTRUCT result"); - vreq.setAttribute("bodyJsp",EXECUTE_SPARQL_JSP); - } else { - vreq.setAttribute("savedQueries",savedQueryList); - vreq.setAttribute("title","Execute SPARQL Construct"); - vreq.setAttribute("bodyJsp",EXECUTE_SPARQL_JSP); - } - } - - private void processGenerateTBoxRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String testParam = vreq.getParameter("sourceModelName"); - if (testParam != null) { - doGenerateTBox(vreq); - vreq.setAttribute("title","Ingest Menu"); - vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); - } else { - vreq.setAttribute("title","Generate TBox from Assertions Data"); - vreq.setAttribute("bodyJsp",GENERATE_TBOX_JSP); - } - } - - private void processPermanentURIRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String modelName = vreq.getParameter("modelName"); - String oldModel = vreq.getParameter("oldModel"); - String newModel = vreq.getParameter("newModel"); - String oldNamespace = vreq.getParameter("oldNamespace"); - String newNamespace = vreq.getParameter("newNamespace"); - String dNamespace = vreq.getParameter("defaultNamespace"); - if(modelName!=null){ - Model m = maker.getModel(modelName); - ArrayList namespaceList = new ArrayList(); - ResIterator resItr = m.listResourcesWithProperty((Property)null); - if(resItr!=null){ - while(resItr.hasNext()){ - String namespace = resItr.nextResource().getNameSpace(); - if(!namespaceList.contains(namespace)){ - namespaceList.add(namespace); - } - } - } else { - namespaceList.add("no resources present"); - } - String defaultNamespace = vreq.getFullWebappDaoFactory().getDefaultNamespace(); - vreq.setAttribute("modelName", modelName); - vreq.setAttribute("defaultNamespace", defaultNamespace); - vreq.setAttribute("namespaceList", namespaceList); - vreq.setAttribute("title","Permanent URI"); - vreq.setAttribute("bodyJsp",PERMANENT_URI); - } else if(oldModel != null) { - JenaIngestUtils utils = new JenaIngestUtils(); - utils.doPermanentURI(oldModel,newModel,oldNamespace,newNamespace,dNamespace,maker,vreq); - vreq.setAttribute("title","Ingest Menu"); - vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); - } - } - - private void processMergeResourceRequest(VitroRequest vreq, ModelMaker maker, String modelType) { - String uri1 = vreq.getParameter("uri1"); // get primary uri - String uri2 = vreq.getParameter("uri2"); // get secondary uri - String usePrimaryLabelOnly = vreq.getParameter("usePrimaryLabelOnly"); - - if(uri1!=null){ - JenaIngestUtils utils = new JenaIngestUtils(); - /* - * get baseOnt, Ont and infOnt models - */ - OntModel baseOntModel = (OntModel) getServletContext().getAttribute("baseOntModel"); - OntModel ontModel = (OntModel) - getServletContext().getAttribute("jenaOntModel"); - OntModel infOntModel = (OntModel) - getServletContext().getAttribute(JenaBaseDao.INFERENCE_ONT_MODEL_ATTRIBUTE_NAME); - /* - * calling method that does the merge operation. - */ - String result = utils.doMerge(uri1,uri2,baseOntModel,ontModel,infOntModel,usePrimaryLabelOnly); - vreq.getSession().setAttribute("leftoverModel", utils.getLeftOverModel()); - vreq.setAttribute("result",result); - vreq.setAttribute("title","Merge Resources"); - vreq.setAttribute("bodyJsp",MERGE_RESULT); - } - else{ - vreq.setAttribute("title","Merge Resources"); - vreq.setAttribute("bodyJsp",MERGE_RESOURCES); - } - } - - private void processRenameResourceRequest(VitroRequest vreq, - HttpServletResponse response, - ModelMaker maker, - String modelType) { - String oldNamespace = vreq.getParameter("oldNamespace"); - String newNamespace = vreq.getParameter("newNamespace"); - String errorMsg = ""; - if (oldNamespace != null) { - if (oldNamespace.isEmpty() && !newNamespace.isEmpty()) { - errorMsg = "Please enter the old namespace to be changed."; - } else if (!oldNamespace.isEmpty() && newNamespace.isEmpty()) { - errorMsg = "Please enter the new namespace."; - } else if (oldNamespace.isEmpty() && newNamespace.isEmpty()) { - errorMsg = "Please enter the namespaces."; - } else if (oldNamespace.equals(newNamespace)) { - errorMsg = "Please enter two different namespaces."; - } - if (!errorMsg.isEmpty()) { - vreq.setAttribute("errorMsg", errorMsg); - vreq.setAttribute("oldNamespace", oldNamespace); - vreq.setAttribute("newNamespace", newNamespace); - vreq.setAttribute("title","Rename Resource"); - vreq.setAttribute("bodyJsp",RENAME_RESOURCE); - } else { - String result = doRename(oldNamespace, newNamespace, response); - vreq.setAttribute("result",result); - vreq.setAttribute("title","Rename Resources"); - vreq.setAttribute("bodyJsp",RENAME_RESULT); - } - } else{ - vreq.setAttribute("title","Rename Resource"); - vreq.setAttribute("bodyJsp",RENAME_RESOURCE); - } - } - - private void processMergeResultRequest(VitroRequest vreq, - HttpServletResponse response, - ModelMaker maker, - String modelType) { + if (sparqlQueryStr != null) { + String validationMessage = ""; + if (vreq.getParameterValues("sourceModelName") == null) { + validationMessage += "

Please select one or more source models.

"; + } + if (vreq.getParameter("destinationModelName") == null) { + validationMessage += "

Please select a destination model

"; + } + if (validationMessage.length() > 0) { + vreq.setAttribute("validationMessage", validationMessage); + } else { + long constructedStmtCount = 0; + try { + constructedStmtCount = doExecuteSparql(vreq); + } catch (QueryParseException qpe) { + String errorMsg = "

Unable to parse query:

"; + if (qpe.getMessage() != null) { + errorMsg += "

" + qpe.getMessage() + "

"; + } + vreq.setAttribute("errorMsg", errorMsg); + } catch (InconsistentOntologyException ioe) { + String errorMsg = "

Inconsistent source ontology:

"; + if (ioe.getMessage() != null) { + errorMsg += "

" + ioe.getMessage() + "

"; + } + vreq.setAttribute("errorMsg", errorMsg); + } + vreq.setAttribute("constructedStmtCount", constructedStmtCount); + } + vreq.setAttribute("savedQueries",savedQueryList); + vreq.setAttribute("title","SPARQL CONSTRUCT result"); + vreq.setAttribute("bodyJsp",EXECUTE_SPARQL_JSP); + } else { + vreq.setAttribute("savedQueries",savedQueryList); + vreq.setAttribute("title","Execute SPARQL Construct"); + vreq.setAttribute("bodyJsp",EXECUTE_SPARQL_JSP); + } + } + + private void processGenerateTBoxRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String testParam = vreq.getParameter("sourceModelName"); + if (testParam != null) { + doGenerateTBox(vreq); + vreq.setAttribute("title","Ingest Menu"); + vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); + } else { + vreq.setAttribute("title","Generate TBox from Assertions Data"); + vreq.setAttribute("bodyJsp",GENERATE_TBOX_JSP); + } + } + + private void processPermanentURIRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String modelName = vreq.getParameter("modelName"); + String oldModel = vreq.getParameter("oldModel"); + String newModel = vreq.getParameter("newModel"); + String oldNamespace = vreq.getParameter("oldNamespace"); + String newNamespace = vreq.getParameter("newNamespace"); + String dNamespace = vreq.getParameter("defaultNamespace"); + if(modelName!=null){ + Model m = maker.getModel(modelName); + ArrayList namespaceList = new ArrayList(); + ResIterator resItr = m.listResourcesWithProperty((Property)null); + if(resItr!=null){ + while(resItr.hasNext()){ + String namespace = resItr.nextResource().getNameSpace(); + if(!namespaceList.contains(namespace)){ + namespaceList.add(namespace); + } + } + } else { + namespaceList.add("no resources present"); + } + String defaultNamespace = vreq.getFullWebappDaoFactory().getDefaultNamespace(); + vreq.setAttribute("modelName", modelName); + vreq.setAttribute("defaultNamespace", defaultNamespace); + vreq.setAttribute("namespaceList", namespaceList); + vreq.setAttribute("title","Permanent URI"); + vreq.setAttribute("bodyJsp",PERMANENT_URI); + } else if(oldModel != null) { + JenaIngestUtils utils = new JenaIngestUtils(); + utils.doPermanentURI(oldModel,newModel,oldNamespace,newNamespace,dNamespace,maker,vreq); + vreq.setAttribute("title","Ingest Menu"); + vreq.setAttribute("bodyJsp",INGEST_MENU_JSP); + } + } + + private void processMergeResourceRequest(VitroRequest vreq, ModelMaker maker, String modelType) { + String uri1 = vreq.getParameter("uri1"); // get primary uri + String uri2 = vreq.getParameter("uri2"); // get secondary uri + String usePrimaryLabelOnly = vreq.getParameter("usePrimaryLabelOnly"); + + if(uri1!=null){ + JenaIngestUtils utils = new JenaIngestUtils(); + /* + * get baseOnt, Ont and infOnt models + */ + OntModel baseOntModel = (OntModel) getServletContext().getAttribute("baseOntModel"); + OntModel ontModel = (OntModel) + getServletContext().getAttribute("jenaOntModel"); + OntModel infOntModel = (OntModel) + getServletContext().getAttribute(JenaBaseDao.INFERENCE_ONT_MODEL_ATTRIBUTE_NAME); + /* + * calling method that does the merge operation. + */ + String result = utils.doMerge(uri1,uri2,baseOntModel,ontModel,infOntModel,usePrimaryLabelOnly); + vreq.getSession().setAttribute("leftoverModel", utils.getLeftOverModel()); + vreq.setAttribute("result",result); + vreq.setAttribute("title","Merge Resources"); + vreq.setAttribute("bodyJsp",MERGE_RESULT); + } + else{ + vreq.setAttribute("title","Merge Resources"); + vreq.setAttribute("bodyJsp",MERGE_RESOURCES); + } + } + + private void processRenameResourceRequest(VitroRequest vreq, + HttpServletResponse response, + ModelMaker maker, + String modelType) { + String oldNamespace = vreq.getParameter("oldNamespace"); + String newNamespace = vreq.getParameter("newNamespace"); + String errorMsg = ""; + if (oldNamespace != null) { + if (oldNamespace.isEmpty() && !newNamespace.isEmpty()) { + errorMsg = "Please enter the old namespace to be changed."; + } else if (!oldNamespace.isEmpty() && newNamespace.isEmpty()) { + errorMsg = "Please enter the new namespace."; + } else if (oldNamespace.isEmpty() && newNamespace.isEmpty()) { + errorMsg = "Please enter the namespaces."; + } else if (oldNamespace.equals(newNamespace)) { + errorMsg = "Please enter two different namespaces."; + } + if (!errorMsg.isEmpty()) { + vreq.setAttribute("errorMsg", errorMsg); + vreq.setAttribute("oldNamespace", oldNamespace); + vreq.setAttribute("newNamespace", newNamespace); + vreq.setAttribute("title","Rename Resource"); + vreq.setAttribute("bodyJsp",RENAME_RESOURCE); + } else { + String result = doRename(oldNamespace, newNamespace, response); + vreq.setAttribute("result",result); + vreq.setAttribute("title","Rename Resources"); + vreq.setAttribute("bodyJsp",RENAME_RESULT); + } + } else{ + vreq.setAttribute("title","Rename Resource"); + vreq.setAttribute("bodyJsp",RENAME_RESOURCE); + } + } + + private void processMergeResultRequest(VitroRequest vreq, + HttpServletResponse response, + ModelMaker maker, + String modelType) { - Model lmodel = (Model) vreq.getSession().getAttribute("leftoverModel"); - response.setContentType("RDF/XML-ABBREV"); - try { - OutputStream outStream = response.getOutputStream(); - outStream.write("".getBytes()); - lmodel.write( outStream,"RDF/XML-ABBREV"); - outStream.flush(); - outStream.close(); - } - catch(IOException ioe){ - throw new RuntimeException(ioe); - } - } - - private ModelMaker getVitroJenaModelMaker(HttpServletRequest request) { - ModelMaker myVjmm = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - myVjmm = (myVjmm == null) ? (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker") : myVjmm; - return new VitroJenaSpecialModelMaker(myVjmm, request); - } - - private Model getModel(String name, HttpServletRequest request) { - if ("vitro:jenaOntModel".equals(name)) { - Object sessionOntModel = request.getSession().getAttribute("jenaOntModel"); - if (sessionOntModel != null && sessionOntModel instanceof OntModel) { - return (OntModel) sessionOntModel; - } else { - return (OntModel) getServletContext().getAttribute("jenaOntModel"); - } - } else if ("vitro:baseOntModel".equals(name)) { - Object sessionOntModel = request.getSession().getAttribute("baseOntModel"); - if (sessionOntModel != null && sessionOntModel instanceof OntModel) { - return (OntModel) sessionOntModel; - } else { - return (OntModel) getServletContext().getAttribute("baseOntModel"); - } - } else if ("vitro:inferenceOntModel".equals(name)) { - Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel"); - if (sessionOntModel != null && sessionOntModel instanceof OntModel) { - return (OntModel) sessionOntModel; - } else { - return (OntModel) getServletContext().getAttribute("inferenceOntModel"); - } - } else { - return getVitroJenaModelMaker(request).getModel(name); - } - } - - private void doCreateModel(String modelName, ModelMaker modelMaker) { - modelMaker.createModel(modelName); - } - - private void doRemoveModel(String modelName, ModelMaker modelMaker) { - //Try to detach first since it cause problems to remove an attached model. - doDetachModel(modelName, modelMaker); - log.debug("Removing " + modelName + " from webapp"); - modelMaker.removeModel(modelName); - } - - private void doClearModel(String modelName, ModelMaker modelMaker) { - Model m = modelMaker.getModel(modelName); - OntModel o = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM,m); - o.enterCriticalSection(Lock.WRITE); - try { - o.removeAll(null,null,null); - } finally { - o.leaveCriticalSection(); - } - // removeAll() doesn't work with the listeners! - } - - private void doLoadRDFData(String modelName, String docLoc, String filePath, String language, ModelMaker modelMaker) { - Model m = modelMaker.getModel(modelName); - m.enterCriticalSection(Lock.WRITE); - try { - if ( (docLoc != null) && (docLoc.length()>0) ) { - m.read(docLoc, language); - } else if ( (filePath != null) && (filePath.length()>0) ) { - File file = new File(filePath); - File[] files; - if (file.isDirectory()) { - files = file.listFiles(); - } else { - files = new File[1]; - files[0] = file; - } - for (int i=0; i".getBytes()); + lmodel.write( outStream,"RDF/XML-ABBREV"); + outStream.flush(); + outStream.close(); + } + catch(IOException ioe){ + throw new RuntimeException(ioe); + } + } + + protected ModelMaker getVitroJenaModelMaker(HttpServletRequest request) { + ModelMaker myVjmm = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); + myVjmm = (myVjmm == null) ? (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker") : myVjmm; + return new VitroJenaSpecialModelMaker(myVjmm, request); + } + + private Model getModel(String name, HttpServletRequest request) { + if ("vitro:jenaOntModel".equals(name)) { + Object sessionOntModel = request.getSession().getAttribute("jenaOntModel"); + if (sessionOntModel != null && sessionOntModel instanceof OntModel) { + return (OntModel) sessionOntModel; + } else { + return (OntModel) getServletContext().getAttribute("jenaOntModel"); + } + } else if ("vitro:baseOntModel".equals(name)) { + Object sessionOntModel = request.getSession().getAttribute("baseOntModel"); + if (sessionOntModel != null && sessionOntModel instanceof OntModel) { + return (OntModel) sessionOntModel; + } else { + return (OntModel) getServletContext().getAttribute("baseOntModel"); + } + } else if ("vitro:inferenceOntModel".equals(name)) { + Object sessionOntModel = request.getSession().getAttribute("inferenceOntModel"); + if (sessionOntModel != null && sessionOntModel instanceof OntModel) { + return (OntModel) sessionOntModel; + } else { + return (OntModel) getServletContext().getAttribute("inferenceOntModel"); + } + } else { + return getVitroJenaModelMaker(request).getModel(name); + } + } + + private String getModelType(VitroRequest vreq, ModelMaker maker) { + String modelType = vreq.getParameter("modelType"); + maker = (maker instanceof VitroJenaSpecialModelMaker) + ? ((VitroJenaSpecialModelMaker) maker).getInnerModelMaker() + : maker; + if (modelType == null) { + if (maker instanceof VitroJenaSDBModelMaker) { + modelType = "sdb"; + } else { + modelType = "rdb"; + } + } + return modelType; + } + + private void doCreateModel(String modelName, ModelMaker modelMaker) { + modelMaker.createModel(modelName); + } + + private void doRemoveModel(String modelName, ModelMaker modelMaker) { + //Try to detach first since it cause problems to remove an attached model. + doDetachModel(modelName, modelMaker); + log.debug("Removing " + modelName + " from webapp"); + modelMaker.removeModel(modelName); + } + + private void doClearModel(String modelName, ModelMaker modelMaker) { + Model m = modelMaker.getModel(modelName); + OntModel o = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM,m); + o.enterCriticalSection(Lock.WRITE); + try { + o.removeAll(null,null,null); + } finally { + o.leaveCriticalSection(); + } + // removeAll() doesn't work with the listeners! + } + + private void doLoadRDFData(String modelName, String docLoc, String filePath, String language, ModelMaker modelMaker) { + Model m = modelMaker.getModel(modelName); + m.enterCriticalSection(Lock.WRITE); + try { + if ( (docLoc != null) && (docLoc.length()>0) ) { + m.read(docLoc, language); + } else if ( (filePath != null) && (filePath.length()>0) ) { + File file = new File(filePath); + File[] files; + if (file.isDirectory()) { + files = file.listFiles(); + } else { + files = new File[1]; + files[0] = file; + } + for (int i=0; i 0 ) ) { - savedAdditionsModel = getModel(additionsModelStr, vreq); - } - String retractionsModelStr = vreq.getParameter("retractionsModel"); - if ( (retractionsModelStr != null) && ( retractionsModelStr.length() > 0 ) ) { - savedRetractionsModel = getModel(retractionsModelStr, vreq); - } - Model additionsModel = ModelFactory.createDefaultModel(); - Model retractionsModel = ModelFactory.createDefaultModel(); - Class stringProcessorClass = Class.forName(className); - Object processor = stringProcessorClass.newInstance(); - Class[] methArgs = {String.class}; - Method meth = stringProcessorClass.getMethod(methodName,methArgs); - Property prop = ResourceFactory.createProperty(propertyName); - Property newProp = ResourceFactory.createProperty(newPropertyName); - destination.enterCriticalSection(Lock.READ); - try { - ClosableIterator closeIt = destination.listStatements((Resource)null,prop,(RDFNode)null); - for (Iterator stmtIt = closeIt; stmtIt.hasNext(); ) { - Statement stmt = (Statement) stmtIt.next(); - if (stmt.getObject().isLiteral()) { - Literal lit = (Literal) stmt.getObject(); - String lex = lit.getLexicalForm(); - Object[] args = {lex}; - String newLex = ""; - try { - newLex = (String) meth.invoke(processor,args); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } - if (!newLex.equals(lex)) { - retractionsModel.add(stmt); - if (newLex.length()>0) { - Literal newLit = null; - if (lit.getLanguage()!=null && lit.getLanguage().length()>0) { - newLit = additionsModel.createLiteral(newLex,lit.getLanguage()); - } else if (lit.getDatatype() != null) { - newLit = additionsModel.createTypedLiteral(newLex,lit.getDatatype()); - } else { - newLit = additionsModel.createLiteral(newLex); - } - additionsModel.add(stmt.getSubject(),newProp,newLit); - } - } - } - } - if (processModel != null) { - destination.add(additionsModel); - destination.remove(retractionsModel); - } - if (savedAdditionsModel != null) { - savedAdditionsModel.add(additionsModel); - } - if (savedRetractionsModel != null) { - savedRetractionsModel.add(retractionsModel); - } - } finally { - destination.leaveCriticalSection(); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - } + public void doSubtractModels(VitroRequest vreq) { + String modela = vreq.getParameter("modela"); + String modelb = vreq.getParameter("modelb"); + String destination = vreq.getParameter("destinationModelName"); + Model ma = getModel(modela,vreq); + Model mb = getModel(modelb,vreq); + Model destinationModel = getModel(destination,vreq); + if(!destination.equals(modela)) + destinationModel.add(ma.difference(mb)); + else + ma.remove(mb); + } + + public void doSplitPropertyValues(VitroRequest vreq) { + String sourceModelStr = vreq.getParameter("sourceModelName"); + String destinationModelStr = vreq.getParameter("destinationModelName"); + Model sourceModel = getModel(sourceModelStr,vreq); + Model destinationModel = getModel(destinationModelStr,vreq); + String propertyURI = vreq.getParameter("propertyURI"); + String splitRegex = vreq.getParameter("splitRegex"); + String newPropertyURI = vreq.getParameter("newPropertyURI"); + String trimStr = vreq.getParameter("trim"); + boolean trim = ( "TRUE".equalsIgnoreCase(trimStr) ); + destinationModel.add( (new JenaIngestUtils()).splitPropertyValues(sourceModel, propertyURI, splitRegex, newPropertyURI, trim)); + } + + public void doGenerateTBox(VitroRequest vreq) { + OntModel source = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM); + String[] sourceModel = vreq.getParameterValues("sourceModelName"); + for (int i=0; i 0 ) ) { + savedAdditionsModel = getModel(additionsModelStr, vreq); + } + String retractionsModelStr = vreq.getParameter("retractionsModel"); + if ( (retractionsModelStr != null) && ( retractionsModelStr.length() > 0 ) ) { + savedRetractionsModel = getModel(retractionsModelStr, vreq); + } + Model additionsModel = ModelFactory.createDefaultModel(); + Model retractionsModel = ModelFactory.createDefaultModel(); + Class stringProcessorClass = Class.forName(className); + Object processor = stringProcessorClass.newInstance(); + Class[] methArgs = {String.class}; + Method meth = stringProcessorClass.getMethod(methodName,methArgs); + Property prop = ResourceFactory.createProperty(propertyName); + Property newProp = ResourceFactory.createProperty(newPropertyName); + destination.enterCriticalSection(Lock.READ); + try { + ClosableIterator closeIt = destination.listStatements((Resource)null,prop,(RDFNode)null); + for (Iterator stmtIt = closeIt; stmtIt.hasNext(); ) { + Statement stmt = (Statement) stmtIt.next(); + if (stmt.getObject().isLiteral()) { + Literal lit = (Literal) stmt.getObject(); + String lex = lit.getLexicalForm(); + Object[] args = {lex}; + String newLex = ""; + try { + newLex = (String) meth.invoke(processor,args); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } + if (!newLex.equals(lex)) { + retractionsModel.add(stmt); + if (newLex.length()>0) { + Literal newLit = null; + if (lit.getLanguage()!=null && lit.getLanguage().length()>0) { + newLit = additionsModel.createLiteral(newLex,lit.getLanguage()); + } else if (lit.getDatatype() != null) { + newLit = additionsModel.createTypedLiteral(newLex,lit.getDatatype()); + } else { + newLit = additionsModel.createLiteral(newLex); + } + additionsModel.add(stmt.getSubject(),newProp,newLit); + } + } + } + } + if (processModel != null) { + destination.add(additionsModel); + destination.remove(retractionsModel); + } + if (savedAdditionsModel != null) { + savedAdditionsModel.add(additionsModel); + } + if (savedRetractionsModel != null) { + savedRetractionsModel.add(retractionsModel); + } + } finally { + destination.leaveCriticalSection(); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } - public void doCleanLiterals(Model model) { - Model retractionsModel = ModelFactory.createDefaultModel(); - Model additionsModel = ModelFactory.createDefaultModel(); - model.enterCriticalSection(Lock.WRITE); - try { - ClosableIterator closeIt = model.listStatements(); - try { - for (Iterator stmtIt = closeIt; stmtIt.hasNext();) { - Statement stmt = (Statement) stmtIt.next(); - if (stmt.getObject().isLiteral()) { - Literal lit = (Literal) stmt.getObject(); - String lex = lit.getLexicalForm(); - char[] chars = lex.toCharArray(); - char[] cleanChars = new char[chars.length]; - int cleanPos = 0; - boolean badChar = false; - for (int i=0; i31 && java.lang.Character.isDefined(chars[i])) { - cleanChars[cleanPos] = chars[i]; - cleanPos++; - } else { - log.error("Bad char in " + lex); - log.error("Numeric value " + java.lang.Character.getNumericValue(chars[i])); - badChar = true; - } - } - String cleanLex = new String(cleanChars); - if (badChar) { - retractionsModel.add(stmt); - Literal newLit = null; - if (lit.getLanguage()!=null && lit.getLanguage().length()>0) { - newLit = additionsModel.createLiteral(cleanLex,lit.getLanguage()); - } else if (lit.getDatatype() != null) { - newLit = additionsModel.createTypedLiteral(cleanLex,lit.getDatatype()); - } else { - newLit = additionsModel.createLiteral(cleanLex); - } - additionsModel.add(stmt.getSubject(),stmt.getPredicate(),newLit); - } - } - } - } finally { - closeIt.close(); - } - model.remove(retractionsModel); - model.add(additionsModel); - log.debug("Cleaned " + additionsModel.size() + " literals"); - } finally { - model.leaveCriticalSection(); - } - } - - private void doExecuteWorkflow(VitroRequest vreq) { - String workflowURI = vreq.getParameter("workflowURI"); - String workflowStepURI = vreq.getParameter("workflowStepURI"); - OntModel jenaOntModel = (OntModel) getModel("vitro:jenaOntModel",vreq); - new JenaIngestWorkflowProcessor( - jenaOntModel.getIndividual(workflowURI),getVitroJenaModelMaker( - vreq)).run(jenaOntModel.getIndividual(workflowStepURI)); - } - - private String doRename(String oldNamespace,String newNamespace,HttpServletResponse response){ - 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); - List urisToChange = new LinkedList(); - ontModel.enterCriticalSection(Lock.READ); - try { - Iterator indIter = ontModel.listIndividuals(); - while( indIter.hasNext()){ - Individual ind = indIter.next(); - String namespace = ind.getNameSpace(); - if( namespace != null ){ - if( oldNamespace.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; - Pattern p = Pattern.compile(oldNamespace); - String candidateString = res.getURI(); - Matcher matcher = p.matcher(candidateString); - newURIStr = matcher.replaceFirst(newNamespace); - long time3 = System.currentTimeMillis(); - log.debug("time to get new uri: " + - Long.toString(time3 - time2)); - log.debug("Renaming "+ oldURIStr + " to " + newURIStr); - ResourceUtils.renameResource(res,newURIStr); - ResourceUtils.renameResource(infRes,newURIStr); - long time4 = System.currentTimeMillis(); - log.debug(" time to rename : " + Long.toString( time4 - time3)); - log.debug(" time for one resource: " + - Long.toString( time4 -time1)); - } finally { - infOntModel.leaveCriticalSection(); - ontModel.leaveCriticalSection(); - baseOntModel.leaveCriticalSection(); - } - counter++; - } - result = counter.toString() + " resources renamed"; - return result; + public void doCleanLiterals(Model model) { + Model retractionsModel = ModelFactory.createDefaultModel(); + Model additionsModel = ModelFactory.createDefaultModel(); + model.enterCriticalSection(Lock.WRITE); + try { + ClosableIterator closeIt = model.listStatements(); + try { + for (Iterator stmtIt = closeIt; stmtIt.hasNext();) { + Statement stmt = (Statement) stmtIt.next(); + if (stmt.getObject().isLiteral()) { + Literal lit = (Literal) stmt.getObject(); + String lex = lit.getLexicalForm(); + char[] chars = lex.toCharArray(); + char[] cleanChars = new char[chars.length]; + int cleanPos = 0; + boolean badChar = false; + for (int i=0; i31 && java.lang.Character.isDefined(chars[i])) { + cleanChars[cleanPos] = chars[i]; + cleanPos++; + } else { + log.error("Bad char in " + lex); + log.error("Numeric value " + java.lang.Character.getNumericValue(chars[i])); + badChar = true; + } + } + String cleanLex = new String(cleanChars); + if (badChar) { + retractionsModel.add(stmt); + Literal newLit = null; + if (lit.getLanguage()!=null && lit.getLanguage().length()>0) { + newLit = additionsModel.createLiteral(cleanLex,lit.getLanguage()); + } else if (lit.getDatatype() != null) { + newLit = additionsModel.createTypedLiteral(cleanLex,lit.getDatatype()); + } else { + newLit = additionsModel.createLiteral(cleanLex); + } + additionsModel.add(stmt.getSubject(),stmt.getPredicate(),newLit); + } + } + } + } finally { + closeIt.close(); + } + model.remove(retractionsModel); + model.add(additionsModel); + log.debug("Cleaned " + additionsModel.size() + " literals"); + } finally { + model.leaveCriticalSection(); + } + } + + private void doExecuteWorkflow(VitroRequest vreq) { + String workflowURI = vreq.getParameter("workflowURI"); + String workflowStepURI = vreq.getParameter("workflowStepURI"); + OntModel jenaOntModel = (OntModel) getModel("vitro:jenaOntModel",vreq); + new JenaIngestWorkflowProcessor( + jenaOntModel.getIndividual(workflowURI),getVitroJenaModelMaker( + vreq)).run(jenaOntModel.getIndividual(workflowStepURI)); + } + + private String doRename(String oldNamespace,String newNamespace,HttpServletResponse response){ + 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); + List urisToChange = new LinkedList(); + ontModel.enterCriticalSection(Lock.READ); + try { + Iterator indIter = ontModel.listIndividuals(); + while( indIter.hasNext()){ + Individual ind = indIter.next(); + String namespace = ind.getNameSpace(); + if( namespace != null ){ + if( oldNamespace.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; + Pattern p = Pattern.compile(oldNamespace); + String candidateString = res.getURI(); + Matcher matcher = p.matcher(candidateString); + newURIStr = matcher.replaceFirst(newNamespace); + long time3 = System.currentTimeMillis(); + log.debug("time to get new uri: " + + Long.toString(time3 - time2)); + log.debug("Renaming "+ oldURIStr + " to " + newURIStr); + ResourceUtils.renameResource(res,newURIStr); + ResourceUtils.renameResource(infRes,newURIStr); + long time4 = System.currentTimeMillis(); + log.debug(" time to rename : " + Long.toString( time4 - time3)); + log.debug(" time for one resource: " + + Long.toString( time4 -time1)); + } finally { + infOntModel.leaveCriticalSection(); + ontModel.leaveCriticalSection(); + baseOntModel.leaveCriticalSection(); + } + counter++; + } + result = counter.toString() + " resources renamed"; + return result; + } + + private void showModelList(VitroRequest vreq, ModelMaker maker, String modelType) { + if(modelType.equals("rdb")){ + vreq.setAttribute("modelType", "rdb"); + vreq.setAttribute("infoLine", "RDB models"); + } else{ + vreq.setAttribute("modelType", "sdb"); + vreq.setAttribute("infoLine", "SDB models"); + } + vreq.setAttribute("bodyAttr", "onLoad=\"init()\""); + vreq.setAttribute("title","Available Models"); + vreq.setAttribute("bodyJsp",LIST_MODELS_JSP); } private class CollationSort implements Comparator { @@ -1279,5 +1250,5 @@ public class JenaIngestController extends BaseEditController { } } - + } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java index 9de9de232..74ec8377b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaXMLFileUpload.java @@ -41,7 +41,7 @@ import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSpecialModelMaker; import edu.cornell.mannlib.vitro.webapp.filestorage.uploadrequest.FileUploadServletRequest; -public class JenaXMLFileUpload extends BaseEditController { +public class JenaXMLFileUpload extends JenaIngestController { Log log = LogFactory.getLog(JenaXMLFileUpload.class); private String baseDirectoryForFiles; private int maxFileSize = 1024 * 1024 * 500; @@ -88,6 +88,7 @@ public class JenaXMLFileUpload extends BaseEditController { * defaultNamespace - namespace to use for elements in xml that lack a namespace * */ + @Override public void doPost(HttpServletRequest rawRequest, HttpServletResponse resp) throws ServletException, IOException { FileUploadServletRequest request = FileUploadServletRequest.parseRequest(rawRequest, maxFileSize); @@ -151,8 +152,8 @@ public class JenaXMLFileUpload extends BaseEditController { } } - - protected void doGet(HttpServletRequest request, + @Override + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (!isAuthorizedToDisplayPage(request, response, new Actions(new UseAdvancedDataToolsPages()))) { return; @@ -164,6 +165,7 @@ public class JenaXMLFileUpload extends BaseEditController { request.setAttribute("title","Upload file and convert to RDF"); request.setAttribute("bodyJsp","/jenaIngest/xmlFileUpload.jsp"); + request.setAttribute("modelNames", getVitroJenaModelMaker(vreq).listModels().toList()); request.setAttribute("models", null); RequestDispatcher rd = request.getRequestDispatcher(Controllers.BASIC_JSP); @@ -267,13 +269,6 @@ public class JenaXMLFileUpload extends BaseEditController { } return filesToLoad; } - - private ModelMaker getVitroJenaModelMaker(HttpServletRequest request) { - ModelMaker myVjmm = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - myVjmm = (myVjmm == null) ? (ModelMaker) getServletContext().getAttribute("vitroJenaModelMaker") : myVjmm; - return new VitroJenaSpecialModelMaker(myVjmm, request); - } - private long countOfStatements( List models){ diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VitroJenaSpecialModelMaker.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VitroJenaSpecialModelMaker.java index 90f840270..4dd2cfcc3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VitroJenaSpecialModelMaker.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/dao/jena/VitroJenaSpecialModelMaker.java @@ -35,6 +35,10 @@ public class VitroJenaSpecialModelMaker implements ModelMaker { this.request = request; } + public ModelMaker getInnerModelMaker() { + return this.innerModelMaker; + } + public void close() { innerModelMaker.close(); } diff --git a/webapp/web/jenaIngest/csv2rdf.jsp b/webapp/web/jenaIngest/csv2rdf.jsp index 11d24440d..fea2116d9 100644 --- a/webapp/web/jenaIngest/csv2rdf.jsp +++ b/webapp/web/jenaIngest/csv2rdf.jsp @@ -9,19 +9,12 @@ <%@ page import="java.net.URLEncoder" %> <%@taglib prefix="vitro" uri="/WEB-INF/tlds/VitroUtils.tld" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> + <%@page import="edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages" %> <% request.setAttribute("requestedActions", new UseAdvancedDataToolsPages()); %> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - } - -%> -

Ingest Menu > Convert CSV to RDF

@@ -49,7 +42,7 @@ -->

-

Each row in the spreadsheet will produce an resource. Each of these +

Each row in the spreadsheet will produce a resource. Each of these resources will be a member of a class in the namespace selected above.

What should the local name of this class be? This is normally a word or two in "camel case" starting with an uppercase letter. (For example, if the @@ -60,25 +53,19 @@

Model in which to save the converted spreadsheet data

Model in which to save the automatically-generated ontology

diff --git a/webapp/web/jenaIngest/csv2rdfSelectUri.jsp b/webapp/web/jenaIngest/csv2rdfSelectUri.jsp index 5ed8172e6..31ea30d93 100644 --- a/webapp/web/jenaIngest/csv2rdfSelectUri.jsp +++ b/webapp/web/jenaIngest/csv2rdfSelectUri.jsp @@ -20,14 +20,6 @@ <% request.setAttribute("requestedActions", new UseAdvancedDataToolsPages()); %> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - } - -%> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaModelMaker"); - getServletContext().setAttribute("vitroJenaModelMaker",maker); - } -%> -

Ingest Menu > Available Jena Models

@@ -60,15 +51,13 @@ function init(){ Currently showing ${infoLine}
    -<% - for (Iterator it = maker.listModels(); it.hasNext(); ) { - String modelName = (String) it.next(); - %>
  • <%=modelName%> + +
  • ${modelName}
- + @@ -76,14 +65,14 @@ function init(){ - + output model
- +
@@ -91,7 +80,7 @@ function init(){
- +
@@ -101,7 +90,7 @@ function init(){
- +
@@ -109,7 +98,7 @@ function init(){
- +
@@ -117,16 +106,14 @@ function init(){
- +
 
- <% - } -%> + + - - + diff --git a/webapp/web/jenaIngest/mergeResources.jsp b/webapp/web/jenaIngest/mergeResources.jsp index 31ef13595..b597fe289 100644 --- a/webapp/web/jenaIngest/mergeResources.jsp +++ b/webapp/web/jenaIngest/mergeResources.jsp @@ -5,21 +5,13 @@ <%@ page import="java.util.Iterator"%> <%@ page import="java.net.URLEncoder"%> <%@ page import="java.util.List"%> -<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="vitro" uri="/WEB-INF/tlds/VitroUtils.tld" %> <%@page import="edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages" %> <% request.setAttribute("requestedActions", new UseAdvancedDataToolsPages()); %> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - } - -%> diff --git a/webapp/web/jenaIngest/permanentURI.jsp b/webapp/web/jenaIngest/permanentURI.jsp index 481d2df38..30e83dfae 100644 --- a/webapp/web/jenaIngest/permanentURI.jsp +++ b/webapp/web/jenaIngest/permanentURI.jsp @@ -5,22 +5,13 @@ <%@ page import="java.util.Iterator"%> <%@ page import="java.net.URLEncoder"%> <%@ page import="java.util.List"%> -<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="vitro" uri="/WEB-INF/tlds/VitroUtils.tld" %> <%@page import="edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages" %> <% request.setAttribute("requestedActions", new UseAdvancedDataToolsPages()); %> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - } - -%> -

Ingest Menu > Assign Permanent URIs To Resources

This tool will rename the resources in the selected model to with new @@ -34,32 +25,30 @@ resources." Otherwise, the "use default namespace" option will generate URIs exactly of the form created through the GUI interface.

-<%String modelName = (String)request.getAttribute("modelName"); %> - + -

Current namespace of resources +<%List namespaces = (List)request.getAttribute("namespaceList"); +if(namespaces != null) { Iterator namespaceItr = namespaces.iterator(); Integer count = 0; while (namespaceItr.hasNext()){ String namespaceText = (String) namespaceItr.next(); %> -<%}}%> + +<% } +}%>

-

Model to save + + + +

New namespace for resources

-Or <%String defaultNamespace = (String)request.getAttribute("defaultNamespace");%> -

Use default namespace <%=defaultNamespace%> +

Use default namespace ${defaultNamespace}

diff --git a/webapp/web/jenaIngest/processStrings.jsp b/webapp/web/jenaIngest/processStrings.jsp index 47d4376d2..b9d243ad6 100644 --- a/webapp/web/jenaIngest/processStrings.jsp +++ b/webapp/web/jenaIngest/processStrings.jsp @@ -9,18 +9,11 @@ <%@ page import="java.net.URLEncoder" %> <%@taglib prefix="vitro" uri="/WEB-INF/tlds/VitroUtils.tld" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@page import="edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages" %> <% request.setAttribute("requestedActions", new UseAdvancedDataToolsPages()); %> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - } - -%>

Ingest Menu > Process Property Value Strings

@@ -39,38 +32,26 @@

New Property URI

apply changes directly to this model

model to use

model in which to save added statements

model in which to save retracted statements

diff --git a/webapp/web/jenaIngest/renameBNodes.jsp b/webapp/web/jenaIngest/renameBNodes.jsp index 191f3e7b1..f88677350 100644 --- a/webapp/web/jenaIngest/renameBNodes.jsp +++ b/webapp/web/jenaIngest/renameBNodes.jsp @@ -9,19 +9,11 @@ <%@ page import="java.net.URLEncoder" %> <%@taglib prefix="vitro" uri="/WEB-INF/tlds/VitroUtils.tld" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@page import="edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages" %> <% request.setAttribute("requestedActions", new UseAdvancedDataToolsPages()); %> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - } - -%> -

Ingest Menu > Convert Blank Nodes to Named Resources

@@ -30,14 +22,9 @@

Select Source Models

    - -<% - for (Iterator it = maker.listModels(); it.hasNext(); ) { - String modelName = (String) it.next(); - %>
  • <%=modelName%>
  • - <% - } -%> + +
  • ${modelName}
  • +
diff --git a/webapp/web/jenaIngest/renameBNodesURISelect.jsp b/webapp/web/jenaIngest/renameBNodesURISelect.jsp index 8b92dee23..0381acb9e 100644 --- a/webapp/web/jenaIngest/renameBNodesURISelect.jsp +++ b/webapp/web/jenaIngest/renameBNodesURISelect.jsp @@ -12,21 +12,13 @@ <%@ page import="java.util.HashMap" %> <%@ page import="java.util.Set" %> <%@ page import="java.util.Map.Entry" %> -<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@taglib prefix="vitro" uri="/WEB-INF/tlds/VitroUtils.tld" %> <%@page import="edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.UseAdvancedDataToolsPages" %> <% request.setAttribute("requestedActions", new UseAdvancedDataToolsPages()); %> -<% - - ModelMaker maker = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker"); - if (maker == null) { - maker = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker"); - } - -%>