/** * Informer les abonnées s'il n'y a plus de place, ou s'il n'y en avait plus et que quelques * places se sont libérées. * * @param source la source du message. * @param objet l'objet du message. */ public void update(Observable source, Object objet) { if (source instanceof Spectacle) { Spectacle concert = (Spectacle) source; List<Object> info = new ArrayList<Object>(); info.add(concert.getTitre()); info.add(concert.getdate()); info.add(objet); setChanged(); notifyObservers(info); } }
/** * Réserve les places demandées sauf s'il reste moins de places. Dans ce cas, la liste retournée * est la liste des places encore disponibles, mais elle ne sont pas encore réservées. * * @param titreConcert Le titre du concert. * @param date La date du concert. * @param nbPlacesDemandees Le nombre de places demandées * @return Une liste de places réservées s'il y a assez de place pour satidfaire la demande, la * liste des numéros de places encore disponibles dans le cas contraire. */ public List<String> getPlaces( String titreConcert, GregorianCalendar date, int nbPlacesDemandees) { Spectacle concert = listeSpectacles.get(getCleSpectacle(titreConcert, date)); int nbDispo = concert.getNbPlacesDispo(); List<String> listePlaces; if (nbDispo < nbPlacesDemandees) listePlaces = concert.getPlacesDisponibles(); else { listePlaces = new ArrayList<String>(); while (nbPlacesDemandees-- > 0) listePlaces.add(concert.reserver()); } return listePlaces; }
/** * Libère une place. * * @param titreSpectacle Le titre du spectacle. * @param date La date du spectacle. * @param place Le numéro de la place. * @return Le libellé du spectacle, y compris date et lieu, si la place a été libérée, <code>null * </code> si la place n'est pas réservée ou n'existe pas. */ public String liberer(String titreSpectacle, GregorianCalendar date, String place) { Spectacle spectacle = listeSpectacles.get(getCleSpectacle(titreSpectacle, date)); if (spectacle.liberer(place)) return spectacle.toStringShort(); else return null; }