Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.89 KB | None | 0 0
  1.  
  2. import javax.servlet.ServletConfig;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.annotation.WebServlet;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8.  
  9. import com.google.gson.Gson;
  10.  
  11. import java.util.*;
  12. import java.io.*;
  13. import java.sql.*;
  14.  
  15.  
  16. /**
  17. * Servlet implementation class sensorToDB
  18. */
  19. @WebServlet("/sensordb")
  20. public class sensordb extends HttpServlet {
  21.  
  22. private static final long serialVersionUID = 1L;
  23.  
  24. Gson gson = new Gson();
  25.  
  26. Connection conn = null;
  27. Statement stmt;
  28.  
  29. public void init(ServletConfig config) throws ServletException {
  30. // init method is run once at the start of the servlet loading
  31. // This will load the driver and establish a connection
  32. super.init(config);
  33. String user = "mohameah";
  34. String password = "hoofsaRt4";
  35. // Note none default port used, 6306 not 3306
  36. String url = "jdbc:mysql://mudfoot.doc.stu.mmu.ac.uk:6306/"+user;
  37.  
  38. // Load the database driver
  39. try { Class.forName("com.mysql.jdbc.Driver").newInstance();
  40. } catch (Exception e) {
  41. System.out.println(e);
  42. }
  43.  
  44. // get a connection with the user/pass
  45. try {
  46. conn = DriverManager.getConnection(url, user, password);
  47. System.out.println("Sensor to DB server is up and running\n");
  48. System.out.println("Upload sensor data with http://localhost:8080/rfidserver/sensordb?sensordata=some_sensor_data_in_json_format");
  49. System.out.println("View last sensor reading at  http://localhost:8080/rfidserver/sensordb?getdata=true\n\n");
  50.  
  51. // System.out.println("DEBUG: Connection to database successful.");
  52. stmt = conn.createStatement();
  53. } catch (SQLException se) {
  54. System.out.println(se);
  55. System.out.println("\nDid you alter the lines to set user/password in the sensor server code?");
  56. }
  57.  
  58.  
  59. } // init()
  60.  
  61. public void destroy() {
  62. try { conn.close(); } catch (SQLException se) {
  63. System.out.println(se);
  64. }
  65. } // destroy()
  66.  
  67.  
  68.  
  69. public sensordb() {
  70. super();
  71. // TODO Auto-generated constructor stub
  72. }
  73.  
  74.  
  75. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  76. response.setStatus(HttpServletResponse.SC_OK);
  77. // Declare a sensordata object to hold the incoming data
  78. sensordata oneSensor = new sensordata("unknown", "unknown");
  79.  
  80. // Check to see whether the client is requesting data or sending it
  81. String getdata = request.getParameter("getdata");
  82.  
  83. // if no getdata parameter, client is sending data
  84. if (getdata == null){
  85. //getdata is null, therefore it is receiving data
  86. // Extract the parameter data holding the sensordata
  87. String sensorJsonString = request.getParameter("sensordata");
  88.  
  89. // Problem if sensordata parameter not sent, or is invalid json
  90. if (sensorJsonString != null) {
  91. // Convert the json string to an object of type sensordata
  92. oneSensor = gson.fromJson(sensorJsonString, sensordata.class);
  93.  
  94. // Update sensor values and send back response
  95. PrintWriter out = response.getWriter();
  96. updateSensorTable(oneSensor);
  97. out.close();
  98. } // endif sensorJsonString not null
  99. } // end if getdata is null
  100. else { // Retrieve and return data (JSON format)
  101. // Code to retrieve data
  102. String sensorName = request.getParameter("sensorname");
  103. String resultsJson = retrievesensordata(sensorName);
  104. PrintWriter out = response.getWriter();
  105. out.println(resultsJson);
  106. out.close();
  107. }
  108.  
  109. }
  110.  
  111. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  112. // Post is same as Get, so pass on parameters and do same
  113. doGet(request, response);
  114. }
  115.  
  116. private void updateSensorTable(sensordata oneSensor){
  117. try {
  118. // Create the INSERT statement from the parameters
  119. // set time inserted to be the current time on database server
  120. String updateSQL =
  121. "insert into sensorusage(userid,sensorname,sensorvalue,timeinserted)" +
  122. "values('"+oneSensor.getUserid()+ "','" +
  123. oneSensor.getSensorname()+ "','" +
  124. oneSensor.getSensorvalue()+ "'," +
  125. "now());";
  126.  
  127. System.out.println("DEBUG: Update: " + updateSQL);
  128. stmt.executeUpdate(updateSQL);
  129. System.out.println("DEBUG: Update successful ");
  130. } catch (SQLException se) {
  131. // Problem with update, return failure message
  132. System.out.println(se);
  133. System.out.println("\nDEBUG: Update error - see error trace above for help.");
  134. return;
  135. }
  136.  
  137. // all ok, return
  138. return;
  139. }
  140. private String retrievesensordata(String sensorname) {
  141. String selectSQL = "select * from sensorusage where sensorname='" + sensorname + "' order by timeinserted asc";
  142. ResultSet rs;
  143.  
  144. // Declare ArrayList of sensors to hold results
  145. ArrayList<sensordata> allSensors = new ArrayList<sensordata>();
  146.  
  147. try {
  148. // create a result set of selected values
  149. rs = stmt.executeQuery(selectSQL);
  150.  
  151. // Declare a SensorData object to hold individual values,
  152. // initialise to defaults
  153. sensordata oneSensor = new sensordata("", ""); // fill in statement
  154. // iterate over the result set
  155. while (rs.next()) {
  156. oneSensor.setSensorname(rs.getString("sensorname"));
  157. oneSensor.setSensorvalue(rs.getString("sensorvalue"));
  158. oneSensor.setUserid(rs.getString("userid"));
  159. oneSensor.setSensordate(null);
  160.  
  161. oneSensor.setSensorname(rs.getString("sensorname"));
  162. // add this sensor to ArrayList of Sensors
  163. allSensors.add(oneSensor);
  164. // debug print this sensor to console
  165. System.out.println(oneSensor.toString());
  166. }
  167. } catch (SQLException ex) {
  168. System.out.println("Error in SQL " + ex.getMessage());
  169. }
  170. // Convert sensor list to json array and send back to user
  171. String allSensorsJson = gson.toJson(allSensors);
  172.  
  173. // return this String from method
  174. return allSensorsJson;
  175. }
  176.  
  177.  
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement