Advertisement
Guest User

Untitled

a guest
May 12th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.47 KB | None | 0 0
  1. package com.usthb.modeles;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.util.ArrayList;
  9. import java.util.Collections;
  10. import java.util.HashMap;
  11.  
  12. public class ServeurMiniFacebook {
  13.  
  14.  
  15. //TOUS LES ABONNES
  16. private static HashMap<String,Abonne> baseAbonnes= new HashMap<String,Abonne>(); //la cl? est le username de l'abonn?
  17.  
  18. //TOUS LES GROUPES
  19. private static HashMap<String,Groupe> baseGroupes= new HashMap<String,Groupe>(); //la cl? est le nom du groupe
  20.  
  21. //TOUS LES POSTS
  22. private static HashMap<Integer,Post> basePosts= new HashMap<Integer,Post>();//la clé est la le codePost
  23.  
  24. //methode qui retourne l'abonné à partir d'un username
  25. public static Abonne getAbonne(String username) {
  26. return baseAbonnes.get(username);
  27. }
  28.  
  29. //methode qui retourne le groupe à partir d'un groupName
  30. public static Groupe getGroupe(String groupName) {
  31. return baseGroupes.get(groupName);
  32. }
  33.  
  34. //methode qui retourne le poste à partir du code post
  35.  
  36. public static Post getPost(Integer codePost) {
  37. return basePosts.get(codePost);
  38. }
  39.  
  40.  
  41. //SOME TESTS
  42. public static boolean userExiste(String username) {
  43. return baseAbonnes.containsKey(username);
  44.  
  45. }
  46.  
  47. public static boolean groupeExiste(String groupName) {
  48. return baseGroupes.containsKey(groupName);
  49. }
  50.  
  51. public static boolean postExiste(int codePost) {
  52. return baseGroupes.containsKey(codePost);
  53. }
  54.  
  55.  
  56.  
  57.  
  58.  
  59. /***************REQUETES*****************/
  60.  
  61.  
  62.  
  63. /************ABONNES***********/
  64.  
  65. private static Abonne inscrireAbonne(Abonne abo){ //MAJ : ENVOYER PARAM ABONNE ET LE CREER ICI
  66. baseAbonnes.put(abo.getUsername(),abo);
  67. return abo;
  68. }
  69.  
  70.  
  71.  
  72. private static void supprimerAbonne(String user) {//d?sactiver le compte
  73.  
  74. // TROUVER SOLUTION
  75. // supprimerTousLesAmis(abo);
  76. baseAbonnes.remove(user);
  77. }
  78.  
  79. private static boolean estEnLigne(String username){
  80. return getAbonne(username).isOnline();
  81. }
  82.  
  83.  
  84. private static void quitterGroupe(String user,String grp){
  85. Groupe g = getGroupe(grp);
  86. if(g==null) return;
  87. g.supprimerMembre(user);
  88. getAbonne(user).quitterGroupe(grp);
  89. if(g.nbrAdmins()==0){
  90. for(String s:g.getMembres().keySet()){
  91. g.ajouterAdmin(s); //SI IL N'Y A PLUS D'ADMINS ALORS AJOUTER UN ADMIN PARMIS LES MEMBRES
  92. return;
  93. }
  94.  
  95. }
  96.  
  97. }
  98.  
  99. private static void rejoindreGroupe(String user,String grp){
  100. Groupe g=getGroupe(grp);
  101. if(g==null) return;
  102. g.rejoindre(user);
  103. if(g.nbrAdmins()!=0){
  104. ArrayList<String> admins = g.getAdmins();
  105. for(String a:admins){
  106. notifier(getAbonne(a),user,grp,"demande",grp);
  107. }
  108. }
  109. else{
  110. accepterMembre(user,grp);
  111. g.ajouterAdmin(user);
  112. }
  113. }
  114.  
  115. private static void accepterMembre(String user,String grp){
  116. Abonne abo = getAbonne(user);
  117. Groupe g=getGroupe(grp);
  118. if(g==null) return;
  119. g.ajouterMembre(abo);
  120. abo.ajouterGroupe(g);
  121. notifier(abo, grp, " votre demande.", "groupe",grp);
  122.  
  123. }
  124.  
  125. private static byte etatMembre(String user,String grp){
  126. Groupe g=getGroupe(grp);
  127. if(g==null) return 4;
  128. if(g.adminExiste(user)) return 3;
  129. if(g.membreExiste(user)) return 2;
  130. if(g.demandeEnvoyée(user)) return 1;
  131. return 0;
  132. }
  133.  
  134.  
  135. private static void ajouter(String user,String ami,String message) {//ajouter qlqn
  136. Abonne abo=getAbonne(ami);
  137. if(abo!=null){
  138. abo.ajouterInvitation(new Invitation(user,message));
  139. }
  140. }
  141.  
  142. private static void refuserInvitation(String user1,int indice){
  143. getAbonne(user1).refuserInvitation(indice);
  144. }
  145.  
  146.  
  147. private static void accepterInvitation(String user1,int indice){
  148.  
  149. Abonne abo1=getAbonne(user1),
  150. abo2=getAbonne(abo1.accepterInvitation(indice));
  151. if(abo2==null) return;
  152. abo1.ajouterAmi(abo2);
  153. abo2.ajouterAmi(abo1);
  154. notifier(abo2,user1," votre invitation.","invitation",user1);
  155. }
  156.  
  157. private static void accepterInvitation(String user1,String user2){
  158.  
  159. Abonne abo1=getAbonne(user1),
  160. abo2=getAbonne(user2);
  161. if(abo2==null) return;
  162. abo1.accepterInvitation(user2);
  163. abo1.ajouterAmi(abo2);
  164. abo2.ajouterAmi(abo1);
  165. notifier(abo2,user1," votre invitation.","invitation",user1);
  166. }
  167.  
  168.  
  169.  
  170. private static void supprimerAmi(String user,String ami){//supprimer qlqn de sa liste d'ami
  171. Abonne abo1=getAbonne(user);
  172. Abonne abo2=getAbonne(ami);
  173. abo1.supprimerAmi(ami);
  174. abo2.supprimerAmi(user);
  175.  
  176. ArrayList<Integer> actu= abo1.getActu();
  177.  
  178. actu.removeAll(abo2.getMur());
  179.  
  180. actu = abo2.getActu();
  181.  
  182. actu.removeAll(abo1.getMur());
  183. }
  184.  
  185. private static void supprimerTousLesAmis(String user){
  186. getAbonne(user).supprimerTousLesAmis();
  187. }
  188.  
  189.  
  190.  
  191. /************GROUPES************/
  192.  
  193. private static Groupe creerGroupe(String createur,String groupName){
  194. Abonne abo=getAbonne(createur);
  195. Groupe grp=new Groupe(abo,groupName);
  196. baseGroupes.put(groupName, grp);
  197. abo.ajouterGroupe(grp);
  198. return grp;
  199. }
  200.  
  201.  
  202. private static void supprimerGroupe(String grp) {
  203. baseGroupes.remove(grp);
  204. }
  205.  
  206.  
  207.  
  208.  
  209. /*************POSTES*************/
  210. private static Post creerPost(String poster,String contenu, String visibilite){
  211. Post p=new Post(poster, contenu, visibilite);
  212. basePosts.put(p.getCodePost(), p);
  213. return p;
  214. }
  215.  
  216. //connexion & déconnexion
  217.  
  218. public static boolean checkPassword(String user,String password){
  219. return getAbonne(user).getPassword().equals(password);
  220.  
  221. }
  222.  
  223. private static void seConnecter(String user) {
  224. getAbonne(user).setOnline(true);
  225. }
  226.  
  227. private static void seDeconnecter(String user) {
  228. getAbonne(user).setOnline(false);
  229. }
  230.  
  231. private static void notifier(Abonne recepteur ,String emetteur,String information,String type,Object info){
  232. recepteur.ajouterNotification(new Notification(emetteur,new StringBuilder(information),type,info));
  233. }
  234.  
  235. private static void alerterAmis(Abonne abo,Integer codePost){
  236. HashMap<String,Abonne> listeAmis = abo.getListeAmis();
  237. for(Abonne recepteur: listeAmis.values()) {
  238. notifier(recepteur,abo.getUsername()," un nouveau statut.","publication",codePost);
  239. }
  240. }
  241. private static void alerterMembres(Groupe grp,String user,Integer codePost){
  242. HashMap<String,Abonne> membres = grp.getMembres();
  243. for(Abonne recepteur: membres.values()) {
  244. if(!user.equals(recepteur.getUsername()))
  245. notifier(recepteur,user," un nouveau statut dans "+grp.getGroupName()+".","publication",codePost);
  246. }
  247. }
  248.  
  249. //PUBLIER SUR MUR
  250.  
  251. private static int publier(String user,String contenu,String visibilite) {
  252. Abonne abo=getAbonne(user);
  253. Post p=creerPost(user,contenu,visibilite);
  254. int code=p.getCodePost();
  255. abo.ajouterPost(code); //ajouter le post au mur de celui qui l'a post?
  256. abo.ajouterActu(code);
  257. if(!visibilite.toLowerCase().equals("privé")) {
  258. alerterAmis(abo,code); //alerter les amis d'abo de la publication d'un certain contenu
  259. abo.ajouterActuAmis(p.getCodePost());
  260. }
  261. return p.getCodePost();
  262. }
  263.  
  264. //PUBLIER DANS UN GROUPE
  265.  
  266. private static void publier(String user,String contenu, String grp,String visibilite) {//publier dans groupe
  267.  
  268. Groupe g=getGroupe(grp);
  269. if(g==null) return;
  270. Post p =creerPost(user," a publié dans "
  271. +grp+":\n"+contenu,visibilite);
  272. g.ajouterPost(p.getCodePost());
  273. alerterMembres(g,user,p.getCodePost()); //alerter les membres du groupe
  274. g.ajouterActuMembres(p.getCodePost());
  275. }
  276.  
  277. //METHODES EPINGLER (EN CHOISIR 2)
  278.  
  279.  
  280. private static void epingler(Post p) {
  281. p.setEpinglee(true);
  282. //ça peut servir à l'afficher en premier
  283. }
  284. private static void desepingler(Post p) {
  285. p.setEpinglee(false);
  286. }
  287.  
  288. private static ArrayList<Post> rechercher(String chercheur,String recherche) {
  289. Abonne abo1=getAbonne(chercheur),
  290. abo2=getAbonne(recherche);
  291. ArrayList<Integer> codes= abo2.getMur();
  292. ArrayList<Post> mur= new ArrayList<>();
  293. Post p;
  294.  
  295. Visibilite v= Visibilite.publique;
  296. // POUR SAVOIR QUI RECHERCHE QUI POUR POUVOIR CONNAITRE LA VISIBILITE ACCORDEE
  297. if(chercheur.equals(recherche)) v= Visibilite.privé;
  298. else if(abo2.sontAmis(chercheur)) v= Visibilite.amis;
  299. else if(abo2.ontAmisCommuns(abo1)) v=Visibilite.listeamis;
  300. int k=0;
  301. for(int i:codes){
  302. p=getPost(i);
  303. if(p!=null && p.visible(v)){
  304. if(!p.isEpinglee())
  305. mur.add(k,p);
  306. else{
  307. mur.add(0,p);
  308. k++;
  309. }
  310. }
  311. }
  312. return mur;
  313.  
  314. }
  315.  
  316. private static ArrayList<Post> rechercherGroupe(String user,String recherche){
  317. Groupe grp = getGroupe(recherche);
  318. ArrayList<Post> mur = new ArrayList<Post>();
  319. if(grp==null) return mur;
  320.  
  321. ArrayList<Integer> codes = grp.getMur();
  322. Post p;
  323.  
  324. Visibilite v;
  325. if(grp.membreExiste(user))
  326. v= Visibilite.groupe;
  327. else
  328. v= Visibilite.publique;
  329.  
  330. int k=0;
  331. for(int i:codes){
  332. p=getPost(i);
  333. if(p!=null && p.visible(v)){
  334. if(!p.isEpinglee())
  335. mur.add(k,p);
  336. else{
  337. mur.add(0,p);
  338. k++;
  339. }
  340. }
  341. }
  342. return mur;
  343.  
  344.  
  345.  
  346. }
  347.  
  348. public static void reagir(String user,Reaction react,int codePost) {//abo => abonné ayant r?agi, poster=>abonné ayant posté le post p
  349. Post p = getPost(codePost);
  350. if(p==null) return;
  351. boolean reagis=p.aReagis(user);
  352. if(reagis && p.memeReaction(user,react))
  353. p.supprimerReaction(user); //supprimer la réaction de l'ensemble des réactions au post
  354. else{
  355. p.ajouterReaction(user,react);
  356. if(!reagis && !user.equals(p.getPoster()))
  357. notifier(getAbonne(p.getPoster()),user," à votre publication.","reaction",Integer.valueOf(codePost));//alerter le poster seulement de la réaction d'abo à son post
  358. }
  359. }
  360.  
  361. //REAGIR A UN COMMENTAIRE
  362.  
  363. private static void reagir(String user,Reaction react,int codePost,int indice) {
  364. Post p = getPost(codePost);
  365. if(p==null) return;
  366. Commentaire c = p.getComment(indice);
  367. if(c==null) return;
  368. boolean reagis=c.aReagis(user);
  369. if(reagis && c.memeReaction(user,react))
  370. p.supprimerReaction(user); //supprimer la réaction de l'ensemble des réactions au commentaire
  371. else{
  372. c.ajouterReaction(user,react);
  373. if(!reagis && !user.equals(c.getUser()))
  374. notifier(getAbonne(c.getUser()),user," à votre commentaire.","reaction",Integer.valueOf(codePost));//alerter le poster seulement de la réaction d'abo à son post
  375. }
  376. }
  377.  
  378.  
  379. //METHODES COMMENTAIRES
  380.  
  381. private static void commenter(String user,int codePost,String comment) { //abo => abonn? qui va commenter, poster=>abonn? qui a post? le post p
  382.  
  383. Post p=getPost(codePost);
  384. if(p==null) return;
  385. p.ajouterCommentaire(new Commentaire(user,new StringBuilder(comment),codePost));
  386. //alerter le poster si ce n'est pas lui qui a commenté a publication
  387. if(!user.equals(p.getPoster()))
  388. notifier(getAbonne(p.getPoster()),user," votre publication.","commentaire",Integer.valueOf(codePost));
  389.  
  390. }
  391.  
  392. //supprimer un commentaire
  393.  
  394. private static void supprimerCommentaire(int codePost,int indice) { //commentaire de user
  395. Post p = getPost(codePost);
  396. if(p==null) return;
  397. p.supprimerCommentaire(indice);
  398.  
  399. }
  400.  
  401.  
  402. //partager un post
  403.  
  404.  
  405. private static void partager(String user,int codePost, String visibilite) {
  406. Post p = getPost(codePost);
  407. if(p==null) return;
  408. String user2=p.getPoster();
  409. int code;
  410. if(user.equals(user2))
  411. code = publier(user,"a partagé sa propre publication\n"+p.getContenu(),visibilite);
  412. else{
  413. code = publier(user,"a partagé la publication de "
  414. +user2+":\n"+p.getContenu(),visibilite);
  415. notifier(getAbonne(user2),user," votre publication.","partage",Integer.valueOf(code));
  416. }
  417. }
  418.  
  419. private static void lireNotification(String user,int indice){
  420. ArrayList<Notification> notifs= getAbonne(user).getNotifications();
  421. notifs.get(indice).setEtat(true);
  422. }
  423.  
  424.  
  425. private static ArrayList<Post> filActu(String user){
  426. Abonne abo=getAbonne(user);
  427. ArrayList<Integer> codes = abo.getActu();
  428. ArrayList<Post> actu = new ArrayList<Post>();
  429. Post p;
  430. for(int i:codes){
  431. p=getPost(i);
  432. if(p!=null)
  433. actu.add(0,p);
  434. }
  435. return actu;
  436. }
  437.  
  438. private static void supprimerPost(int codePost){
  439. Abonne abo= getAbonne(getPost(codePost).getPoster());
  440. abo.supprimerPost(codePost);
  441. abo.supprimerActuAmis(codePost);
  442. basePosts.remove(codePost);
  443. }
  444.  
  445.  
  446. private static byte etatAmis(String user,String ami){
  447. Abonne abo=getAbonne(user);
  448. Abonne abo2=getAbonne(ami);
  449. boolean check1=abo.invitationEnvoyee(ami),
  450. check2=abo2.invitationEnvoyee(user);
  451.  
  452.  
  453. if(abo2.sontAmis(user))
  454. return 3;
  455. else if(check1||check2 ){
  456. if(check1)
  457. return 1;
  458. else
  459. return 2;
  460. }
  461. else
  462. return 0;
  463.  
  464. }
  465.  
  466. private static ArrayList<String> search(String recherche){
  467. ArrayList<String> result= new ArrayList<>();
  468. recherche=recherche.replaceAll("\\s","").toLowerCase();
  469. for(Abonne abo:baseAbonnes.values()){
  470. if(abo.isNamed(recherche))
  471. result.add(abo.toString());
  472. }
  473.  
  474. for(Groupe grp:baseGroupes.values()){
  475. if(grp.isNamed(recherche))
  476. result.add(grp.getGroupName()+"\n*\n*");
  477. }
  478.  
  479. Collections.sort(result, String.CASE_INSENSITIVE_ORDER);
  480. return result;
  481.  
  482. }
  483.  
  484. private static void refuserMembre(String user,String grp){
  485. Groupe g=getGroupe(grp);
  486. if(g==null) return;
  487. g.refuserMembre(user);
  488. }
  489. ////////////////////////////LE MAIN////////////////////////////////////////////////////
  490.  
  491.  
  492. public static void main(String args[]) throws IOException, ClassNotFoundException{
  493.  
  494.  
  495.  
  496. //BEGIN OF DECLARATION
  497.  
  498. Abonne sfn= new Abonne("Zeghoud","Sofiane","20/05/1998","homme","sofman","imene","djami3a","info","isil");
  499. Abonne imn= new Abonne("Kerboua","Imene","30/05/1999","femme","minette","sofiane","","","huehue");
  500. Abonne azdn= new Abonne("Bouchtout","Azzeddine","20/04/1995","Homme","PapiAzzou","haha","etudiant","info","universitaire");
  501. Abonne hda = new Abonne("Hassani","Hadda","20/04/1998","femMe","Hino","sofiane<3","etudiante","info","universitaire");
  502. /*Abonne ada = new Abonne("Macefeuk","Adda","20/04/1996","HoMme","toeflboi69","haha","etudiant","info","universitaire");
  503. Abonne scra= new Abonne("Laliam","Secoura","20/04/2000","femMe","sucrette","sofiane<3","etudiante","info","universitaire");
  504. */
  505. inscrireAbonne(sfn);
  506. inscrireAbonne(imn);
  507. inscrireAbonne(hda);
  508. inscrireAbonne(azdn);
  509.  
  510. ajouter("sofman","minette","cc cv");
  511. ajouter("PapiAzzou","minette","hello you");
  512. ajouter("Hino","minette","slt sccept pliz");
  513. ajouter("PapiAzzou","sofman","bla bla");
  514.  
  515. accepterInvitation("minette", 0);
  516.  
  517. publier("minette","Post erreur","publique");
  518. publier("minette","Ceci est pour everybody !","publique");
  519. publier("minette","Ceci est pour les amis de mes amis","listeamis");
  520. publier("sofman","Hey there!","publique");
  521. publier("sofman","I'm watchin' a movie XD","amis");
  522. publier("minette","Ceci est pour mes amis","amis");
  523. publier("minette","blabla","amis");
  524. publier("minette","oh","amis");
  525. publier("minette","shit","amis");
  526. publier("minette","fuuuu","amis");
  527. publier("minette","This is le poste le plus loooooooooooooooooooooooooooooooooooooooooooooooong !","amis");
  528. publier("minette","Ceci est pour moi-même","privé");
  529. publier("PapiAzzou","Hey there!","publique");
  530.  
  531. commenter("sofman",0,"nice shit");
  532. commenter("minette",0,"haha");
  533.  
  534. creerGroupe("sofman","IQVAYLIYEN IHURIEN");
  535. creerGroupe("minette","manaklosh smakla te3 berra club");
  536. publier("sofman", "heheh","IQVAYLIYEN IHURIEN","publique");
  537. publier("sofman", "hmm","IQVAYLIYEN IHURIEN","groupe");
  538.  
  539.  
  540. //END OF DECLARATION
  541.  
  542.  
  543. ArrayList<String> l = new ArrayList<String>();
  544. l.add("lala");
  545. l.remove("heh");
  546. System.out.println(l);
  547.  
  548.  
  549. ServerSocket socket=null;
  550. Socket serveur=null;
  551. ObjectInputStream in=null;
  552. ObjectOutputStream out=null;
  553.  
  554.  
  555. String username,password,ami,message,visibilite,groupe;
  556. ArrayList<String> result;
  557. Abonne abo,abo2;
  558. Groupe grp;
  559. Post p;
  560. int indice,code;
  561. Integer ind;
  562. boolean check;
  563.  
  564. while(true){
  565. try{
  566. socket=new ServerSocket(2018);
  567. serveur = socket.accept();
  568. out=new ObjectOutputStream(serveur.getOutputStream());
  569. in=new ObjectInputStream(serveur.getInputStream());
  570.  
  571. byte choix;
  572.  
  573. choix = in.readByte();
  574. switch(choix){
  575.  
  576. case 1 : //LA CONNEXION
  577. username=(String)in.readObject();
  578.  
  579. check=userExiste(username);
  580. out.writeBoolean(check);
  581. out.flush();
  582. if(!check) break;
  583.  
  584.  
  585. password=(String) in.readObject();
  586.  
  587. check=checkPassword(username,password);
  588. out.writeBoolean(check);
  589. out.flush();
  590. if(!check) break;
  591.  
  592. seConnecter(username);
  593. break;
  594.  
  595. case 2: //L'INSCRIPTION
  596. username=(String) in.readObject();
  597.  
  598. check = !userExiste(username);
  599. out.writeBoolean(check);
  600. out.flush();
  601. if(!check) break;
  602.  
  603. abo= new Abonne((String)in.readObject(),
  604. (String)in.readObject(),
  605. (String)in.readObject(),
  606. (String)in.readObject(),
  607. username,
  608. (String)in.readObject(),
  609. (String)in.readObject(),
  610. (String)in.readObject(),
  611. (String)in.readObject());
  612. inscrireAbonne(abo);
  613. break;
  614.  
  615. case 3: //LA DECONNEXION
  616. username=(String) in.readObject();
  617.  
  618. seDeconnecter(username);
  619. break;
  620.  
  621. case 4: //ENVOYER LA LISTE DE NOTIFICATIONS
  622. username=(String) in.readObject();
  623. out.writeObject(getAbonne(username).getNotifications());
  624. out.flush();
  625. break;
  626.  
  627. case 5: //ENVOYER LA LISTE D'INVITATIONS
  628. username=(String) in.readObject();
  629. out.writeObject(getAbonne(username).getInvitations());
  630. out.flush();
  631. break;
  632.  
  633. case 6: //AJOUTER
  634. username=(String) in.readObject();
  635. ami=(String) in.readObject();
  636. message=(String) in.readObject();
  637. switch(etatAmis(username,ami)){
  638. case 0:
  639. ajouter(username,ami,message);
  640. break;
  641. case 1:
  642. accepterInvitation(username,ami);
  643. break;
  644. case 2:
  645. getAbonne(ami).annulerInvitation(username);
  646. break;
  647. case 3:
  648. supprimerAmi(username,ami);
  649. break;
  650. }
  651.  
  652. break;
  653.  
  654. case 7: //LIRE UNE NOTIFICATION
  655. username=(String) in.readObject();
  656. indice=in.read();
  657. lireNotification(username,indice);
  658. break;
  659.  
  660. case 8: //ACCEPTER INVITATION
  661. username=(String) in.readObject();
  662. indice= in.read();
  663. accepterInvitation(username,indice);
  664. break;
  665.  
  666. case 9: //REFUSER INVITATION
  667. username=(String) in.readObject();
  668. indice=in.read();
  669. refuserInvitation(username,indice);
  670. break;
  671.  
  672. case 10: //ENVOYER LA LISTE DES POSTS DU FIL D'ACTUALITES
  673. username=(String) in.readObject();
  674. ArrayList<Post> posts=filActu(username);
  675. out.writeObject(posts);
  676. out.flush();
  677. break;
  678.  
  679. case 11: //REAGIR A UN POST OU A UN COMMENTAIRE
  680. username=(String) in.readObject();
  681. Reaction react=(Reaction) in.readObject();
  682. code=in.read();
  683. ind=(Integer) in.readObject();
  684. if(ind==null)
  685. reagir(username, react, code);
  686. else
  687. reagir(username, react, code, ind);
  688. break;
  689.  
  690. case 12: //ENVOYER LA LISTE DES POSTS DU MUR DE QUELQU'UN
  691. username=(String) in.readObject();
  692. ami=(String) in.readObject();
  693. ArrayList<Post> mur=rechercher(username,ami);
  694. out.writeObject(mur);
  695. out.flush();
  696. break;
  697.  
  698. case 13://EPINGLER UN POST
  699. indice=in.read(); //indice=codePost
  700. p=getPost(indice);
  701. if(p==null) break;
  702.  
  703. if(!p.isEpinglee())
  704. epingler(p);
  705. else
  706. desepingler(p);
  707. System.out.println(getPost(indice).isEpinglee());
  708. break;
  709.  
  710. case 14://SUPPRIMER UN POST
  711. indice=in.read(); //indice=codePost
  712. supprimerPost(indice);
  713. break;
  714.  
  715. case 15://MASQUER UN POST
  716. username= (String) in.readObject();
  717. indice = in.read();
  718. getAbonne(username).supprimerActu(indice);
  719. break;
  720.  
  721. case 16: //CE QUE AFFICHE LE BOUTON AJOUTER
  722. username= (String) in.readObject();
  723. ami= (String) in.readObject();
  724. if(in.readBoolean())
  725. out.writeByte(etatMembre(username,ami));
  726. else
  727. out.writeByte(etatAmis(username,ami));
  728. out.flush();
  729. break;
  730.  
  731. case 17://PUBLIER SUR LE MUR
  732. username= (String) in.readObject();
  733. message=(String) in.readObject();
  734. visibilite=(String) in.readObject();
  735. publier(username, message, visibilite);
  736. break;
  737.  
  738. case 18: //CREER UN GROUPE
  739. username= (String) in.readObject();
  740. groupe= (String) in.readObject();
  741. check=!groupeExiste(groupe);
  742. out.writeBoolean(check);
  743. out.flush();
  744. if(!check) break;
  745. creerGroupe(username,groupe);
  746. break;
  747.  
  748. case 19: //REJOINDRE OU QUITTER UN GROUPE
  749. username= (String) in.readObject();
  750. groupe= (String) in.readObject();
  751. System.out.println("2");
  752. switch(etatMembre(username,groupe)){
  753. case 0:
  754. rejoindreGroupe(username, groupe);
  755. break;
  756. case 1:
  757. getGroupe(groupe).supprimerDemande(username);
  758. break;
  759. case 2:
  760. quitterGroupe(username, groupe);
  761. System.out.println("5");
  762. break;
  763. case 3:
  764. quitterGroupe(username, groupe);
  765. break;
  766.  
  767. }
  768. break;
  769.  
  770. case 20: //VERIFIER SI UN MEMBRE EXISTE DANS UN GROUPE
  771.  
  772. break;
  773.  
  774. case 21: //ENVOYER LES INFOS D'UN MEMBRE
  775. ami= (String) in.readObject();
  776. abo= getAbonne(ami);
  777. out.writeObject(abo.getInfos());
  778. out.flush();
  779. break;
  780.  
  781. case 22: //ENVOYER LA LISTE D'AMIS
  782. username=(String) in.readObject();
  783. out.writeObject(getAbonne(username).getAmis());
  784. out.flush();
  785. break;
  786. case 23: //AJOUTER UN COMMENTAIRE A UN POSTE
  787. username=(String) in.readObject();
  788. indice=in.read();
  789. message=(String)in.readObject();
  790. commenter(username,indice,message);
  791. break;
  792. case 24: //ENVOYER LA LISTE DES COMMENTAIRES
  793. Integer i=(Integer) in.readObject();
  794. ArrayList<Commentaire> comments=getPost(i).getComments();
  795. out.writeObject(comments);
  796. out.flush();
  797. break;
  798. case 25: //ENVOYER LES MEMBRES D'UN GROUPE
  799. groupe= (String) in.readObject();
  800. result=new ArrayList<String>();
  801. for(Abonne a:getGroupe(groupe).getMembres().values()){
  802. result.add(a.toString());
  803. }
  804. out.writeObject(result);
  805. out.flush();
  806. break;
  807. case 26: //AFFICHER POSTES D'UN GROUPE
  808. username= (String) in.readObject();
  809. groupe= (String) in.readObject();
  810. out.writeObject(rechercherGroupe(username, groupe));
  811. out.flush();
  812. break;
  813. case 27: //SUPPRIMER COMMENTAIRERS
  814. code= in.read();
  815. indice=in.read();
  816. supprimerCommentaire(code,indice);
  817. break;
  818. case 28: //FAIRE UNE RECHERCHE
  819. message= (String) in.readObject();
  820. out.writeObject(search(message));
  821. out.flush();
  822. break;
  823. case 29: //ACCEPTER UN MEMBRE
  824. username= (String) in.readObject();
  825. groupe= (String) in.readObject();
  826. accepterMembre(username,groupe);
  827. break;
  828. case 30: //AJOUTER UN ADMIN
  829. username= (String) in.readObject();
  830. groupe= (String) in.readObject();
  831. getGroupe(groupe).ajouterAdmin(username);
  832. break;
  833. case 31: //AVOIRE LES INFOS D'UN GROUPE
  834. groupe=(String) in.readObject();
  835. out.writeObject(getGroupe(groupe).getInfos());
  836. out.flush();
  837. break;
  838. case 32: //ENVOYER LISTE DEMANDES:
  839. groupe=(String) in.readObject();
  840. result =new ArrayList<String>();
  841. ArrayList<String> liste= getGroupe(groupe).getListeAttente();
  842. for(String s: liste){
  843. result.add(getAbonne(s).toString());
  844. }
  845. out.writeObject(result);
  846. out.flush();
  847. break;
  848. case 33 : //PARTAGER UN POST
  849. username= (String) in.readObject();
  850. code=in.read();
  851. message=(String) in.readObject();
  852. partager(username, code, message);
  853. break;
  854. case 34 : //PUBLIER DANS UN GROUPE
  855. username= (String) in.readObject();
  856. message=(String) in.readObject();
  857. visibilite=(String) in.readObject();
  858. groupe=(String) in.readObject();
  859. publier(username,message, groupe, visibilite);
  860. break;
  861. case 35 : //ENVOYER LA LISTE DES GROUPES
  862. username=(String) in.readObject();
  863. out.writeObject(getAbonne(username).getGroupes());
  864. out.flush();
  865. break;
  866. case 36: //VERIFIER SI UN ABONNE EST EN LIGNE
  867. username=(String)in.readObject();
  868. out.writeBoolean(estEnLigne(username));
  869. out.flush();
  870. break;
  871. case 37: //REFUSER MEMBRE GROUPE
  872. username= (String) in.readObject();
  873. groupe= (String) in.readObject();
  874. refuserMembre(username,groupe);
  875. break;
  876. case 38: //ENVOYER UN SEUL POST
  877. code= in.read();
  878. out.writeObject(getPost(code));
  879. out.flush();
  880. break;
  881.  
  882.  
  883. }
  884.  
  885.  
  886. }catch(IOException e){
  887. System.out.println(e+" Impossible de se connecter");
  888. }finally{
  889. in.close();
  890. out.close();
  891. socket.close();
  892. serveur.close();
  893.  
  894. }
  895.  
  896.  
  897.  
  898. }
  899.  
  900. }
  901.  
  902. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement