Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.33 KB | None | 0 0
  1. package projsd;
  2.  
  3. import java.net.MulticastSocket;
  4. import java.net.DatagramPacket;
  5. import java.net.InetAddress;
  6. import java.io.IOException;
  7.  
  8. public class MulticastServer extends Thread{
  9. private String MULTICAST_ADDRESS = "224.3.2.1";
  10. private int PORT = 4321;
  11. private BaseDados baseDados;
  12. private String multicastNumber= "1";
  13.  
  14. public MulticastServer(BaseDados baseDados){
  15. super("Server " + (long) (Math.random() * 1000));
  16. this.baseDados= baseDados;
  17. UploadDownloadControler tcpServer= new UploadDownloadControler();
  18. tcpServer.start();
  19. }
  20.  
  21. public void run() {
  22. MulticastSocket socket = null;
  23. System.out.println("Multicast Server running...");
  24. while(true){
  25. try {
  26. socket = new MulticastSocket(PORT);
  27. InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  28. socket.joinGroup(group);
  29.  
  30. byte[] buffer = new byte[256];
  31. DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
  32. socket.receive(packet);
  33.  
  34.  
  35. String message = new String(packet.getData(), 0, packet.getLength());
  36. System.out.println("Recebeu o pacote: "+message);
  37. String[] type= message.split("[\\;|]");
  38. String[] multicastNumber= type[0].split("[,]");
  39.  
  40. if(multicastNumber[0].equals(this.multicastNumber)){
  41. boolean aprovado;
  42. String username;
  43. String dataBaseData;
  44. String password;
  45.  
  46. switch(type[1]){
  47. case "online users":
  48. dataBaseData= baseDados.onlineUsernames();
  49. message=dataBaseData;
  50. break;
  51. case "login":
  52. username= type[3];
  53. password= type[5];
  54. dataBaseData= baseDados.verificaUsernamePassword(username,password);
  55. if(!dataBaseData.equals("")) message= username+"|status;logged|on;"+dataBaseData;
  56. else
  57. message= username+"|status;logged|off";
  58. break;
  59. case "register":
  60. username= type[2];
  61. password= type[5];
  62. aprovado= baseDados.adicionaUtilizador(username,password);
  63. break;
  64. case "partial search artist":
  65. username= type[5];
  66. dataBaseData= baseDados.getPartialSearchArtist(type[3]);
  67. if(dataBaseData.equals("")) message= username+"|answer;message|Artist name doesn't exist";
  68. else message= username+ "|partial search artist answer;artist name|"+type[3]+";separate message|"+dataBaseData;
  69. break;
  70. case "partial search album":
  71. username= type[5];
  72. dataBaseData= baseDados.getPartialSearchAlbum(type[3]);
  73. if(dataBaseData.equals("")) message= username+"|answer;message|Album name doesn't exist";
  74. else
  75. message= username+ "|partial search album answer;album name|"+type[3]+";separate message|"+dataBaseData;
  76. break;
  77. case "partial search genre":
  78. username= type[5];
  79. dataBaseData= baseDados.getPartialSearchGenre(type[3]);
  80. if(dataBaseData.equals("")) message= username+"|answer;message|Genre doesn't exist";
  81. else
  82. message= username+ "|partial search answer;message|"+dataBaseData;
  83. break;
  84. case "search music":
  85. username= type[7];
  86. dataBaseData= baseDados.searchSong(type[3],"","","",type[5]);
  87. if(dataBaseData.equals(""))
  88. message= username+"|answer;message|Song name doesn't exist";
  89. else
  90. message= username+"|answer;message|"+dataBaseData;
  91. break;
  92. case "search music by album":
  93. username= type[9];
  94. dataBaseData= baseDados.searchSong(type[5],type[3],"","",type[7]);
  95. if(dataBaseData.equals(""))
  96. message= username+"|answer;message|Song name doesn't exist";
  97. else
  98. message= username+"|answer;message|"+dataBaseData;
  99. break;
  100. case "search music by artist":
  101. username= type[9];
  102. dataBaseData= baseDados.searchSong(type[5],"",type[3],"",type[7]);
  103. if(dataBaseData.equals(""))
  104. message= username+"|answer;message|Song name doesn't exist";
  105. else
  106. message= username+"|answer;message|"+dataBaseData;
  107. break;
  108. //searchSong(String songName, String albumName, String artistName, String genre, String option);
  109. case "details album":
  110. username= type[9];
  111. switch (type[3]) {
  112. case "description":
  113. dataBaseData= baseDados.getDescriptionAlbum(type[5],type[7]);
  114. if(dataBaseData.equals(""))
  115. message= username+"|answer;message|The album doesn't exist";
  116. else
  117. message= username+"|answer;separate message|"+dataBaseData;
  118. break;
  119. case "list of songs":
  120. dataBaseData= baseDados.getSongListAlbum(type[5], type[7]);
  121. if(dataBaseData.equals(""))
  122. message= username+"|answer;message|The album doesn't exist";
  123. else
  124. message= username+"|answer;separate message|"+dataBaseData;
  125. break;
  126. case "reviews":
  127. dataBaseData =baseDados.getReviewsAlbum(type[5],type[7]);
  128. if(dataBaseData.equals(""))
  129. message= username+"|answer;message|The album doesn't exist";
  130. else
  131. message= username+"|answer;message|"+dataBaseData;
  132. break;
  133. default:
  134. break;
  135. }
  136. break;
  137. case "details artist":
  138. username= type[5];
  139. dataBaseData= baseDados.getArtistData(type[3]);
  140. if(dataBaseData.equals(""))
  141. message= username+"|answer;message|The artist doesn't exist";
  142. else
  143. message= username+"|answer;message|"+dataBaseData;
  144.  
  145. break;
  146. case "review":
  147. username= type[9];
  148. aprovado=baseDados.writeReview(type[3],type[5],type[7]);
  149. if(aprovado)
  150. message= username+"|discard;";
  151. else
  152. message= username+"|answer;message|Album name doesn't exist";
  153. break;
  154. case "change to editor":
  155. String newEditorUsername= type[3];
  156. username= type[5];
  157. dataBaseData=baseDados.changeToEditor(type[3]);
  158. if(dataBaseData.equals(""))
  159. message=username+"|discard;";
  160. else if(dataBaseData.equals("error"))
  161. message= username+"|answer;message|Username doesn't exist";
  162. else
  163. message= username+"|notification;send to|"+newEditorUsername+";message|"+dataBaseData;
  164. break;
  165. case "insert artist":
  166. username= type[9];
  167. aprovado= baseDados.insertArtist(username, type[3],type[5],type [7]);
  168. if(aprovado) message=username +"|answer;message|Artist added";
  169. else message= username +"|answer;message|Artist already exists";
  170. break;
  171.  
  172. case "insert album":
  173. username= type[13];
  174. aprovado= baseDados.insertAlbum(username,type[3], type[5],type[7],type[9],type[11]);
  175. if(aprovado) message=username +"|answer;message|Album added";
  176. else message= username +"|answer;message|Album already exists";
  177. break;
  178.  
  179. case "insert song":
  180. username= type[15];
  181. aprovado= baseDados.insertSong(username,type[3], type[5],type[7],type[9],type[11],type[13]);
  182. if(aprovado) message=username +"|answer;message|Song added";
  183. else message= username +"|answer;message|Song already exists";
  184. break;
  185. case "change artist":
  186. username= type[9];
  187. dataBaseData= baseDados.changeArtist(username,type[3],type[5],type[7]);
  188. if(dataBaseData.equals("")){
  189. message=username+"|answer;message|Artist name doesn't exist";
  190. }
  191. else
  192. message=username+"|notification;"+dataBaseData;
  193. break;
  194. case "change album":
  195. username= type[11];
  196. dataBaseData= baseDados.changeAlbum(username,type[3],type[5],type[7],type[9]);
  197. if(dataBaseData.equals("")){
  198. message=username+"|answer;message|Artist/Album name doesn't exist";
  199. }
  200. else
  201. message=username+"|notification;"+dataBaseData;
  202. break;
  203. case "change song":
  204. username= type[13];
  205. dataBaseData= baseDados.changeSong(username,type[3],type[5],type[7],type[9],type[11]);
  206. if(dataBaseData.equals("")){
  207. message=username+"|answer;message|Artist/Album/Song name doesn't exist";
  208. }
  209. else
  210. message=username+"|notification;"+dataBaseData;
  211. break;
  212. case "remove artist":
  213. username= type[5];
  214. aprovado= baseDados.removeArtist(type[3]);
  215. if(aprovado) message= username+"";
  216. else message= username+"";
  217. break;
  218. case "remove album":
  219. username= type[7];
  220. aprovado= baseDados.removeAlbum(type[3], type[5]);
  221. if(aprovado) message= username+"";
  222. else message= username+"";
  223. break;
  224. case "remove song":
  225. username= type[9];
  226. aprovado= baseDados.removeSong(type[3], type[5],type[7]);
  227. if(aprovado) message= username+"";
  228. else message= username+"";
  229. break;
  230.  
  231. default:
  232. continue;
  233. }
  234.  
  235. buffer = message.getBytes();
  236. socket.leaveGroup(group);
  237. group = InetAddress.getByName(MULTICAST_ADDRESS);
  238. packet = new DatagramPacket(buffer, buffer.length, group, PORT);
  239. socket.send(packet);
  240. System.out.println("enviou-> "+message);
  241. }
  242.  
  243. } catch (IOException e) {
  244. e.printStackTrace();
  245. } finally {
  246. socket.close();
  247. }
  248. }
  249. }
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement