SightVOContainer.java
001 /*
002  * Created on 03.03.2004
003  */
004 package de.fub.tip.datenanzeige.container;
005 
006 import java.util.Vector;
007 import java.util.Iterator;
008 
009 import org.apache.log4j.Logger;
010 
011 import de.fub.tip.datenanzeige.Container;
012 import de.fub.tip.datenanzeige.ContainerInhalt;
013 import de.fub.tip.datenanzeige.ormapper.SightVO;
014 
015 /**
016  * Sinn: 
017  * stellt zur Anzeige <code>SightVO</code>-Objekte zur Verfügung, 
018  * die von einer Logik geladen werden
019  <br>
020  <b>Es erfolgt kein Schreiben in die Datenbank!!!! Zugriff nur lesend!</b>
021  
022  @author hirsch, 03.03.2004
023  @version 2004-04-26
024  
025  * $Id: SightVOContainer.java,v 1.3 2004/04/30 14:26:30 hirsch Exp $
026  
027  */
028 public class SightVOContainer implements Container {
029   /** eigener Logger zwecks Fehlersuche */
030   private static Logger logger = 
031       Logger.getLogger(SightVOContainer.class);
032   /** eigentlicher ContainerInhalt */
033   private Vector inhalt = null;
034   /** zum vereinfachenden Zugriff die Daten */
035   private Iterator iterator = null;
036   
037   /**
038    * erzeugt den Container, so dass mit add() Elemente
039    * hinzugefügt werden können
040    */
041   public SightVOContainer() {
042     logger.debug("SightVOContainer startet...");
043     this.inhalt = new Vector();
044     iterator = this.inhalt.iterator();
045   // end of Konstruktor
046   
047   /**
048    * gibt die aktuelle Anzahl der Elemente im Container zurück
049    @return containerElementGroesse
050    */
051   public int size() {
052     return this.inhalt.size();
053   // end of size
054 
055   /**
056    * damit man iterieren kann, abfragen, ob noch ein Element da ist
057    @return boolean noch ein Element da
058    */
059   public boolean hasNext() {
060     return this.iterator.hasNext();
061   // end of hasNext
062   
063   /**
064    * fügt dem Container ein neues SightVO Objekt hinzu<br>
065    * Der interne Iterator wird dabei initialisiert, um eine
066    * Ausnahme zu vermeiden.
067    
068    @param sight Sehenswuerdigkeit
069    */
070   public void add(SightVO sight) {
071     this.inhalt.add(sight);
072     // sonst wird eine ConcurrentModificationException geworfen!
073     this.iterator = this.inhalt.iterator();
074   // end of add
075   
076   /**
077    <b>ACHTUNG!</b><br>
078    <code>remove()</code> nicht möglich auf diesem Objekt.<br>
079    * Bei Aufruf dieser Methode wird eine 
080    <code>UnsupportedOperationException</code>
081    * geworfen.
082    @see java.util.Iterator#remove
083    */
084   public void remove() {
085     throw new UnsupportedOperationException(
086         "SightVOContainer nur lesbar! " +
087       "Daher kein remove() möglich");
088   // end of remove
089   
090   /**
091    * gibt das nächste Element als ContainerInhalt 
092    * des Iterators im Container zurück
093    @return naechstes Element
094    */
095   public ContainerInhalt nextVO() {
096     // wenn Daten Sch* sind, kann ClassCastException kommen
097     return (ContainerInhaltthis.iterator.next();
098   // end of hasNext
099 
100   /**
101    * gibt das nächste Element des Iterators im Container zurück
102    @return naechstes Element
103    */
104   public Object next() {
105     return this.iterator.next();
106   // end of next
107 // end of class