Advertisement
Guest User

Untitled

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