public void karteReservieren(Karte karte) throws KarteNichtVerfuegbarException {
   if (karte.getKartenstatus().equals(KonstantKartenStatus.FREI)) {
     karte.setKartenstatus(KonstantKartenStatus.RESERVIERT);
   } else {
     throw new KarteNichtVerfuegbarException(karte.getKartenId());
   }
 }
 //    public void legeKartenInWarenkorb(Kategorie kategorie, int anzahl) {
 //        int x = kategorie.getKategorieId();
 //        int y = KonstantKartenStatus.FREI.getKartenstatusId();
 //
 //        String hql = "FROM Karte  WHERE KategorieID = '" + x + "'" + " AND KartenstatusID = '" +
 // y + "'";
 //        Query query =
 // DAOFabrik.getInstance().getCurrentSession().createQuery(hql).setMaxResults(anzahl);
 //        List list = query.list();
 //        if (list != null || list.size() != 0) {
 //
 //
 //            ArrayList<Karte> karten = (ArrayList<Karte>) query.list();
 //            for (Karte k : karten) {
 //                karteBlockieren(k);
 //                bestellteKartenSet.add(k);
 //            }
 //        }
 //    }
 public void bestellungsNummerBeiDerKarteSpeichern(Bestellung bestellung, Set<Karte> karten)
     throws SaveFailedException {
   Object[] k = karten.toArray();
   for (int i = 0; i < k.length; i++) {
     Karte karte = (Karte) k[i];
     karte.setBestellung(bestellung);
     try {
       DAOFabrik.getInstance().getKarteDAO().saveORupdate(karte);
       System.out.println("Karte hat bestellung nummer " + bestellung.getBestellungId());
     } catch (SaveFailedException ex) {
       System.out.println("Karte nicht update");
       throw new SaveFailedException();
     }
   }
 }
  //    public void loeschenAusWarenkorb(Karte karte) {
  //        karteFreigeben(karte);
  //        bestellteKartenSet.remove(karte);
  //    }
  // gibt eine Liste von Karten von Kunde, die status RESERVIERT haben ---- RABOTAET
  public ArrayList<Karte> getReservierteKartenVonKunde(Kunde kunde) {
    ArrayList<Karte> reservierteKarten = new ArrayList<Karte>();
    Set<Bestellung> bestellungen =
        DAOFabrik.getInstance().getKundeDAO().findById(kunde.getKundenId(), false).getBestellungs();
    if (bestellungen == null || bestellungen.size() == 0) {
      return null;
    }
    Iterator<Bestellung> iterator = bestellungen.iterator();
    while (iterator.hasNext()) {

      Set<Karte> karten = iterator.next().getKartes();
      Iterator<Karte> iterator2 = karten.iterator();

      while (iterator2.hasNext()) {
        Karte k = iterator2.next();
        if (k.getKartenstatus().equals(KonstantKartenStatus.RESERVIERT)) {
          reservierteKarten.add(k);
        }
      }
    }

    return reservierteKarten;
  }
  public void karteKaufen(Karte karte, boolean istErmaessigt) throws SaveFailedException {

    karte.setKartenstatus(KonstantKartenStatus.VERKAUFT);
    karte.setErmaessigt(istErmaessigt);

    if (istErmaessigt) {
      int i = (100 - karte.getKategorie().getVeranstaltung().getErmaessigung());

      BigDecimal bd = new java.math.BigDecimal(String.valueOf(i));
      BigDecimal preis =
          calculateCost(i, karte.getKategorie().getPreis())
              .divide(new java.math.BigDecimal(String.valueOf(100)));

      karte.setPreis(preis);
    } else {
      karte.setPreis(karte.getKategorie().getPreis());
    }

    DAOFabrik.getInstance().getKarteDAO().saveORupdate(karte);
    DAOFabrik.getInstance().getCurrentSession().merge(karte);
  }
 public void karteFreigeben(Karte karte) throws SaveFailedException {
   karte.setKartenstatus(KonstantKartenStatus.FREI);
   DAOFabrik.getInstance().getKarteDAO().saveORupdate(karte);
 }
 public void karteBlockieren(Karte karte) throws SaveFailedException {
   karte.setKartenstatus(KonstantKartenStatus.BLOKIERT);
   DAOFabrik.getInstance().getKarteDAO().saveORupdate(karte);
 }