NIHVIVO-1691 code change to resolve bug related to connection to DB models and modelmaker handling.

This commit is contained in:
ass92 2011-01-13 23:58:54 +00:00
parent c6fa64ff98
commit 0e53c11203

View file

@ -23,6 +23,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.servlet.RequestDispatcher; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContextEvent;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -77,6 +78,8 @@ 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;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSpecialModelMaker; import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSpecialModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent; import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent;
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetup;
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupSDB;
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;
@ -125,7 +128,6 @@ public class JenaIngestController extends BaseEditController {
actionStr = (actionStr != null) ? actionStr : ""; actionStr = (actionStr != null) ? actionStr : "";
String modelType = vreq.getParameter("modelType"); String modelType = vreq.getParameter("modelType");
if ("listModels".equals(actionStr)) { if ("listModels".equals(actionStr)) {
getServletContext().setAttribute("vitroJenaModelMaker",maker);
String modelT = (String)getServletContext().getAttribute("modelT"); String modelT = (String)getServletContext().getAttribute("modelT");
String info = (String)getServletContext().getAttribute("info"); String info = (String)getServletContext().getAttribute("info");
if(modelT==null || modelT.equals("rdb")){ if(modelT==null || modelT.equals("rdb")){
@ -139,12 +141,8 @@ public class JenaIngestController extends BaseEditController {
request.setAttribute("title","Available Models"); request.setAttribute("title","Available Models");
request.setAttribute("bodyJsp",LIST_MODELS_JSP); request.setAttribute("bodyJsp",LIST_MODELS_JSP);
}else if("rdbModels".equals(actionStr)){ }else if("rdbModels".equals(actionStr)){
String jdbcUrl = ConfigurationProperties.getProperty("VitroConnection.DataSource.url") VitroJenaModelMaker vjmm = (VitroJenaModelMaker) getServletContext().getAttribute("vitroJenaModelMaker");
+ "?useUnicode=yes&characterEncoding=utf8"; vreq.getSession().setAttribute("vitroJenaModelMaker", vjmm);
String username = ConfigurationProperties.getProperty("VitroConnection.DataSource.username");
String password = ConfigurationProperties.getProperty("VitroConnection.DataSource.password");
VitroJenaModelMaker vjmm = new VitroJenaModelMaker(jdbcUrl, username, password, "MySQL");
vreq.getSession().setAttribute("vitroJenaModelMaker",vjmm);
getServletContext().setAttribute("modelT", "rdb"); getServletContext().setAttribute("modelT", "rdb");
getServletContext().setAttribute("info", "RDB models"); getServletContext().setAttribute("info", "RDB models");
request.setAttribute("modelType", "rdb"); request.setAttribute("modelType", "rdb");
@ -152,16 +150,9 @@ public class JenaIngestController extends BaseEditController {
request.setAttribute("title","Available Models"); request.setAttribute("title","Available Models");
request.setAttribute("bodyJsp",LIST_MODELS_JSP); request.setAttribute("bodyJsp",LIST_MODELS_JSP);
}else if("sdbModels".equals(actionStr)){ }else if("sdbModels".equals(actionStr)){
String jdbcUrl = ConfigurationProperties.getProperty("VitroConnection.DataSource.url") VitroJenaSDBModelMaker vsmm = (VitroJenaSDBModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker");
+ "?useUnicode=yes&characterEncoding=utf8"; vreq.getSession().setAttribute("vitroJenaModelMaker", vsmm);
String username = ConfigurationProperties.getProperty("VitroConnection.DataSource.username"); getServletContext().setAttribute("modelT", "sdb");
String password = ConfigurationProperties.getProperty("VitroConnection.DataSource.password");
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,DatabaseType.MySQL) ;
SDBConnection conn = new SDBConnection(jdbcUrl, username, password) ;
Store store = SDBFactory.connectStore(conn, storeDesc);
VitroJenaSDBModelMaker vsmm = new VitroJenaSDBModelMaker(store);
vreq.getSession().setAttribute("vitroJenaModelMaker",vsmm);
getServletContext().setAttribute("modelT", "sdb");
getServletContext().setAttribute("info", "SDB models"); getServletContext().setAttribute("info", "SDB models");
request.setAttribute("modelType", "sdb"); request.setAttribute("modelType", "sdb");
request.setAttribute("infoLine", "SDB models"); request.setAttribute("infoLine", "SDB models");
@ -171,14 +162,7 @@ public class JenaIngestController extends BaseEditController {
String modelName = vreq.getParameter("modelName"); String modelName = vreq.getParameter("modelName");
if (modelName != null) { if (modelName != null) {
if(modelType.equals("sdb")){ if(modelType.equals("sdb")){
String jdbcUrl = ConfigurationProperties.getProperty("VitroConnection.DataSource.url") maker = (VitroJenaSDBModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker");
+ "?useUnicode=yes&characterEncoding=utf8";
String username = ConfigurationProperties.getProperty("VitroConnection.DataSource.username");
String password = ConfigurationProperties.getProperty("VitroConnection.DataSource.password");
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,DatabaseType.MySQL) ;
SDBConnection conn = new SDBConnection(jdbcUrl, username, password) ;
Store store = SDBFactory.connectStore(conn, storeDesc);
maker = new VitroJenaSDBModelMaker(store);
request.setAttribute("infoLine", "SDB models"); request.setAttribute("infoLine", "SDB models");
} }
else{ else{
@ -350,8 +334,20 @@ public class JenaIngestController extends BaseEditController {
} }
} else if ("connectDB".equals(actionStr)) { } else if ("connectDB".equals(actionStr)) {
String jdbcUrl = vreq.getParameter("jdbcUrl"); String jdbcUrl = vreq.getParameter("jdbcUrl");
String tripleStore = vreq.getParameter("tripleStore");
if (jdbcUrl != null) { if (jdbcUrl != null) {
doConnectDB(vreq); doConnectDB(vreq);
if ("SDB".equals(tripleStore)) {
getServletContext().setAttribute("modelT", "sdb");
getServletContext().setAttribute("info", "SDB models");
request.setAttribute("modelType", "sdb");
request.setAttribute("infoLine", "SDB models");
} else {
getServletContext().setAttribute("modelT", "rdb");
getServletContext().setAttribute("info", "RDB models");
request.setAttribute("modelType", "rdb");
request.setAttribute("infoLine", "RDB models");
}
request.setAttribute("title","Ingest Menu"); request.setAttribute("title","Ingest Menu");
request.setAttribute("bodyJsp",INGEST_MENU_JSP); request.setAttribute("bodyJsp",INGEST_MENU_JSP);
} else { } else {
@ -871,19 +867,21 @@ public class JenaIngestController extends BaseEditController {
} }
dbTypeObj = DatabaseType.fetch(dbType); dbTypeObj = DatabaseType.fetch(dbType);
loadDriver(dbTypeObj); loadDriver(dbTypeObj);
if ("SDB".equals(tripleStore)) { System.out.println("Connecting to DB at "+jdbcUrl);
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,dbTypeObj) ; StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,dbTypeObj) ;
SDBConnection conn = new SDBConnection(jdbcUrl, username, password) ; SDBConnection conn = new SDBConnection(jdbcUrl, username, password) ;
Store store = SDBFactory.connectStore(conn, storeDesc); Store store = SDBFactory.connectStore(conn, storeDesc);
VitroJenaSDBModelMaker vjmm = new VitroJenaSDBModelMaker(store); VitroJenaSDBModelMaker vsmm = new VitroJenaSDBModelMaker(store);
vreq.getSession().setAttribute("vitroJenaModelMaker",vjmm); VitroJenaModelMaker vjmm = new VitroJenaModelMaker(jdbcUrl, username, password, dbType);
} else { getServletContext().setAttribute("vitroJenaSDBModelMaker", vsmm);
System.out.println("Connecting to DB at "+jdbcUrl); getServletContext().setAttribute("vitroJenaModelMaker", vjmm);
VitroJenaModelMaker vjmm = new VitroJenaModelMaker(jdbcUrl, username, password, dbType); if("SDB".equals(tripleStore))
vreq.getSession().setAttribute("vitroJenaModelMaker",vjmm); vreq.getSession().setAttribute("vitroJenaModelMaker",vsmm);
} else
vreq.getSession().setAttribute("vitroJenaModelMaker",vjmm);
} }
private void loadDriver(DatabaseType dbType) { private void loadDriver(DatabaseType dbType) {
if (DatabaseType.MySQL.equals(dbType)) { if (DatabaseType.MySQL.equals(dbType)) {
JDBC.loadDriverMySQL(); JDBC.loadDriverMySQL();