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 (ContainerInhalt) this.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
|