public String deleteHotel(int id) { ArrayList<PacchettoDTO> h_pack_list = CMB.getHotelById(id).getPacchettos(); int pr = 0; if (!h_pack_list.isEmpty()) { for (PacchettoDTO p : h_pack_list) { if (p.getLista_hotel().size() == 1) // se nel pacchetto c'è solo un hotel, in questo caso è proprio quello da // eliminare { PMB.deletePacchetto(p.getId()); pr++; } else { // se non era l'unico hotel, rimuovo dalla lista del pacchetto e elimina pacchetto ArrayList<HotelDTO> phdto = (ArrayList<HotelDTO>) p.getLista_hotel(); ArrayList<HotelDTO> new_phdto = new ArrayList<HotelDTO>(); for (HotelDTO hdto : phdto) { if (hdto.getId() != id) new_phdto.add(hdto); } p.setLista_hotel(new_phdto); // modifico la lista degli hotel al pacchetto corrente PMB.modifyPacchetto(p); } } } if (pr >= 1) { FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_WARN, "Info message", "Con questa modifica " + pr + " pacchetto/i sono stati eliminati per incompatibilità")); } CMB.eliminaHotel(id); return "toHotel.xhtml?faces-redirect=true"; }
public String eliminaVolo(int id) { ArrayList<PacchettoDTO> volo_pack_list = CMB.getVoloById(id).getPacchettos(); int pr = 0; if (!volo_pack_list.isEmpty()) { for (PacchettoDTO p : volo_pack_list) { ArrayList<VoloDTO> pvdto = (ArrayList<VoloDTO>) p.getLista_voli(); ArrayList<VoloDTO> new_pvdto = new ArrayList<VoloDTO>(); for (VoloDTO vdto : pvdto) { if (vdto.getId() != id) new_pvdto.add(vdto); // new_pvdto è la nuova list voli del pack } int andata = 0, ritorno = 0; // controllo nella lista nuova se esiste almeno un volo di andata e uno di // ritorno for (VoloDTO vdto2 : new_pvdto) { if (vdto2.getLuogo_partenza().equals(p.getDestinazione())) andata++; else if (vdto2.getLuogo_arrivo().equals(p.getDestinazione())) ritorno++; } int temporal = 0; // Controllo che ci sia ancora un volo di andata prima di uno di ritorno nel // pacchetto for (VoloDTO vdto : new_pvdto) { if (vdto.getLuogo_arrivo().equals(p.getDestinazione())) { Date date_ref = vdto.getData(); for (VoloDTO vdto2 : new_pvdto) { if (vdto2.getLuogo_partenza().equals(p.getDestinazione())) { if (vdto2.getData().after(date_ref)) { temporal++; break; } } } } } if (andata >= 1 && ritorno >= 1 && temporal >= 1) // se ho ancora abbastanza voli salvo la nuova lista e aggiorno il pack { p.setLista_voli(new_pvdto); PMB.modifyPacchetto(p); } else { PMB.deletePacchetto(p.getId()); pr++; } } } if (pr >= 1) { FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_WARN, "Info message", "Con questa modifica " + pr + " pacchetto/i sono stati eliminati per incompatibilità")); } CMB.eliminaVolo(id); return "toVolo.xhtml?faces-redirect=true"; }