Advertisement
Guest User

Untitled

a guest
Apr 18th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.01 KB | None | 0 0
  1. package com.theironyard.clt;
  2.  
  3. import jodd.json.JsonParser;
  4. import jodd.json.JsonSerializer;
  5. import spark.ModelAndView;
  6. import spark.Session;
  7. import spark.Spark;
  8. import spark.template.mustache.MustacheTemplateEngine;
  9.  
  10. import java.io.File;
  11. import java.io.FileWriter;
  12. import java.io.IOException;
  13. import java.util.HashMap;
  14. import java.util.Map;
  15. import java.util.Scanner;
  16. import java.util.Set;
  17.  
  18. public class Main {
  19. public static HashMap<String, User> users = new HashMap<>();
  20.  
  21.  
  22.  
  23. public static void serializeMessageState() throws IOException {
  24. File f = new File("messages.json");
  25. FileWriter fw = new FileWriter(f);
  26.  
  27. JsonSerializer serializer = new JsonSerializer();
  28.  
  29. fw.write(serializer.deep(true).serialize(users));
  30.  
  31. fw.close();
  32. }
  33.  
  34. public static void getMessagesFromDisk() {
  35. try {
  36. File f = new File("messages.json");
  37. JsonParser parser = new JsonParser();
  38. Scanner fileScanner = new Scanner(f);
  39.  
  40. fileScanner.useDelimiter("\\Z");
  41. String fileContents = fileScanner.next();
  42.  
  43. parser.map("values", User.class);
  44.  
  45. users = parser.parse(fileContents);
  46.  
  47. } catch (IOException ex) {
  48.  
  49. }
  50.  
  51. }
  52.  
  53.  
  54. public static void main(String[] args) {
  55. Spark.init();
  56.  
  57. getMessagesFromDisk();
  58.  
  59. Spark.post("/destroy-user", (request, response) -> {
  60. Session session = request.session();
  61.  
  62. session.invalidate();
  63.  
  64. response.redirect("/");
  65. return "";
  66. });
  67.  
  68. Spark.post("/delete-message", (request, response) -> {
  69. Session session = request.session();
  70.  
  71. if (session.attribute("userName") == null) {
  72. response.redirect("/");
  73. return "";
  74. }
  75.  
  76. int messageNumber = Integer.valueOf(request.queryParams("messageNumber"));
  77. User currentUser = users.get(session.attribute("userName"));
  78.  
  79. currentUser.messages.remove(messageNumber - 1);
  80.  
  81. response.redirect("/");
  82.  
  83. serializeMessageState();
  84.  
  85. return "";
  86. });
  87.  
  88.  
  89. Spark.post("/edit-message", (request, response) -> {
  90. Session session = request.session();
  91.  
  92. if (session.attribute("userName") == null) {
  93. response.redirect("/");
  94. return "";
  95. }
  96.  
  97. String newMessage = request.queryParams("newMessage");
  98. int messageNumber = Integer.valueOf(request.queryParams("messageNumber"));
  99. User currentUser = users.get(session.attribute("userName"));
  100.  
  101. currentUser.messages.remove(messageNumber - 1);
  102. currentUser.messages.add(messageNumber - 1, newMessage);
  103.  
  104. response.redirect("/");
  105.  
  106. serializeMessageState();
  107. return "";
  108. });
  109.  
  110. Spark.get(
  111. "/",
  112. (request, response) -> {
  113. Session context = request.session();
  114.  
  115. // if we can't get a user from session, show login
  116. if (context.attribute("userName") == null) {
  117. return new ModelAndView(users, "login.html");
  118. } else {
  119. User current = users.get(context.attribute("userName"));
  120.  
  121. HashMap<String, User> model = new HashMap<>();
  122.  
  123. model.put("user", current);
  124.  
  125. return new ModelAndView(model, "messages.html");
  126. }
  127. },
  128. new MustacheTemplateEngine()
  129. );
  130.  
  131. Spark.post("/create-user",
  132. (request, response) -> {
  133. Session session = request.session();
  134.  
  135. // get name from query string
  136. String name = request.queryParams("loginName");
  137. String password = request.queryParams("loginPassword");
  138.  
  139. // if user exists at username
  140. User tempUser = new User(name);
  141.  
  142. if (password.equals(tempUser.password)) {
  143. // save name to session
  144. session.attribute("userName", name);
  145.  
  146. // make sure that the users hashmap has an entry with that name
  147. users.putIfAbsent(name, tempUser);
  148. }
  149.  
  150. response.redirect("/");
  151. return "";
  152. }
  153. );
  154.  
  155. Spark.post("/create-message",
  156. (request, response) -> {
  157. Session session = request.session();
  158. String userName = session.attribute("userName");
  159.  
  160. if (userName == null) {
  161. response.redirect("/");
  162. return "";
  163. }
  164.  
  165. // get message from query string
  166. String message = request.queryParams("message");
  167.  
  168. users.get(userName).messages.add(message);
  169.  
  170. response.redirect("/");
  171.  
  172. serializeMessageState();
  173. return "";
  174. }
  175. );
  176. }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement