/*
  * (non-Javadoc)
  *
  * @see gruppen.IGruppenVerwaltung#leseWarteposition(gruppen.Anmeldung)
  */
 public long leseWarteposition(Anmeldung<T> anmeldung) {
   if (anmeldung.getBelegtVon() != null) {
     return -1;
   }
   Gruppe<T> g = anmeldung.getGruppe();
   List<Anmeldung<T>> anmeldungen = g.getAnmeldungen();
   sortByAnmeldeZeitpunkt(anmeldungen);
   return anmeldungen.indexOf(anmeldung);
 }
 public void erzeugeGruppe(Gruppe<T> gruppe) {
   Gruppe<T> alt = leseGruppe(gruppe.getName(), gruppe.getTyp());
   if (alt != null) {
     throw new GruppenException(Code.GRUPPE_EXISTIERT);
   }
   if (gruppe.getId() == null) {
     setId(gruppe, Gruppe.class, (long) gruppen.size());
   }
   gruppen.put(gruppe.getId(), gruppe);
 }
 @SuppressWarnings("unchecked")
 public List<Anmeldung<T>> listeBelegungenNachDatum(Gruppe<T> gruppe, final Date datum) {
   List<Anmeldung<T>> ga = gruppe.getAnmeldungen();
   return filterList(
       ga,
       new Predicate() {
         public boolean evaluate(Object object) {
           Anmeldung<T> a = (Anmeldung<T>) object;
           Date von = a.getBelegtVon();
           Date bis = a.getBelegtBis();
           return von != null && !datum.before(von) && (bis == null || !datum.after(bis));
         }
       });
 }
 public List<Anmeldung<T>> listeWarteliste(Gruppe<T> gruppe) {
   List<Anmeldung<T>> ga = gruppe.getAnmeldungen();
   @SuppressWarnings("unchecked")
   List<Anmeldung<T>> anmeldungen =
       filterList(
           ga,
           new Predicate() {
             public boolean evaluate(Object object) {
               Anmeldung<T> a = (Anmeldung<T>) object;
               return a.getBelegtVon() == null;
             }
           });
   sortByAnmeldeZeitpunkt(anmeldungen);
   return anmeldungen;
 }