diff --git a/pom.xml b/pom.xml index 55ea117..63b1fdd 100644 --- a/pom.xml +++ b/pom.xml @@ -20,11 +20,6 @@ mysql-connector-java 8.0.17 - - org.apache.tomcat - tomcat-jdbc - 8.0.30 - javax javaee-web-api diff --git a/src/main/java/controller/Search.java b/src/main/java/controller/Search.java index 7b70be9..a7d6918 100644 --- a/src/main/java/controller/Search.java +++ b/src/main/java/controller/Search.java @@ -23,9 +23,16 @@ */ public class Search extends HttpServlet { + // it should change to use session instead, but having a issue lost session from alias site + private static String dbVersion = "v3"; + protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { + if (request.getParameter("version") != null) { + dbVersion = request.getParameter("version"); + } + List variantGeneScoreList = new ArrayList<>(); if (request.getParameter("query") != null) { @@ -35,13 +42,15 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re // search by gene or region or variant String query = request.getParameter("query").toUpperCase().replaceAll("( )+", ""); - checkRegionValid(request, query); + boolean isRegionValid = checkRegionValid(request, query); - String dbVersion = initDBVersion(request); Output.init(query, dbVersion, variantGeneScoreList); request.setAttribute("query", query); + request.setAttribute("version", dbVersion); + request.setAttribute("isTruncated", Output.isTruncated(variantGeneScoreList)); request.setAttribute("variantGeneScoreList", variantGeneScoreList); + request.setAttribute("isRegionValid", isRegionValid); } final String content_type = request.getParameter("content-type"); @@ -56,30 +65,17 @@ protected void processRequest(HttpServletRequest request, HttpServletResponse re } } - private String initDBVersion(HttpServletRequest request) { - String dbVersion = (String) request.getSession().getAttribute("version"); - - if (request.getParameter("version") != null) { - dbVersion = request.getParameter("version"); - request.getSession().setAttribute("version", dbVersion); - } - - return dbVersion; - } - - private void checkRegionValid(HttpServletRequest request, String query) { - boolean isRegionValid = true; - + private boolean checkRegionValid(HttpServletRequest request, String query) { if (query.contains(":")) { // search region String[] tmp = query.split(":"); // chr:start-end tmp = tmp[1].split("-"); int start = Integer.valueOf(tmp[0]); int end = Integer.valueOf(tmp[1]); - isRegionValid = Output.isRegionValid(start, end); + return Output.isRegionValid(start, end); + } else { + return true; } - - request.getSession().setAttribute("isRegionValid", isRegionValid); } @Override diff --git a/src/main/java/model/Output.java b/src/main/java/model/Output.java index 6c196e1..d16659f 100644 --- a/src/main/java/model/Output.java +++ b/src/main/java/model/Output.java @@ -14,6 +14,7 @@ */ public class Output { + private static final int maxDisplayNum = 1000; private static final int maxRowToQuery = 5000; private static final int maxBaseNumToDisplay = 10000; @@ -249,4 +250,14 @@ private static List getEnsgGeneNameByHgnc(String hgnc, String dbVersion) return ensgList; } + + public static boolean isTruncated(List variantGeneScoreList) { + if (variantGeneScoreList.size() <= maxDisplayNum) { + return false; + } else { + // hack to restrict only display 1000 rows + variantGeneScoreList = variantGeneScoreList.subList(0, maxDisplayNum); + return true; + } + } } diff --git a/src/main/java/util/DBManager.java b/src/main/java/util/DBManager.java index 185f514..c6f24e5 100644 --- a/src/main/java/util/DBManager.java +++ b/src/main/java/util/DBManager.java @@ -2,8 +2,6 @@ import java.sql.*; import java.util.HashMap; -import org.apache.tomcat.jdbc.pool.DataSource; -import org.apache.tomcat.jdbc.pool.PoolProperties; /** * @@ -11,7 +9,8 @@ */ public class DBManager { - private static DataSource dataSource; + private static Connection connection; + private static Statement statement; private static String dbUrl; private static String dbUser; @@ -21,36 +20,15 @@ public class DBManager { private static String dbVersionName = "v1:vdsdb,v2:trap_v2_060117,v3:trap_v3"; public static void init() throws Exception { - initDBVersion(); + if (connection == null || connection.isClosed()) { + initDBVersion(); - initDataFromSystemConfig(); - - if (dataSource == null) { - PoolProperties p = new PoolProperties(); - p.setDriverClassName("com.mysql.cj.jdbc.Driver"); - p.setUrl(dbUrl); - p.setUsername(dbUser); - p.setPassword(dbPassword); - p.setJmxEnabled(true); - p.setTestWhileIdle(false); - p.setTestOnBorrow(true); - p.setValidationQuery("SELECT 1"); - p.setTestOnReturn(false); - p.setValidationInterval(30000); - p.setTimeBetweenEvictionRunsMillis(30000); - p.setMaxActive(100); - p.setInitialSize(10); - p.setMaxWait(10000); - p.setRemoveAbandonedTimeout(60); - p.setMinEvictableIdleTimeMillis(30000); - p.setMinIdle(10); - p.setLogAbandoned(true); - p.setRemoveAbandoned(true); - p.setJdbcInterceptors( - "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" - + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"); - dataSource = new DataSource(); - dataSource.setPoolProperties(p); + initDataFromSystemConfig(); + Class.forName("com.mysql.cj.jdbc.Driver"); + connection = DriverManager.getConnection(dbUrl, dbUser, dbPassword); + statement = connection.createStatement(); + } else if (statement.isClosed()) { + statement = connection.createStatement(); } } @@ -81,11 +59,11 @@ private static void initDataFromSystemConfig() { } public static ResultSet executeQuery(String sqlQuery) throws SQLException { - return dataSource.getConnection().createStatement().executeQuery(sqlQuery); + return statement.executeQuery(sqlQuery); } public static PreparedStatement prepareStatement(String sqlQuery) throws SQLException { - return dataSource.getConnection().prepareStatement(sqlQuery); + return connection.prepareStatement(sqlQuery); } public static String getDBName(String dbVersion) { diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 4d942a3..68410b4 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -32,11 +32,11 @@ <% - String version = (String) request.getSession().getAttribute("version"); + String version = (String) request.getAttribute("version"); if (version == null) { version = "v3"; - request.getSession().setAttribute("version", version); + request.setAttribute("version", version); } %> diff --git a/src/main/webapp/result.jsp b/src/main/webapp/result.jsp index bcdad20..280021d 100644 --- a/src/main/webapp/result.jsp +++ b/src/main/webapp/result.jsp @@ -4,7 +4,8 @@ <% String query = (String) request.getAttribute("query"); - Boolean isRegionValid = (Boolean) request.getSession().getAttribute("isRegionValid"); + Boolean isRegionValid = (Boolean) request.getAttribute("isRegionValid"); + Boolean isTruncated = (Boolean) request.getAttribute("isTruncated"); List variantGeneScoreList = (List) request.getAttribute("variantGeneScoreList"); @@ -13,7 +14,7 @@ - Data version: <%=request.getSession().getAttribute("version")%> + Data version: <%=request.getAttribute("version")%> @@ -46,6 +47,15 @@ <% } else { + if (isTruncated) { +%> + + + Please notice that the displayed variant list is truncated. To obtain the full database please refer to the terms of use. + + +<% + } %>