Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package projsd;
- import java.net.MulticastSocket;
- import java.net.DatagramPacket;
- import java.net.InetAddress;
- import java.io.IOException;
- public class MulticastServer extends Thread{
- private String MULTICAST_ADDRESS = "224.3.2.69";
- private int PORT = 4325;
- private BaseDados baseDados;
- private String multicastNumber= "1";
- private String serverPort="6060";
- public MulticastServer(BaseDados baseDados){
- super("Server " + (long) (Math.random() * 1000));
- this.baseDados= baseDados;
- UploadDownloadControler tcpServer= new UploadDownloadControler();
- tcpServer.start();
- }
- public void run() {
- MulticastSocket socket = null;
- System.out.println("Multicast Server running...");
- while(true){
- try {
- socket = new MulticastSocket(PORT);
- InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
- socket.joinGroup(group);
- System.out.println("Joined group. waiting for ");
- byte[] buffer = new byte[256];
- DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
- socket.receive(packet);
- String message = new String(packet.getData(), 0, packet.getLength());
- System.out.println("Recebeu o pacote: "+message);
- String[] type= message.split("[\\;|]");
- String[] multicastNumber= type[0].split("[,]");
- boolean aprovado;
- String username;
- String dataBaseData;
- String password;
- switch(type[1]){
- case "server off":
- dataBaseData= baseDados.onlineUsernames();
- message=dataBaseData;
- break;
- case "login":
- username= type[3];
- password= type[5];
- dataBaseData= baseDados.verificaUsernamePassword(username,password);
- if(!dataBaseData.equals("")) message= username+"|status;logged|on;"+dataBaseData;
- else
- message= username+"|status;logged|off";
- break;
- case "register":
- username= type[2];
- password= type[5];
- aprovado= baseDados.adicionaUtilizador(username,password);
- break;
- case "partial search artist":
- username= type[5];
- dataBaseData= baseDados.getPartialSearchArtist(type[3]);
- if(dataBaseData.equals("")) message= username+"|answer;message|Artist name doesn't exist";
- else message= username+ "|partial search artist answer;artist name|"+type[3]+";separate message|"+dataBaseData;
- break;
- case "partial search album":
- username= type[5];
- dataBaseData= baseDados.getPartialSearchAlbum(type[3]);
- if(dataBaseData.equals("")) message= username+"|answer;message|Album name doesn't exist";
- else
- message= username+ "|partial search album answer;album name|"+type[3]+";separate message|"+dataBaseData;
- break;
- case "partial search genre":
- username= type[5];
- dataBaseData= baseDados.getPartialSearchGenre(type[3]);
- if(dataBaseData.equals("")) message= username+"|answer;message|Genre doesn't exist";
- else
- message= username+ "|partial search answer;message|"+dataBaseData;
- break;
- case "search music":
- username= type[7];
- dataBaseData= baseDados.searchSong(type[3],"","","",type[5]);
- if(dataBaseData.equals(""))
- message= username+"|answer;message|Song name doesn't exist";
- else
- message= username+"|answer;message|"+dataBaseData;
- break;
- case "search music by album":
- username= type[9];
- dataBaseData= baseDados.searchSong(type[5],type[3],"","",type[7]);
- if(dataBaseData.equals(""))
- message= username+"|answer;message|Song name doesn't exist";
- else
- message= username+"|answer;message|"+dataBaseData;
- break;
- case "search music by artist":
- username= type[9];
- dataBaseData= baseDados.searchSong(type[5],"",type[3],"",type[7]);
- if(dataBaseData.equals(""))
- message= username+"|answer;message|Song name doesn't exist";
- else
- message= username+"|answer;message|"+dataBaseData;
- break;
- //searchSong(String songName, String albumName, String artistName, String genre, String option);
- case "details album":
- username= type[9];
- switch (type[3]) {
- case "description":
- dataBaseData= baseDados.getDescriptionAlbum(type[5],type[7]);
- if(dataBaseData.equals(""))
- message= username+"|answer;message|The album doesn't exist";
- else
- message= username+"|answer;separate message|"+dataBaseData;
- break;
- case "list of songs":
- dataBaseData= baseDados.getSongListAlbum(type[5], type[7]);
- if(dataBaseData.equals(""))
- message= username+"|answer;message|The album doesn't exist";
- else
- message= username+"|answer;separate message|"+dataBaseData;
- break;
- case "reviews":
- dataBaseData =baseDados.getReviewsAlbum(type[5],type[7]);
- if(dataBaseData.equals(""))
- message= username+"|answer;message|The album doesn't exist";
- else
- message= username+"|answer;message|"+dataBaseData;
- break;
- default:
- break;
- }
- break;
- case "details artist":
- username= type[5];
- dataBaseData= baseDados.getArtistData(type[3]);
- if(dataBaseData.equals(""))
- message= username+"|answer;message|The artist doesn't exist";
- else
- message= username+"|answer;message|"+dataBaseData;
- break;
- case "review":
- username= type[9];
- aprovado=baseDados.writeReview(type[3],type[5],type[7]);
- if(aprovado)
- message= username+"|discard;";
- else
- message= username+"|answer;message|Album name doesn't exist";
- break;
- case "change to editor":
- String newEditorUsername= type[3];
- username= type[5];
- dataBaseData=baseDados.changeToEditor(type[3]);
- if(dataBaseData.equals(""))
- message=username+"|discard;";
- else if(dataBaseData.equals("error"))
- message= username+"|answer;message|Username doesn't exist";
- else
- message= username+"|notification;send to|"+newEditorUsername+";message|"+dataBaseData;
- break;
- case "insert artist":
- username= type[9];
- aprovado= baseDados.insertArtist(username, type[3],type[5],type [7]);
- if(aprovado) message=username +"|answer;message|Artist added";
- else message= username +"|answer;message|Artist already exists";
- break;
- case "insert album":
- username= type[13];
- aprovado= baseDados.insertAlbum(username,type[3], type[5],type[7],type[9],type[11]);
- if(aprovado) message=username +"|answer;message|Album added";
- else message= username +"|answer;message|Album already exists";
- break;
- case "insert song":
- username= type[15];
- aprovado= baseDados.insertSong(username,type[3], type[5],type[7],type[9],type[11],type[13], this.serverPort);
- if(aprovado) message=username +"|answer;message|Song added";
- else message= username +"|answer;message|Song already exists";
- break;
- case "change artist":
- username= type[9];
- dataBaseData= baseDados.changeArtist(username,type[3],type[5],type[7]);
- if(dataBaseData.equals("")){
- message=username+"|answer;message|Artist name doesn't exist";
- }
- else
- message=username+"|notification;"+dataBaseData;
- break;
- case "change album":
- username= type[11];
- dataBaseData= baseDados.changeAlbum(username,type[3],type[5],type[7],type[9]);
- if(dataBaseData.equals("")){
- message=username+"|answer;message|Artist/Album name doesn't exist";
- }
- else
- message=username+"|notification;"+dataBaseData;
- break;
- case "change song":
- username= type[13];
- dataBaseData= baseDados.changeSong(username,type[3],type[5],type[7],type[9],type[11]);
- if(dataBaseData.equals("")){
- message=username+"|answer;message|Artist/Album/Song name doesn't exist";
- }
- else
- message=username+"|notification;"+dataBaseData;
- break;
- case "remove artist":
- username= type[5];
- aprovado= baseDados.removeArtist(type[3]);
- if(aprovado) message= username+"";
- else message= username+"";
- break;
- case "remove album":
- username= type[7];
- aprovado= baseDados.removeAlbum(type[3], type[5]);
- if(aprovado) message= username+"";
- else message= username+"";
- break;
- case "remove song":
- username= type[9];
- aprovado= baseDados.removeSong(type[3], type[5],type[7]);
- if(aprovado) message= username+"";
- else message= username+"";
- break;
- default:
- continue;
- }
- if(multicastNumber[0].equals(this.multicastNumber)){
- buffer = message.getBytes();
- socket.leaveGroup(group);
- group = InetAddress.getByName(MULTICAST_ADDRESS);
- packet = new DatagramPacket(buffer, buffer.length, group, PORT);
- socket.send(packet);
- System.out.println("enviou-> "+message);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- socket.close();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement