import java.util.Map; public class Factory { private final int VIOLON = 1; private final int GUITARE = 2; private final int CONTREBASSE = 3; private final int FLUTE = 4; private final int TROMPETTE = 5; // compte le nombre d'objet qui ont étés créés, sert à définir un id private int nbMusiciens; private int nbInstruments; private int nbOrchestres; /* * Ici on créé un Orchestre définit par un nom et un id */ public Map creerOrchestre(Map tOrchestres) { Saisie hSaisie = new Saisie(); System.out.println("Comment s'appelle l'Orchestre ?"); Orchestre orc = new Orchestre(hSaisie.saisieString(), this.nbOrchestres); tOrchestres.put(this.nbOrchestres, orc); this.nbOrchestres++; orc.sePresenter(); return tOrchestres; } /* * Permet de créer un musicien défini par un nom, prénom et id */ public Map creerMusicien(Map tMusiciens) { Saisie hSaisie = new Saisie(); System.out.println("Veuillez saisir le prénom du musicien :"); String prenom = hSaisie.saisieString(); System.out.println("Veuillez saisir le nom du musicien :"); String nom = hSaisie.saisieString(); Musicien nouveau = new Musicien(prenom, nom, this.nbMusiciens); tMusiciens.put(this.nbMusiciens, nouveau); this.nbMusiciens++; System.out.println("Musicien ajouté !\n"); nouveau.sePresenter(); return tMusiciens; } /* * Creer un instrument */ public Map creerInstrument(Map tInstruments) { Saisie hSaisie = new Saisie(); int choix = 0; while (choix < 1 || choix > 6) { System.out.println("Choisissez maintenant entre les options suivantes :\n" + "1- Violon\n" + "2- Guitare\n" + "3- Contrebasse\n" + "4- Flute\n" + "5- Trompette\n"); choix = hSaisie.saisieInt(); switch (choix) { // création d'un instrument en fonction du choix case VIOLON: Violon nv = new Violon(this.nbInstruments); nv.afficherInstrument(); tInstruments.put(this.nbInstruments, nv); break; case GUITARE: Guitare ng = new Guitare(this.nbInstruments); ng.afficherInstrument(); tInstruments.put(this.nbInstruments, ng); break; case CONTREBASSE: Contrebasse nc = new Contrebasse(this.nbInstruments); nc.afficherInstrument(); tInstruments.put(this.nbInstruments, nc); break; case FLUTE: Flute nf = new Flute(this.nbInstruments); nf.afficherInstrument(); tInstruments.put(this.nbInstruments, nf); break; case TROMPETTE: Trompette nt = new Trompette(this.nbInstruments); nt.afficherInstrument(); tInstruments.put(this.nbInstruments, nt); break; default: System.out.println("Commande invalide, réessayez"); } } this.nbInstruments++; return tInstruments; } /* * supprimer un orchestre par son ID */ public Map supprimerOrchestre(Map tOrchestres) { Saisie hSaisie = new Saisie(); System.out.println("Veuillez entrer le numéro de l'orchestre à supprimer :"); int num = hSaisie.saisieInt(); if (tOrchestres.containsKey(num)) { tOrchestres.get(num).viderAvantSuppression(); System.out.println("Musiciens virés"); } if (tOrchestres.remove(num) != null) { System.out.println("l'orchestre " + num + " a été supprimé"); } else { System.out.println("Aucun orchestre portant le numéro " + num + " n'éxiste dans la liste"); } return tOrchestres; } /* * supprimer un musicien par son ID */ public Map supprimerMusicien(Map tMusiciens, Map tOrchestres) { Saisie hSaisie = new Saisie(); Main hMain = new Main(); // saisie de l'id System.out.println("Veuillez entrer le numéro du musicien à supprimer :"); int num = hSaisie.saisieInt(); // on récupere le musicien en question Musicien temp = tMusiciens.get(num); // si l'id est trouvé if (temp != null) { // on récupère l'id de l'instrument du musicien int idInstrument = temp.getInstrumentId(); // on libere l'instrument hMain.unlock(idInstrument); // on supprime le musicien tMusiciens.remove(num); // on va chercher dans les orchestres Orchestre tmp; for (int i = 0; i < this.nbOrchestres; i++) { tmp = tOrchestres.get(i); if (tmp != null) { // si on le trouve on le supprime if (tmp.getListe().containsKey(num)) { tmp.getListe().remove(num); tmp.decNbMusiciens(); } } } System.out.println("Le musicien " + num + " a été supprimé"); } else { System.out.println("Aucun musicien portant le numéro " + num + " n'éxiste dans la liste"); } return tMusiciens; } /* * supprimer un instrument par son ID */ public Map supprimerInstrument(Map tInstruments) { Saisie hSaisie = new Saisie(); System.out.println("Veuillez entrer le numéro de l'instrument à supprimer :"); int num = hSaisie.saisieInt(); if (tInstruments.remove(num) != null) { System.out.println("L'instrument " + num + " a été supprimé"); } else { System.out.println("Aucun instrument portant le numéro " + num + " n'éxiste dans la liste"); } return tInstruments; } /* * affiche les orchestres */ public void afficherListeOrchestres(Map tOrchestres) { int i = 0; while (i < this.nbOrchestres) { if (tOrchestres.containsKey(i)) { tOrchestres.get(i).sePresenter(); System.out.print("\n"); } i++; } } /* * affiche la liste des musiciens */ public void afficherListeMusiciens(Map tMusiciens) { int i = 0; while (i < this.nbMusiciens) { if (tMusiciens.containsKey(i)) { tMusiciens.get(i).sePresenter(); System.out.print("\n"); } i++; } } /* * Afficher la liste des instruments */ public void afficherListeInstruments(Map tInstruments) { int i = 0; while (i < this.nbInstruments) { if (tInstruments.containsKey(i)) { tInstruments.get(i).afficherInstrument(); System.out.print("\n"); } i++; } } /* * Associer un instrument à un Musicien */ public void associerInstrumentMusicien(Map tMusiciens, Map tInstruments) { Saisie hSaisie = new Saisie(); System.out.println("Veuillez entrer l'id du musicien : "); int choixMusic = hSaisie.saisieInt(); if (tMusiciens.containsKey(choixMusic)) { System.out.println("Veuillez entrer l'id de l'instrument : "); int choixInstru = hSaisie.saisieInt(); if (tInstruments.containsKey(choixInstru)) { Musicien tempMusic = tMusiciens.get(choixMusic); Instrument tempInstru = tInstruments.get(choixInstru); if (tempInstru.lock == false) { tempMusic.ajouterInstrument(tempInstru); tempInstru.lock = true; System.out.println("Correctement associé"); } else { System.out.println("L'instrument appartient déjà à quelqu'un"); } } else { System.out.println("L'instrument n'existe pas"); } } else { System.out.println("Le musicien n'existe pas"); } } /* * Associe un musicien à un orchestre */ public void associerMusicienOrchestre(Map tOrchestres, Map tMusiciens) { Saisie hSaisie = new Saisie(); System.out.println("Veuillez entrer l'id de l'orchestre : "); int choixOrc = hSaisie.saisieInt(); if (tOrchestres.containsKey(choixOrc)) { System.out.println("Veuillez entrer l'id du musicien : "); int choixMusic = hSaisie.saisieInt(); if (tMusiciens.containsKey(choixMusic)) { Orchestre tempOrc = tOrchestres.get(choixOrc); Musicien tempMusic = tMusiciens.get(choixMusic); if (tempMusic.getLock() == false) { tempOrc.ajouterMusicien(tempMusic); tempMusic.setLock(true); System.out.println("Correctement associé"); } else { System.out.println("Le musicien appartient déjà à un orchestre"); } } else { System.out.println("Le musicien n'existe pas"); } } else { System.out.println("L'orchestre n'existe pas"); } } /* * Accorde un instrument à cordes */ public void accorderInstrument(Map tMusiciens) { Saisie hSaisie = new Saisie(); System.out.println("Veuillez entrer l'id de l'instrument à accorder : "); int choix = hSaisie.saisieInt(); Musicien temp; for (int i = 0; i < this.nbMusiciens; i++) { temp = tMusiciens.get(i); if (temp != null) { if (temp.getInstrumentId() == choix) { temp.accorder(); } } } } }