Guest User

Untitled

a guest
Dec 15th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 44.67 KB | None | 0 0
  1. package rmiserver;
  2.  
  3. import java.io.*;
  4. import java.net.MulticastSocket;
  5. import java.net.DatagramPacket;
  6. import java.net.InetAddress;
  7. import java.util.concurrent.CopyOnWriteArrayList;
  8. import java.io.Serializable;
  9.  
  10. /*
  11. class ShareMusic implements Serializable{
  12.     String shareUsername;
  13.     String shareSong;
  14.  
  15.     public ShareMusic(String shareUsername, String shareSong) {
  16.         this.shareUsername = shareUsername;
  17.         this.shareSong = shareSong;
  18.     }
  19. }
  20. */
  21.  
  22. class EditorAbum implements Serializable{
  23.     String editorName;
  24.     String albumCommented;
  25.  
  26.     public EditorAbum(String editorName, String albumCommented) {
  27.         this.editorName = editorName;
  28.         this.albumCommented = albumCommented;
  29.     }
  30. }
  31.  
  32. class OfflineUser implements Serializable{
  33.     String offlineUsername;
  34.     String offlineNotification;
  35.  
  36.  
  37.     public OfflineUser(String offlineUsername, String offlineNotification) {
  38.         this.offlineUsername = offlineUsername;
  39.         this.offlineNotification = offlineNotification;
  40.     }
  41. }
  42.  
  43. class User implements Serializable  {
  44.     String username;
  45.     String password;
  46.     String editorStatus;
  47.     String onlineStatus;
  48.  
  49.  
  50.     public User(String username, String password, String editorStatus, String onlineStatus) {
  51.         this.username = username;
  52.         this.password = password;
  53.         this.editorStatus = editorStatus;
  54.         this.onlineStatus = onlineStatus;
  55.     }
  56. }
  57.  
  58. class Album implements Serializable{
  59.     String albumName;
  60.     String albumArtist;
  61.     String albumGender;
  62.     String albumDate;
  63.     String albumDescription;
  64.  
  65.  
  66.     public Album(String albumName, String albumArtist, String albumGender, String albumDate, String albumDescription) {
  67.         this.albumName = albumName;
  68.         this.albumArtist = albumArtist;
  69.         this.albumGender = albumGender;
  70.         this.albumDate = albumDate;
  71.         this.albumDescription = albumDescription;
  72.     }
  73. }
  74.  
  75. class Artist implements Serializable{
  76.     String artistName;
  77.     String artistGender;
  78.     String artistBirthdate;
  79.     String artistMusicGender;
  80.     String artistDescription;
  81.  
  82.  
  83.     public Artist(String artistName, String artistGender, String artistBirthdate, String artistMusicGender, String artistDescription) {
  84.         this.artistName = artistName;
  85.         this.artistGender = artistGender;
  86.         this.artistBirthdate = artistBirthdate;
  87.         this.artistMusicGender = artistMusicGender;
  88.         this.artistDescription = artistDescription;
  89.     }
  90. }
  91.  
  92. class Song implements Serializable{
  93.     String songName;
  94.     String songArtist;
  95.     String songGender;
  96.     String songAlbum;
  97.     String songDuration;
  98.  
  99.     public Song(String songName, String songArtist, String songGender, String songAlbum, String songDuration) {
  100.         this.songName = songName;
  101.         this.songArtist = songArtist;
  102.         this.songGender = songGender;
  103.         this.songAlbum = songAlbum;
  104.         this.songDuration = songDuration;
  105.     }
  106. }
  107.  
  108. class Comments implements Serializable{
  109.     String username;
  110.     String albumName;
  111.     double score;
  112.     String comment;
  113.  
  114.     public Comments(String username, String albumName, double score, String comment) {
  115.         this.username = username;
  116.         this.albumName = albumName;
  117.         this.score = score;
  118.         this.comment = comment;
  119.     }
  120. }
  121.  
  122. public class MulticastServer extends Thread {
  123.     private String MULTICAST_ADDRESS = "224.0.224.0";
  124.     private int PORT = 4321;
  125.     private long SLEEP_TIME = 5000;
  126.  
  127.     public static void main(String[] args) {
  128.         MulticastServer server = new MulticastServer();
  129.         server.start();
  130.     }
  131.  
  132.     public MulticastServer() {
  133.         super("Server " + (long) (Math.random() * 1000));
  134.     }
  135.  
  136.     public void run() {
  137.         MulticastSocket socket = null;
  138.         long counter = 0;
  139.         System.out.println(this.getName() + " running...");
  140.         String answer;
  141.         String answer2;
  142.         String [] message1;
  143.         byte[] answerBytes;
  144.         try{
  145.             socket = new MulticastSocket(PORT);  // create socket without binding it (only for sending)
  146.             InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  147.             socket.joinGroup(group);
  148.             Connecting con = new Connecting();
  149.  
  150.             while (true) {
  151.  
  152.                 byte[] buffer = new byte[256];
  153.                 DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
  154.                 socket.receive(packet);
  155.                 String message = new String(packet.getData(), 0, packet.getLength());
  156.                 System.out.println(message);
  157.                 message1 = message.split("\\|");
  158.                 if (message1[0].equals("request")) {
  159.  
  160.                     if (message1[2].equals("register")) {
  161.                         if (con.createUser(message1[4], message1[6], "no") == true) {
  162.                             answer = message1[4] + "|answer|true";
  163.                             System.out.println(answer);
  164.                             answerBytes = answer.getBytes();
  165.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  166.                             System.out.println("Vai enviar");
  167.                             socket.send(answerPacket);
  168.                         } else {
  169.                             answer = message1[4] + "|answer|false";
  170.                             answerBytes = answer.getBytes();
  171.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  172.                             socket.send(answerPacket);
  173.                         }
  174.  
  175.  
  176.                     } else if (message1[2].equals("login")) {
  177.                         if (con.login(message1[4], message1[6])) {
  178.                             answer = message1[4] + "|answer|true";
  179.                             answerBytes = answer.getBytes();
  180.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  181.                             socket.send(answerPacket);
  182.                         } else {
  183.                             answer = message1[4] + "|answer|false";
  184.                             answerBytes = answer.getBytes();
  185.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  186.                             socket.send(answerPacket);
  187.                         }
  188.                     } else if (message1[4].equals("comment")) {
  189.                         if (con.commentAlbum(message1[2],message1[6],message1[10],Float.parseFloat(message1[8])) == true) {
  190.                             //double score = Float.parseFloat(message1[8]);
  191.                             //addAlbumComment(message1[2], message1[6], score, message1[10]);
  192.                             answer = message1[2] + "|answer|true";
  193.                             answerBytes = answer.getBytes();
  194.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  195.                             socket.send(answerPacket);
  196.                         } else {
  197.                             answer = message1[2] + "|answer|false";
  198.                             answerBytes = answer.getBytes();
  199.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  200.                             socket.send(answerPacket);
  201.                         }
  202.                     } else if (message1[2].equals("check_editor_status")) {
  203.                         if (con.checkIfEditor(message1[4]) == true) {
  204.                             answer = message1[4] + "|answer|true";
  205.                             answerBytes = answer.getBytes();
  206.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  207.                             socket.send(answerPacket);
  208.                         } else {
  209.                             answer = message1[4] + "|answer|false";
  210.                             answerBytes = answer.getBytes();
  211.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  212.                             socket.send(answerPacket);
  213.                         }
  214.                     } else if (message1[2].equals("check_username")) {
  215.                         if (con.checkUsername(message1[4]) == true) {
  216.                             answer = message1[4] + "|answer|true";
  217.                             answerBytes = answer.getBytes();
  218.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  219.                             socket.send(answerPacket);
  220.  
  221.                         } else {
  222.                             answer = message1[4] + "|answer|false";
  223.                             answerBytes = answer.getBytes();
  224.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  225.                             socket.send(answerPacket);
  226.                         }
  227.  
  228.                     } else if (message1[4].equals("check_notifications")) {
  229.                         System.out.println("vai checkar notificacao");
  230.                         answer = userHasNotifications(message1[2]);
  231.                         System.out.println(answer);
  232.                         answerBytes = answer.getBytes();
  233.                         DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  234.                         socket.send(answerPacket);
  235.                     }
  236.  
  237.  
  238.                 /*
  239.                 else if(message1[4].equals("delete")){
  240.                     if(message1[6].equals("album")){
  241.                         deleteAlbum(message1[8]);
  242.                         answer = message1[2] +"|answer|true";
  243.                         answerBytes= answer.getBytes();
  244.                         DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  245.                         socket.send(answerPacket);
  246.                     }
  247.                     else if(message1[6].equals("music")){
  248.                         deleteSong(message1[8]);
  249.                         answer = message1[2] +"|answer|true";
  250.                         answerBytes= answer.getBytes();
  251.                         DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  252.                         socket.send(answerPacket);
  253.                     }
  254.                     else if(message1[6].equals("artist")){
  255.                         deleteArtist(message1[8]);
  256.                         answer = message1[2] +"|answer|true";
  257.                         answerBytes= answer.getBytes();
  258.                         DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  259.                         socket.send(answerPacket);
  260.                     }
  261.                 }
  262.                 */
  263.  
  264.                     else if (message1[4].equals("search")) {
  265.                         if (message1[5].equals("ArtistName")) {
  266.                             answer = artistData(message1[2], message1[6]) + albumsFromArtist(message1[2], message1[6]);
  267.                             answerBytes = answer.getBytes();
  268.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  269.                             socket.send(answerPacket);
  270.  
  271.                         } else if (message1[5].equals("AlbumName")) {
  272.                             answer = albumData(message1[2], message1[6]) + commentsOfAlbum(message1[2], message1[6]) + getAlbumAverage(message1[2], message1[6]);
  273.                             answerBytes = answer.getBytes();
  274.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  275.                             socket.send(answerPacket);
  276.                         }
  277.                     } else if (message1[4].equals("update") && checkEditorStatus(message1[2]) == true) {
  278.                         if (message1[6].equals("album")) {
  279.                             if (message1[9].equals("name")) {
  280.                                 changeAlbumName(message1[7], message1[11]);
  281.                                 answer = message1[2] + "|answer|true";
  282.                                 answerBytes = answer.getBytes();
  283.                                 DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  284.                                 socket.send(answerPacket);
  285.                             } else if (message1[9].equals("nomeArtista")) {
  286.                                 changeAlbumArtist(message1[7], message1[11]);
  287.                                 answer = message1[2] + "|answer|true";
  288.                                 answerBytes = answer.getBytes();
  289.                                 DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  290.                                 socket.send(answerPacket);
  291.                             } else if (message1[9].equals("genero")) {
  292.                                 changeAlbumGender(message1[7], message1[11]);
  293.                                 answer = message1[2] + "|answer|true";
  294.                                 answerBytes = answer.getBytes();
  295.                                 DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  296.                                 socket.send(answerPacket);
  297.                             } else if (message1[9].equals("data")) {
  298.                                 changeAlbumDate(message1[7], message1[12]);
  299.                                 answer = message1[2] + "|answer|true";
  300.                                 answerBytes = answer.getBytes();
  301.                                 DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  302.                                 socket.send(answerPacket);
  303.                             } else if (message1[9].equals("description")) {
  304.                                 changeAlbumDescription(message1[7], message1[11]);
  305.                                 answer2 = notifyAllEditors(message1[2], message1[10]);
  306.                                 answer = message1[2] + "|answer|true" + answer2;
  307.                                 answerBytes = answer.getBytes();
  308.                                 DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  309.                                 socket.send(answerPacket);
  310.                             }
  311.                         }
  312.                     } else if (message1[4].equals("all_data")) {
  313.                         if (message1[5].equals("Album")) {
  314.                             answer = message1[2] + "|answer|" + albumData(message1[2], message1[5]);
  315.                             answerBytes = answer.getBytes();
  316.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  317.                             socket.send(answerPacket);
  318.                         } else if (message1[5].equals("Artist")) {
  319.                             answer = message1[2] + "|answer|" + artistData(message1[2], message1[5]);
  320.                             answerBytes = answer.getBytes();
  321.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  322.                             socket.send(answerPacket);
  323.                         }
  324.                     } else if (message1[4].equals("make_editor")) {
  325.                         if (con.makeEditor(message1[2],message1[4]) == true) {
  326.                             //if(checkUsername(message1[2])==true){
  327.                             //makeEditor(message1[5]);
  328.                             System.out.println("vai adicionar notificacao");
  329.                             addNotification(message1[5]);
  330.                             answer = message1[2] + "|answer|true";
  331.                             answerBytes = answer.getBytes();
  332.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  333.                             System.out.println("vai enviar");
  334.                             socket.send(answerPacket);
  335.  
  336.                         } else {
  337.                             answer = message1[2] + "|answer|false";
  338.                             answerBytes = answer.getBytes();
  339.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  340.                             socket.send(answerPacket);
  341.                         }
  342.                     } else if (message1[4].equals("delete")) {
  343.  
  344.                 /*
  345.                 } else if (message1[4].equals("musicstobeshared")) {
  346.                     answer = songsUploaded(message1[2]);
  347.                     answerBytes = answer.getBytes();
  348.                     DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  349.                     socket.send(answerPacket);
  350.                     */
  351.                     } else if (message1[4].equals("share_music")) {
  352.  
  353.                     } else if (message1[5].equals("add")) {
  354.                         if (con.checkIfEditor(message1[2]) == true) {
  355.                             if (message1[6].equals("artist")) {
  356.                                 if (con.addArtist(message1[2], message1[8], message1[10], message1[12], message1[14],message1[16]," ") == true) {
  357.                                     answer = message1[2] + "|answer|true";
  358.                                     answerBytes = answer.getBytes();
  359.                                     DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  360.                                     socket.send(answerPacket);
  361.                                 } else {
  362.                                     answer = message1[4] + "|answer|false";
  363.                                     answerBytes = answer.getBytes();
  364.                                     DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  365.                                     socket.send(answerPacket);
  366.                                 }
  367.                             } else if (message1[6].equals("music")) {
  368.                                     if (con.addSong(message1[2], message1[8], message1[10], message1[12], message1[14],message1[16]," "," "," ",message1[18]) == true) {
  369.                                         answer = message1[2] + "|answer|true";
  370.                                         answerBytes = answer.getBytes();
  371.                                         DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  372.                                         socket.send(answerPacket);
  373.                                     } else {
  374.                                         answer = message1[2] + "|answer|false";
  375.                                         answerBytes = answer.getBytes();
  376.                                         DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  377.                                         socket.send(answerPacket);
  378.                                     }
  379.  
  380.                             } else if (message1[6].equals("album")) {
  381.                                 //if(checkArtistExists(message1[10]) == true){
  382.                                 if (con.addAlbum(message1[2], message1[8], message1[10], message1[12], message1[14],message1[16]," ", 0.0) == true) {
  383.                                     answer = message1[2] + "|answer|true";
  384.                                     answerBytes = answer.getBytes();
  385.                                     DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  386.                                     socket.send(answerPacket);
  387.                                 } else {
  388.                                     answer = message1[2] + "|answer|false";
  389.                                     answerBytes = answer.getBytes();
  390.                                     DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  391.                                     socket.send(answerPacket);
  392.                                 }
  393.                                 //}
  394.                             /*
  395.                             else{
  396.                                 answer = message1[2] +"|answer|false";
  397.                                 answerBytes= answer.getBytes();
  398.                                 DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  399.                                 socket.send(answerPacket);
  400.                             }
  401.                             */
  402.                             }
  403.                         } else {
  404.                             answer = message1[4] + "|answer|noteditor";
  405.                             answerBytes = answer.getBytes();
  406.                             DatagramPacket answerPacket = new DatagramPacket(answerBytes, answerBytes.length, group, PORT);
  407.                             socket.send(answerPacket);
  408.                         }
  409.                     }
  410.  
  411.                 }
  412.  
  413.                 try {
  414.                     sleep((long) (Math.random() * SLEEP_TIME));
  415.                 } catch (InterruptedException e) {
  416.                 }
  417.             }
  418.  
  419.  
  420.         } catch (Exception e) {
  421.             e.printStackTrace();
  422.  
  423.         } finally {
  424.             socket.close();
  425.         }
  426.     }
  427.     public  Object readFile(String path){
  428.         try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path))) {
  429.             return ois.readObject();
  430.         } catch (IOException e) {
  431.             e.printStackTrace();
  432.         } catch (ClassNotFoundException e) {
  433.             e.printStackTrace();
  434.         }
  435.         return null;
  436.     }
  437.  
  438.     public int writeFile(Object obj, String path) {
  439.         ObjectOutputStream oos = null;
  440.         try {
  441.             oos = new ObjectOutputStream(new FileOutputStream(path));
  442.         } catch (IOException e) {
  443.             e.printStackTrace();
  444.             return 1;
  445.         }
  446.         try {
  447.             oos.writeObject(obj);
  448.             return 0;
  449.         } catch (IOException e) {
  450.             e.printStackTrace();
  451.         }
  452.         return 1;
  453.     }
  454.  
  455.     @SuppressWarnings("unchecked")
  456.     public boolean checkUsername(String username){
  457.         int i;
  458.         File f = new File("users");
  459.         CopyOnWriteArrayList<User> users;
  460.         if (f.exists() && !f.isDirectory()) {
  461.             Object obj = readFile("users");
  462.             users = (CopyOnWriteArrayList<User>) obj;
  463.             for (i = 0; i < users.size(); i++) {
  464.                 if (username.equals(users.get(i).username)) {
  465.                     return false;
  466.                 }
  467.             }
  468.             return true;
  469.         }
  470.         else{
  471.             return true;
  472.         }
  473.     }
  474.     @SuppressWarnings("unchecked")
  475.     public boolean checkPassword(String username,String password){
  476.         int i;
  477.         File f = new File("users");
  478.         CopyOnWriteArrayList<User> users;
  479.         if (f.exists() && !f.isDirectory()) {
  480.             Object obj = readFile("users");
  481.             users = (CopyOnWriteArrayList<User>) obj;
  482.             for (i = 0; i < users.size(); i++) {
  483.                 if (username.equals(users.get(i).username) && password.equals(users.get(i).password)) {
  484.                     return true;
  485.                 }
  486.             }
  487.             return false;
  488.         }
  489.         else{
  490.             return false;
  491.         }
  492.     }
  493.     @SuppressWarnings("unchecked")
  494.     private int addUser(String username, String password, String editorStatus) throws IOException{
  495.         int i;
  496.         File f = new File("users");
  497.         CopyOnWriteArrayList<User> users = new CopyOnWriteArrayList<>();
  498.         if (f.exists() && !f.isDirectory()) {
  499.             Object obj = readFile("users");
  500.             users = (CopyOnWriteArrayList<User>) obj;
  501.  
  502.             User newUser = new User(username, password, "no", "on");
  503.             users.add(newUser);
  504.             return writeFile(users, "users");
  505.         }
  506.         else{
  507.             User user = new User(username, password, "yes", "on");
  508.             users.add(user);
  509.             f.createNewFile();
  510.             return writeFile(users, "users");
  511.  
  512.         }
  513.     }
  514.     @SuppressWarnings("unchecked")
  515.     public int addArtist(String artistName, String artistGender, String artistBirthdate, String artistMusicGender, String artistDescription) throws IOException{
  516.         File f = new File("artists");
  517.         CopyOnWriteArrayList<Artist> artists = new CopyOnWriteArrayList<Artist>();
  518.         if (f.exists() && !f.isDirectory()) {
  519.             Object obj = readFile("artists");
  520.             artists = (CopyOnWriteArrayList<Artist>) obj;
  521.  
  522.             Artist newArtist = new Artist(artistName, artistGender,artistBirthdate, artistMusicGender, artistDescription);
  523.             artists.add(newArtist);
  524.             return writeFile(artists, "artists");
  525.         }
  526.         else{
  527.             Artist artist = new Artist(artistName, artistGender,artistBirthdate, artistMusicGender, artistDescription);
  528.             artists.add(artist);
  529.             f.createNewFile();
  530.             return writeFile(artists, "artists");
  531.  
  532.         }
  533.     }
  534.  
  535.     /*
  536.         public String songsUploaded(String username){
  537.             int i;
  538.             File f = new File("users_songs");
  539.             CopyOnWriteArrayList<ShareMusic> users;
  540.             CopyOnWriteArrayList<String> answer= new CopyOnWriteArrayList<String>();
  541.  
  542.  
  543.             if (f.exists() && !f.isDirectory()) {
  544.                 Object obj = readFile("users_songs");
  545.                 users = (CopyOnWriteArrayList<ShareMusic>) obj;
  546.                 for (i = 0; i < users.size(); i++) {
  547.                     if (username.equals(users.get(i).shareUsername) ) {
  548.                         answer.add(users.get(i).shareSong);
  549.                     }
  550.                 }
  551.             }
  552.             return username+ "|answer|number" + answer.size() + "|albums|" + answer ;
  553.  
  554.         }
  555.      */
  556.     /*
  557.     public void deleteAlbum(String albumName){
  558.  
  559.     }
  560.     public void deleteSong(String songName){
  561.  
  562.     }
  563.     public void deleteArtist(String artistName){
  564.  
  565.     }
  566.     */
  567.     //old= nome do album
  568.     public void changeAlbumName( String old,String newItem){
  569.         int i;
  570.         File f = new File("albums");
  571.  
  572.         if (f.exists() && !f.isDirectory()) {
  573.             Object obj = readFile("albums");
  574.             CopyOnWriteArrayList<Album> albums = (CopyOnWriteArrayList<Album>) obj;
  575.             for (i = 0; i < albums.size(); i++) {
  576.                 if (old.equals(albums.get(i).albumName)){
  577.                     albums.get(i).albumName = newItem;
  578.                     writeFile(albums, "albums");
  579.                 }
  580.             }
  581.         }
  582.     }
  583.     @SuppressWarnings("unchecked")
  584.  
  585.     public void changeAlbumArtist( String old,String newItem){
  586.         int i;
  587.         File f = new File("albums");
  588.  
  589.         if (f.exists() && !f.isDirectory()) {
  590.             Object obj = readFile("albums");
  591.             CopyOnWriteArrayList<Album> albums = (CopyOnWriteArrayList<Album>) obj;
  592.             for (i = 0; i < albums.size(); i++) {
  593.                 if (old.equals(albums.get(i).albumName)){
  594.                     albums.get(i).albumArtist = newItem;
  595.                     writeFile(albums, "albums");
  596.                 }
  597.             }
  598.         }
  599.     }
  600.     @SuppressWarnings("unchecked")
  601.  
  602.     public void changeAlbumGender( String old,String newItem){
  603.         int i;
  604.         File f = new File("albums");
  605.  
  606.         if (f.exists() && !f.isDirectory()) {
  607.             Object obj = readFile("albums");
  608.             CopyOnWriteArrayList<Album> albums = (CopyOnWriteArrayList<Album>) obj;
  609.             for (i = 0; i < albums.size(); i++) {
  610.                 if (old.equals(albums.get(i).albumName)){
  611.                     albums.get(i).albumGender = newItem;
  612.                     writeFile(albums, "albums");
  613.                 }
  614.             }
  615.         }
  616.     }
  617.     @SuppressWarnings("unchecked")
  618.  
  619.     public void changeAlbumDate( String old,String newItem){
  620.         int i;
  621.         File f = new File("albums");
  622.  
  623.         if (f.exists() && !f.isDirectory()) {
  624.             Object obj = readFile("albums");
  625.             CopyOnWriteArrayList<Album> albums = (CopyOnWriteArrayList<Album>) obj;
  626.             for (i = 0; i < albums.size(); i++) {
  627.                 if (old.equals(albums.get(i).albumName)){
  628.                     albums.get(i).albumDate = newItem;
  629.                     writeFile(albums, "albums");
  630.                 }
  631.             }
  632.         }
  633.     }
  634.     @SuppressWarnings("unchecked")
  635.  
  636.     public void changeAlbumDescription( String old,String newItem){
  637.         int i;
  638.         File f = new File("albums");
  639.  
  640.         if (f.exists() && !f.isDirectory()) {
  641.             Object obj = readFile("albums");
  642.             CopyOnWriteArrayList<Album> albums = (CopyOnWriteArrayList<Album>) obj;
  643.             for (i = 0; i < albums.size(); i++) {
  644.                 if (old.equals(albums.get(i).albumName)){
  645.                     albums.get(i).albumDescription = newItem;
  646.                     writeFile(albums, "albums");
  647.                 }
  648.             }
  649.         }
  650.     }
  651.  
  652.  
  653.  
  654.     @SuppressWarnings("unchecked")
  655.     public int addSong(String songName, String songArtist, String songGender, String songAlbum, String songDuration,int order) throws IOException{
  656.         File f = new File("songs");
  657.         CopyOnWriteArrayList<Song> songs = new CopyOnWriteArrayList<Song>();
  658.         if (f.exists() && !f.isDirectory()) {
  659.             Object obj = readFile("songs");
  660.             songs = (CopyOnWriteArrayList<Song>) obj;
  661.  
  662.             Song newSong = new Song(songName, songArtist, songGender, songAlbum,songDuration);
  663.             songs.add(newSong);
  664.             return writeFile(songs, "songs");
  665.         }
  666.         else{
  667.             Song song = new Song(songName, songArtist, songGender, songAlbum,songDuration);
  668.             songs.add(song);
  669.             f.createNewFile();
  670.             return writeFile(songs, "songs");
  671.  
  672.         }
  673.     }
  674.     @SuppressWarnings("unchecked")
  675.     public int addAlbum(String albumName, String albumArtist, String albumGender, String albumDate, String albumDescription) throws IOException{
  676.         File f = new File("albums");
  677.         CopyOnWriteArrayList<Album> albums = new CopyOnWriteArrayList<Album>();
  678.         if (f.exists() && !f.isDirectory()) {
  679.             Object obj = readFile("albums");
  680.             albums = (CopyOnWriteArrayList<Album>) obj;
  681.  
  682.             Album newAlbum = new Album(albumName, albumArtist,albumGender, albumDate, albumDescription);
  683.             albums.add(newAlbum);
  684.             return writeFile(albums, "albums");
  685.         }
  686.         else{
  687.             Album album = new Album(albumName, albumArtist,albumGender, albumDate, albumDescription);
  688.             albums.add(album);
  689.             f.createNewFile();
  690.             return writeFile(albums, "albums");
  691.  
  692.         }
  693.     }
  694.     @SuppressWarnings("unchecked")
  695.     public void makeEditor(String username){
  696.         int i;
  697.         File f = new File("users");
  698.         CopyOnWriteArrayList<User> users;
  699.         if (f.exists() && !f.isDirectory()) {
  700.             Object obj = readFile("users");
  701.             users = (CopyOnWriteArrayList<User>) obj;
  702.             for (i = 0; i < users.size(); i++) {
  703.                 if (username.equals(users.get(i).username)) {
  704.                     users.get(i).editorStatus="yes";
  705.                     writeFile(users, "users");
  706.  
  707.                 }
  708.  
  709.             }
  710.             return;
  711.         }
  712.  
  713.     }
  714.     @SuppressWarnings("unchecked")
  715.     public boolean checkEditorStatus(String username){
  716.         int i;
  717.         File f = new File("users");
  718.         CopyOnWriteArrayList<User> users;
  719.         String editorTrue ="yes";
  720.         if (f.exists() && !f.isDirectory()) {
  721.             Object obj = readFile("users");
  722.             users = (CopyOnWriteArrayList<User>) obj;
  723.             for (i = 0; i < users.size(); i++) {
  724.                 if(username.equals(users.get(i).username)) {
  725.                     if (editorTrue.equals(users.get(i).editorStatus)) {
  726.                         return true;
  727.                     }
  728.                     else{
  729.                         return false;
  730.                     }
  731.                 }
  732.             }
  733.             return false;
  734.         }
  735.         else{
  736.             return false;
  737.         }
  738.     }
  739.     @SuppressWarnings("unchecked")
  740.     public boolean checkAlbumExists(String albumName){
  741.         int i;
  742.         File f = new File("albums");
  743.         CopyOnWriteArrayList<Album> users;
  744.         if (f.exists() && !f.isDirectory()) {
  745.             Object obj = readFile("albums");
  746.             users = (CopyOnWriteArrayList<Album>) obj;
  747.             for (i = 0; i < users.size(); i++) {
  748.                 if (albumName.equals(users.get(i).albumName)) {
  749.                     return true;
  750.                 }
  751.             }
  752.             return false;
  753.         }
  754.         else{
  755.             return false;
  756.         }
  757.     }
  758.     @SuppressWarnings("unchecked")
  759.     public boolean checkArtistExists(String artistName){
  760.         int i;
  761.         File f = new File("artists");
  762.         CopyOnWriteArrayList<Artist> artists;
  763.         if (f.exists() && !f.isDirectory()) {
  764.             Object obj = readFile("artists");
  765.             artists = (CopyOnWriteArrayList<Artist>) obj;
  766.             for (i = 0; i < artists.size(); i++) {
  767.                 if (artistName.equals(artists.get(i).artistName)) {
  768.                     return true;
  769.                 }
  770.             }
  771.             return false;
  772.         }
  773.         else{
  774.             return false;
  775.         }
  776.     }
  777.     @SuppressWarnings("unchecked")
  778.     public String albumsFromArtist(String username, String artistName){
  779.         int i;
  780.         File f = new File("albums");
  781.         CopyOnWriteArrayList<Album> albums;
  782.         CopyOnWriteArrayList<String> answer = new CopyOnWriteArrayList<String>();
  783.  
  784.         if (f.exists() && !f.isDirectory()) {
  785.             Object obj = readFile("albums");
  786.             albums = (CopyOnWriteArrayList<Album>) obj;
  787.             for (i = 0; i < albums.size(); i++) {
  788.                 if (artistName.equals(albums.get(i).albumArtist)) {
  789.                     answer.add(albums.get(i).albumName);
  790.                 }
  791.             }
  792.         }
  793.         System.out.println(artistData(username,artistName));
  794.         return "|" + username+ "|answer|number|" + answer.size() + "|albums|" + answer +"|";
  795.  
  796.     }
  797.     @SuppressWarnings("unchecked")
  798.     public void addAlbumComment(String username, String albumName, double score, String comment) throws IOException{
  799.         int i;
  800.         File f = new File("albums_comments");
  801.         CopyOnWriteArrayList<Comments> comments = new CopyOnWriteArrayList<Comments>();
  802.         if (f.exists() && !f.isDirectory()) {
  803.             Object obj = readFile("albums_comments");
  804.             comments = (CopyOnWriteArrayList<Comments>) obj;
  805.             Comments newComment = new Comments(username, albumName, score, comment);;
  806.             comments.add(newComment);
  807.             writeFile(comments, "albums_comments");
  808.         }
  809.         else{
  810.             Comments firstComment = new Comments(username, albumName, score, comment);
  811.             comments.add(firstComment);
  812.             f.createNewFile();
  813.             writeFile(comments, "albums_comments");
  814.  
  815.         }
  816.  
  817.     }
  818.  
  819.     public  String commentsOfAlbum(String username, String albumName){
  820.         int i;
  821.         File f = new File("albums_comments");
  822.         CopyOnWriteArrayList<Comments> comments = new CopyOnWriteArrayList<Comments>();
  823.  
  824.         CopyOnWriteArrayList<String> answer = new CopyOnWriteArrayList<String>();
  825.  
  826.  
  827.         if (f.exists() && !f.isDirectory()) {
  828.             Object obj = readFile("albums_comments");
  829.  
  830.             comments = (CopyOnWriteArrayList<Comments>) obj;
  831.  
  832.             for (i = 0; i < comments.size(); i++) {
  833.                 if (albumName.equals(comments.get(i).albumName)) {
  834.                     answer.add(comments.get(i).comment);
  835.                 }
  836.             }
  837.         }
  838.  
  839.         return "|" + username+ "|answer|number|" + answer.size() + "|comments|" + answer +"|";
  840.     }
  841.  
  842.     public String getAlbumAverage(String username, String albumName){
  843.         int i;
  844.         File f = new File("albums_comments");
  845.         CopyOnWriteArrayList<Comments> comments = new CopyOnWriteArrayList<Comments>();
  846.         double answer=0;
  847.         double count=0.0;
  848.         double average=0.0;
  849.         if (f.exists() && !f.isDirectory()) {
  850.             Object obj = readFile("albums_comments");
  851.  
  852.             comments = (CopyOnWriteArrayList<Comments>) obj;
  853.  
  854.             for (i = 0; i < comments.size(); i++) {
  855.                 if (albumName.equals(comments.get(i).albumName)) {
  856.                     answer+=comments.get(i).score;
  857.                     count+=1;
  858.                 }
  859.             }
  860.         }
  861.         average=answer/count;
  862.         return "|" + username+ "|answer|" +String.valueOf(average);
  863.     }
  864.  
  865.     @SuppressWarnings("unchecked")
  866.     public String albumData(String username, String albumName) {
  867.         int i;
  868.         String answer="";
  869.         File f = new File("albums");
  870.         CopyOnWriteArrayList<Album> albums = new CopyOnWriteArrayList<Album>();
  871.         if (f.exists() && !f.isDirectory()) {
  872.             Object obj = readFile("albums");
  873.             albums = (CopyOnWriteArrayList<Album>) obj;
  874.             for (i = 0; i < albums.size(); i++) {
  875.                 if (albumName.equals(albums.get(i).albumName)) {
  876.                     answer = username + "|answer|5|albumName|" + albums.get(i).albumName + "|albumArtist|" + albums.get(i).albumArtist + "|albumGender|" + albums.get(i).albumGender + "|albumDate|" + albums.get(i).albumDate + "|albumDescription|" + albums.get(i).albumDescription;
  877.                     return answer;
  878.                 }
  879.             }
  880.             answer = "answer|false";
  881.             return answer;
  882.         }
  883.         return answer;
  884.     }
  885.     @SuppressWarnings("unchecked")
  886.     public String artistData(String username, String artistName) {
  887.         int i;
  888.         String answer="";
  889.         File f = new File("artists");
  890.         CopyOnWriteArrayList<Artist> artists = new CopyOnWriteArrayList<Artist>();
  891.         if (f.exists() && !f.isDirectory()) {
  892.             Object obj = readFile("artists");
  893.             artists = (CopyOnWriteArrayList<Artist>) obj;
  894.             for (i = 0; i < artists.size(); i++) {
  895.                 if (artistName.equals(artists.get(i).artistName)) {
  896.                     answer = username + "|answer|5|artistName|" + artists.get(i).artistName + "|artistGender|" + artists.get(i).artistGender + "|artistBirthdate|" + artists.get(i).artistBirthdate + "|artistMusicGender|" + artists.get(i).artistMusicGender + "|artistDescription|" + artists.get(i).artistDescription +"";
  897.                     return answer;
  898.                 }
  899.             }
  900.             answer = "answer|false";
  901.             return answer;
  902.         }
  903.         return answer;
  904.     }
  905.  
  906.     @SuppressWarnings("unchecked")
  907.     //Quando existe um novo editor
  908.     public String notifyAllUsers(String username, String editorPromoted) {
  909.         //See users online
  910.         int i;
  911.         File f = new File("users");
  912.         CopyOnWriteArrayList<User> users;
  913.         CopyOnWriteArrayList<String> answer = new CopyOnWriteArrayList<String>();
  914.         String isOn = "on";
  915.         String isOff = "off";
  916.  
  917.         if (f.exists() && !f.isDirectory()) {
  918.             Object obj = readFile("users");
  919.             users = (CopyOnWriteArrayList<User>) obj;
  920.             for (i = 0; i < users.size(); i++) {
  921.                 //se utilizador estiver online vai na resposta
  922.                 if (isOn.equals(users.get(i).onlineStatus)) {
  923.                     answer.add(users.get(i).username);
  924.                 }
  925.                 //se utilizador estiver offline
  926.                 else if (isOff.equals(users.get(i).onlineStatus)) {
  927.                     File f2 = new File("offlineusers_notifications");
  928.                     CopyOnWriteArrayList<OfflineUser> usersOffline = new CopyOnWriteArrayList<OfflineUser>();
  929.                     if (f2.exists() && !f2.isDirectory()) {
  930.                         Object obj2 = readFile("offlineusers_notifications");
  931.                         usersOffline = (CopyOnWriteArrayList<OfflineUser>) obj;
  932.                         String notification = editorPromoted + "is now editor";
  933.                         OfflineUser newOfflineUser = new OfflineUser(username, notification);
  934.                         usersOffline.add(newOfflineUser);
  935.                         writeFile(usersOffline, "offlineusers_notifications");
  936.                     }
  937.                 }
  938.             }
  939.         }
  940.         return username+ "|answer|number" + answer.size() + "|usersOnline|" + answer ;
  941.     }
  942.  
  943.     public void addNotification(String editorPromoted) throws IOException {
  944.         File f = new File("offlineusers_notifications");
  945.         System.out.println("Estou antes do if");
  946.         if (f.exists() && !f.isDirectory()) {
  947.             f = new File("offlineusers_notifications");
  948.             System.out.println("Acabei de criar o ficheiro");
  949.             CopyOnWriteArrayList<OfflineUser> usersOffline = new CopyOnWriteArrayList<OfflineUser>();
  950.  
  951.             Object obj = readFile("offlineusers_notifications");
  952.             usersOffline = (CopyOnWriteArrayList<OfflineUser>) obj;
  953.             String notification = editorPromoted + "is now editor";
  954.             OfflineUser newOfflineUser = new OfflineUser(editorPromoted, notification);
  955.             usersOffline.add(newOfflineUser);
  956.             writeFile(usersOffline, "offlineusers_notifications");
  957.         }
  958.         else{
  959.             String notification = editorPromoted + "is now editor";
  960.             OfflineUser newOfflineUser = new OfflineUser(editorPromoted, notification);
  961.             CopyOnWriteArrayList<OfflineUser> usersOffline =  new CopyOnWriteArrayList<OfflineUser>();
  962.             usersOffline.add(newOfflineUser);
  963.             f.createNewFile();
  964.             writeFile(usersOffline, "offlineusers_notifications");
  965.  
  966.         }
  967.  
  968.     }
  969.     @SuppressWarnings("unchecked")
  970.     //Quando alguem altera a descriçao de um album
  971.     public String notifyAllEditors(String username, String albumName) {
  972.         //See users online
  973.         int i;
  974.         File f = new File("users");
  975.         CopyOnWriteArrayList<User> users;
  976.         CopyOnWriteArrayList<String> answer = new CopyOnWriteArrayList<String>();
  977.         String isOn = "on";
  978.         String isOff = "off";
  979.         String editorstatus = "yes";
  980.         if (f.exists() && !f.isDirectory()) {
  981.             Object obj = readFile("users");
  982.             users = (CopyOnWriteArrayList<User>) obj;
  983.             for (i = 0; i < users.size(); i++) {
  984.                 //se utilizador estiver online vai na resposta e se for editor
  985.                 if (isOn.equals(users.get(i).onlineStatus) && editorstatus.equals(users.get(i).editorStatus)) {
  986.                     answer.add(users.get(i).username);
  987.                 }
  988.                 //se estiver offline adiciona logo ao ficheiro e se for editor
  989.                 else if (isOff.equals(users.get(i).onlineStatus) && editorstatus.equals(users.get(i).editorStatus)) {
  990.                     File f2 = new File("offlineusers_notifications");
  991.                     CopyOnWriteArrayList<OfflineUser> usersOffline = new CopyOnWriteArrayList<OfflineUser>();
  992.                     if (f2.exists() && !f2.isDirectory()) {
  993.                         Object obj2 = readFile("offlineusers_notifications");
  994.                         usersOffline = (CopyOnWriteArrayList<OfflineUser>) obj;
  995.                         String notification = albumName + "had its description edited";
  996.                         OfflineUser newOfflineUser = new OfflineUser(username, notification);
  997.                         usersOffline.add(newOfflineUser);
  998.                         writeFile(usersOffline, "offlineusers_notifications");
  999.                     }
  1000.                 }
  1001.             }
  1002.  
  1003.         }
  1004.         return "|number" + answer.size() + "|editorsOnline|" + answer;
  1005.     }
  1006.  
  1007.     @SuppressWarnings("unchecked")
  1008.     public String userHasNotifications(String username){
  1009.         int i;
  1010.         File f = new File("offlineusers_notifications");
  1011.         CopyOnWriteArrayList<OfflineUser> users;
  1012.         CopyOnWriteArrayList<String> answer = new CopyOnWriteArrayList<String>();
  1013.  
  1014.         if (f.exists() && !f.isDirectory()) {
  1015.             Object obj = readFile("offlineusers_notifications");
  1016.             users = (CopyOnWriteArrayList<OfflineUser>) obj;
  1017.             for (i = 0; i < users.size(); i++) {
  1018.                 if (username.equals(users.get(i).offlineUsername)) {
  1019.                     answer.add(users.get(i).offlineNotification);
  1020.                 }
  1021.             }
  1022.             return username+ "|answer|number" + answer.size() + "|notifications|" + answer ;
  1023.         }
  1024.         return username+ "|answer|false" ;
  1025.  
  1026.     }
  1027.  
  1028. }
Add Comment
Please, Sign In to add comment