Advertisement
Guest User

Untitled

a guest
Oct 16th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.29 KB | None | 0 0
  1. package database;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6.  
  7. import org.json.simple.JSONArray;
  8. import org.json.simple.JSONObject;
  9. //import org.json.simple.parser.JSONParser;
  10. //import org.json.simple.parser.ParseException;
  11. import java.time.format.DateTimeFormatter;
  12. import java.time.LocalDateTime;
  13.  
  14.  
  15. import com.mysql.jdbc.Statement;
  16.  
  17. public class ChatData {
  18. private Connection con = null;
  19. public ChatData(String url, String username, String password) {
  20. try
  21. {
  22. con = DriverManager.getConnection(url, username, password);
  23. System.out.println("Connected to database!");
  24. }
  25. catch (Exception e)
  26. {
  27. System.out.println("Cannot connect to database!");
  28. System.out.println(e);
  29. }
  30. }
  31.  
  32. public ResultSet query(String sql) {
  33. Statement stmt;
  34. try
  35. {
  36. stmt = (Statement) con.createStatement();
  37. }
  38. catch (SQLException e1)
  39. {
  40. return null;
  41. }
  42.  
  43. try {
  44. return stmt.executeQuery(sql);
  45. }
  46. catch (SQLException e) {
  47. return null;
  48. }
  49. }
  50.  
  51. public void update(String sql) {
  52. Statement stmt;
  53. try {
  54. stmt = (Statement) con.createStatement();
  55. stmt.executeUpdate(sql);
  56. }
  57. catch (SQLException e1)
  58. {
  59. System.out.println("UPDATE DATABASE ERROR");
  60. }
  61. }
  62.  
  63. @SuppressWarnings("unchecked")
  64. public String getInbox(String userName) {
  65. String sql = "select * from chatapp.inbox where sender = '" + userName + "'";
  66. ResultSet res = this.query(sql);
  67. JSONArray inboxes = new JSONArray();
  68. try
  69. {
  70. while(res.next())
  71. {
  72. String idLastMess = res.getString(1);
  73. String lastTime = res.getString(2);
  74. String receiverId = res.getString(4);
  75. String sqlLastMessage = "select content, timeSeen from chatapp.messages where idMess = '" + idLastMess + "';";
  76. ResultSet resLastMessage = this.query(sqlLastMessage);
  77. resLastMessage.next();
  78. //content of last message
  79. String contentLastMessage = resLastMessage.getString(1);
  80. String timeSeen = resLastMessage.getString(2);
  81. boolean seen = (timeSeen == null) ? false : true;
  82.  
  83. String sqlReceiver = "select * from chatapp.receiver where idRec = '" + receiverId + "';";
  84. ResultSet resReceiver = this.query(sqlReceiver);
  85. resReceiver.next();
  86. String receiverName = "";
  87. boolean isGroup = false;
  88. String groupId = resReceiver.getString(3);
  89. isGroup = (groupId == null) ? false : true;
  90. if (isGroup)
  91. {
  92. String sqlGroupName = "select group_name from chatapp.group where group_id = " + groupId + ";";
  93. ResultSet resGroupName = this.query(sqlGroupName);
  94. resGroupName.next();
  95. receiverName = resGroupName.getString(1);
  96. }
  97. else
  98. receiverName = resReceiver.getString(2);
  99.  
  100. JSONObject inbox = new JSONObject();
  101. inbox.put("idReceiver", Integer.parseInt(receiverId));
  102. inbox.put("Receiver", receiverName);
  103. inbox.put("LastMess", contentLastMessage);
  104. inbox.put("TimeOfLastMess", lastTime);
  105. inbox.put("Seen", seen);
  106. inboxes.add(inbox);
  107. }
  108. }
  109. catch (SQLException e)
  110. {
  111. System.out.println(e.getMessage());
  112. JSONObject obj = new JSONObject();
  113. obj.put("type", "RES_GET_INBOX");
  114. JSONObject obj2 = new JSONObject();
  115. obj2.put("user_name", userName);
  116. obj2.put("code", 444);
  117. obj.put("output", obj2);
  118. return "[" + obj.toString() + "]";
  119. }
  120. catch (NullPointerException e)
  121. {
  122. System.out.println(e.getMessage());
  123. return "No row has been returned";
  124. }
  125.  
  126. JSONObject obj = new JSONObject();
  127. obj.put("type", "RESPONSE_INBOX");
  128. JSONObject subObj = new JSONObject();
  129. subObj.put("user_name", userName);
  130. subObj.put("inbox", inboxes);
  131. obj.put("output", subObj);
  132. return obj.toString();
  133. }
  134.  
  135. @SuppressWarnings("unchecked")
  136. public String checkLogin(String user_name, String pass, String IpAddr) {
  137. String sql = "Select * from user where user_name = '" + user_name + "' and password = '" + pass + "'";
  138. ResultSet res = this.query(sql);
  139. boolean check = false;
  140. try
  141. {
  142. while(res.next())
  143. check = true;
  144. }
  145. catch (SQLException e)
  146. {
  147. JSONObject obj = new JSONObject();
  148. obj.put("type", "RES_CHECK_LOGIN");
  149. JSONObject obj2 = new JSONObject();
  150. obj2.put("user_name", user_name);
  151. obj2.put("code", 444);
  152. obj.put("output", obj2);
  153. return obj.toString();
  154. }
  155.  
  156. if (check == true)
  157. {
  158. sql = "UPDATE user SET IpAddr = '"+ IpAddr + "' where user_name = '" + user_name + "'";
  159. this.update(sql);
  160. JSONObject obj = new JSONObject();
  161. obj.put("type", "RES_CHECK_LOGIN");
  162. JSONObject obj2 = new JSONObject();
  163. obj2.put("user_name", user_name);
  164. obj2.put("code", 777);
  165. obj.put("output", obj2);
  166. return obj.toString();
  167. }
  168. else
  169. {
  170. JSONObject obj = new JSONObject();
  171. obj.put("type", "RES_CHECK_LOGIN");
  172. JSONObject obj2 = new JSONObject();
  173. obj2.put("user_name", user_name);
  174. obj2.put("code", 444);
  175. obj.put("output", obj2);
  176. return obj.toString();
  177. }
  178. }
  179.  
  180. @SuppressWarnings("unchecked")
  181. public String getMessages(String user_name, long receiver) {
  182. String sql = "Select * from receiver where idRec = " + receiver;
  183. ResultSet res = this.query(sql);
  184. int isGroup = 0;
  185. String usernameOfRec = null;
  186. try
  187. {
  188. while(res.next())
  189. usernameOfRec = res.getString(2);
  190.  
  191. if (usernameOfRec == null)
  192. isGroup = 1;
  193. if (isGroup == 1)
  194. {
  195. sql = "Select * from messages where receiver = " + receiver;
  196. res = this.query(sql);
  197. JSONObject obj = new JSONObject();
  198. obj.put("type", "RESPONSE_OF_GET_MESSAGE");
  199. obj.put("user_name", user_name);
  200. obj.put("idReceiver", receiver);
  201. JSONArray arr = new JSONArray();
  202. while(res.next())
  203. {
  204. JSONObject obj2 = new JSONObject();
  205. obj2.put("sender", res.getString(4));
  206. obj2.put("content", res.getString(2));
  207. obj2.put("timeSent", res.getString(6));
  208. obj2.put("timeSeen", res.getString(7));
  209. arr.add(obj2);
  210. }
  211. obj.put("messages", arr);
  212. return obj.toString();
  213. }
  214. else
  215. {
  216. sql = "Select * from receiver where user_name = \'" + user_name + "\'";
  217. res = this.query(sql);
  218. int idRecOfUsername = 0;
  219. while(res.next())
  220. idRecOfUsername = res.getInt(1);
  221. sql = "Select * from messages where (sender = \'" + usernameOfRec + "\' and receiver = " + idRecOfUsername + ") or (sender = \'" + user_name + " \' and receiver = \'" + receiver + " \') order by timeSent" ;
  222. res = this.query(sql);
  223. JSONObject obj = new JSONObject();
  224. obj.put("type", "RESPONSE_OF_GET_MESSAGE");
  225. obj.put("user_name", user_name);
  226. obj.put("idReceiver", receiver);
  227. JSONArray arr = new JSONArray();
  228. while(res.next())
  229. {
  230. JSONObject obj1 = new JSONObject();
  231. obj1.put("type", res.getString(3));
  232. obj1.put("content", res.getString(2));
  233. obj1.put("timeSent", res.getString(6));
  234. obj1.put("timeSeen", res.getString(7));
  235. arr.add(obj1);
  236. }
  237. obj.put("messages", arr);
  238. return obj.toString();
  239. }
  240. }
  241. catch (SQLException e)
  242. {
  243. return null;
  244. }
  245. }
  246.  
  247.  
  248. public void sendTextMessages(String sender, long receiver, String content)
  249. {
  250. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
  251. LocalDateTime now = LocalDateTime.now();
  252. String lastTime = dtf.format(now);
  253. String sql = "Select * from inbox where receiver = " + receiver + " and sender = \'" + sender + "\'";
  254. ResultSet res = this.query(sql);
  255. int numMess = 0;
  256. try
  257. {
  258. while(res.next())
  259. numMess = res.getInt(5);
  260. sql = "UPDATE inbox SET lastMess = \'" + content + "\', numMess = " + (numMess + 1) + ", lastTime = \'" + lastTime + "\' where receiver = " + receiver + " and sender = \'"+sender +"\'";
  261. System.out.println("Insert to inbox database successfully!");
  262. this.update(sql);
  263. sql = "INSERT INTO messages(content,type,sender,receiver,timeSent) values (\'" + content + "\', \'text\',\'" +sender + "\',"+ receiver + ",\'"+lastTime + "\')";
  264. System.out.println("Insert to messages database successfully!");
  265. this.update(sql);
  266. }
  267. catch (SQLException e)
  268. {
  269. System.out.println(" SEND TEXT MESSAGE ERROR ");
  270. }
  271. }
  272.  
  273. public void requestMessages(String user_name, int idRecerver) {
  274.  
  275. }
  276.  
  277. public static void main(String args[]) {
  278. ChatData data = new ChatData("jdbc:mysql://localhost:3306/ChatApp?autoReconnect=true&useSSL=false","root", "Luan161198");
  279. String sender = "user_1";
  280. //String receiver = "2";
  281. //data.sendTextMessages("user_1", 2,"HAHAHA");
  282.  
  283. //String res = data.getMessages("user_1",2);
  284. //String res = data.checkLogin("user_1","1234","192.168.100.14");
  285. String res = data.getInbox(sender);
  286. System.out.println(res);
  287. //System.out.println(res);
  288. // JSONParser parser = new JSONParser();
  289. // try {
  290. // JSONObject obj = (JSONObject)parser.parse(res);
  291. // String type = (String) obj.get("type");
  292. // JSONArray arr = (JSONArray) obj.get("messages");
  293. // for (int i = 0; i< arr.size(); i++) {
  294. // System.out.println(((JSONObject)arr.get(i)).get("content"));
  295. // System.out.println(((JSONObject)arr.get(i)).get("type"));
  296. // System.out.println(((JSONObject)arr.get(i)).get("timeSeen"));
  297. // System.out.println(((JSONObject)arr.get(i)).get("timeSent"));
  298. // }
  299. // } catch (ParseException e) {
  300. // e.printStackTrace();
  301. // }
  302. }
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement