Advertisement
Guest User

Untitled

a guest
Feb 9th, 2017
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. public class ESAServlet extends HttpServlet {
  2.  
  3. private static final long serialVersionUID = 1L;
  4.  
  5. protected ServletContext context;
  6.  
  7. protected ESASearcher esa;
  8.  
  9. protected DecimalFormat df = (DecimalFormat) NumberFormat.getInstance(Locale.US);
  10.  
  11.  
  12. static Connection connection;
  13. static Statement stmtQuery;
  14.  
  15. static String strTitles = "SELECT id,title FROM article WHERE id IN ";
  16.  
  17. public static void initDB() throws ClassNotFoundException, SQLException, IOException {
  18. // Load the JDBC driver
  19. String driverName = "com.mysql.jdbc.Driver"; // MySQL Connector
  20. Class.forName(driverName);
  21.  
  22. // read DB config
  23. InputStream is = ESASearcher.class.getResourceAsStream("/config/db.conf");
  24. BufferedReader br = new BufferedReader(new InputStreamReader(is));
  25. String serverName = br.readLine();
  26. String mydatabase = br.readLine();
  27. String username = br.readLine();
  28. String password = br.readLine();
  29. br.close();
  30.  
  31. // Create a connection to the database
  32. String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
  33. connection = DriverManager.getConnection(url, username, password);
  34.  
  35. stmtQuery = connection.createStatement();
  36. stmtQuery.setFetchSize(100);
  37. }
  38.  
  39.  
  40. public void init(ServletConfig config) throws ServletException {
  41. super.init(config);
  42. context = config.getServletContext();
  43. try {
  44. esa = new ESASearcher();
  45. initDB();
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. throw new ServletException();
  49. }
  50. }
  51.  
  52. public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
  53.  
  54. doGet(request, response);
  55.  
  56. }
  57.  
  58. public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
  59.  
  60. try {
  61.  
  62. response.setHeader("Cache-Control", "no-cache");
  63. response.setCharacterEncoding("UTF-8");
  64.  
  65. String task = request.getParameter("task");
  66.  
  67. //redirect to home page if there is no task
  68. if (task == null) {
  69. response.setContentType("text/html");
  70. response.getWriter().append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"><html><head><meta http-equiv=\"REFRESH\" content=\"0;url=" + context.getInitParameter("server_path") + "></head><body></body></html>");
  71. return;
  72. }
  73.  
  74. //process compare request
  75. if (task.equals("esa")) {
  76. String term1 = request.getParameter("term1");
  77. String term2 = request.getParameter("term2");
  78.  
  79. if (term1 == null || term2 == null) {
  80. response.setContentType("text/html");
  81. response.getWriter().append("-1");
  82. return;
  83. } else {
  84. final double sim = esa.getRelatedness(term1, term2);
  85. response.setContentType("text/html");
  86. response.getWriter().append(df.format(sim));
  87. return;
  88. }
  89.  
  90. }
  91.  
  92. //process compare request
  93. if (task.equals("vector")) {
  94. final String source = request.getParameter("source");
  95. final String strLimit = request.getParameter("limit");
  96.  
  97. int limit;
  98.  
  99. if (strLimit == null) {
  100. limit = 10;
  101. } else {
  102. limit = Integer.valueOf(strLimit);
  103. }
  104.  
  105. if (source == null) {
  106. response.setContentType("text/html");
  107. response.getWriter().append("null");
  108. return;
  109. } else {
  110. response.setContentType("text/html");
  111.  
  112. final IConceptVector cv = esa.getConceptVector(source);
  113.  
  114. if (cv == null) {
  115. response.getWriter().append("null");
  116. } else {
  117. final IConceptVector ncv = esa.getNormalVector(cv, limit);
  118. final IConceptIterator it = ncv.orderedIterator();
  119.  
  120. HashMap<Integer, Double> vals = new HashMap<Integer, Double>(10);
  121. HashMap<Integer, String> titles = new HashMap<Integer, String>(10);
  122.  
  123. String inPart = "(";
  124.  
  125. int count = 0;
  126. while (it.next() && count < limit) {
  127. inPart += it.getId() + ",";
  128. vals.put(it.getId(), it.getValue());
  129. count++;
  130. }
  131.  
  132. inPart = inPart.substring(0, inPart.length() - 1) + ")";
  133.  
  134. ResultSet r = stmtQuery.executeQuery(strTitles + inPart);
  135. while (r.next()) {
  136. titles.put(r.getInt(1), new String(r.getBytes(2), "UTF-8"));
  137. }
  138.  
  139.  
  140. it.reset();
  141. count = 0;
  142. while (it.next() && count < limit) {
  143. int id = it.getId();
  144. response.getWriter().append(id + "\t" + titles.get(id) + "\t" + df.format(vals.get(id)) + "\n");
  145. count++;
  146. }
  147. }
  148. return;
  149. }
  150.  
  151. }
  152.  
  153.  
  154. } catch (Exception error) {
  155. response.reset();
  156. response.setContentType("application/xml");
  157. response.setHeader("Cache-Control", "no-cache");
  158. response.setCharacterEncoding("UTF8");
  159.  
  160. response.getWriter().append("error");
  161. }
  162. }
  163.  
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement