Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.38 KB | None | 0 0
  1.  
  2.  
  3. import javax.servlet.ServletConfig;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9.  
  10. import com.google.gson.Gson;
  11.  
  12. import java.util.*;
  13. import java.io.*;
  14. import java.sql.*;
  15. //import SensorData;
  16.  
  17.  
  18. /**
  19. * Servlet implementation class sensorToDB
  20. */
  21. @WebServlet("/SensorServerDBSolution")
  22. public class SensorServerDBSolution extends HttpServlet {
  23. SensorData lock = new SensorData("sensorname", "sensorvalue", "userid", "sensordate");
  24.  
  25. private static final long serialVersionUID = 1L;
  26.  
  27. Gson gson = new Gson();
  28.  
  29. Connection conn = null;
  30. Statement stmt;
  31.  
  32. public void init(ServletConfig config) throws ServletException {
  33. // init method is run once at the start of the servlet loading
  34. // This will load the driver and establish a connection
  35. super.init(config);
  36. String user = "khalids";
  37. String password = "exdoradO7";
  38. // Note none default port used, 6306 not 3306
  39. String url = "jdbc:mysql://mudfoot.doc.stu.mmu.ac.uk:6306/"+user;
  40.  
  41. // Load the database driver
  42. try { Class.forName("com.mysql.jdbc.Driver").newInstance();
  43. } catch (Exception e) {
  44. System.out.println(e);
  45. }
  46.  
  47. // get a connection with the user/pass
  48. try {
  49. conn = DriverManager.getConnection(url, user, password);
  50. System.out.println("Sensor to DB server is up and running\n");
  51. System.out.println("Upload sensor data with http://localhost:8080/PhidgetServer/SensorServerDBSolution?sensordata=some_sensor_data_in_json_format");
  52. System.out.println("View last sensor reading at http://localhost:8080/CWServer/SensorServerDB?getdata=true\n\n");
  53.  
  54. // System.out.println("DEBUG: Connection to database successful.");
  55. stmt = conn.createStatement();
  56. } catch (SQLException se) {
  57. System.out.println(se);
  58. System.out.println("\nDid you alter the lines to set user/password in the sensor server code?");
  59. }
  60. } // init()
  61.  
  62. public void destroy() {
  63. try { conn.close(); } catch (SQLException se) {
  64. System.out.println(se);
  65. }
  66. } // destroy()
  67.  
  68.  
  69.  
  70. public SensorServerDBSolution() {
  71. super();
  72. // TODO Auto-generated constructor stub
  73. }
  74.  
  75.  
  76. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  77. response.setStatus(HttpServletResponse.SC_OK);
  78. // Declare a SensorData object to hold the incoming data
  79. SensorData oneSensor = new SensorData("unknown", "unknown");
  80.  
  81. // Check to see whether the client is requesting data or sending it
  82. String getdata = request.getParameter("getdata");
  83.  
  84. // if no getdata parameter, client is sending data
  85. if (getdata == null){
  86. // getdata is null, therefore it is receiving data
  87. // Extract the parameter data holding the sensordata
  88. String sensorJsonString = request.getParameter("sensordata");
  89.  
  90. // Problem if sensordata parameter not sent, or is invalid json
  91. if (sensorJsonString != null) {
  92. // Convert the json string to an object of type SensorData
  93. oneSensor = gson.fromJson(sensorJsonString, SensorData.class);
  94. // now update the table
  95. updateSensorTable(oneSensor);
  96. } // endif sensorJsonString not null
  97. } // end if getdata is null
  98. else { // Retrieve and return data (JSON format)
  99. // Code to retrieve data
  100. String sensorName = request.getParameter("sensorname");
  101. String resultsJson = retrieveSensorData(sensorName);
  102. // Update sensor values and send back response
  103. PrintWriter out = response.getWriter();
  104. out.println(resultsJson);
  105. out.close();
  106.  
  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 doorlock(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 doorlock where sensorname='" +
  142. sensorname + "' order by timeinserted asc";
  143. ResultSet rs;
  144.  
  145. // Declare ArrayList of sensors to hold results
  146. ArrayList<SensorData> allSensors = new ArrayList<SensorData>();
  147.  
  148. try {
  149. // create a result set of selected values
  150. rs = stmt.executeQuery(selectSQL);
  151.  
  152. // Declare a SensorData object to hold individual values,
  153. // initialise to defaults
  154. SensorData oneSensor = new SensorData("unknown", "unknown"); // fill in statement
  155. // iterate over the result set
  156. while (rs.next()) {
  157. oneSensor.setSensorname(rs.getString("sensorname"));
  158. oneSensor.setSensorvalue(rs.getString("sensorvalue"));
  159. oneSensor.setUserid(rs.getString("userid"));
  160. oneSensor.setSensorname(rs.getString("sensorname"));
  161. oneSensor.setSensordate(rs.getString("timeinserted"));
  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