01 /*
02 * Created on 31.03.2004
03 */
04 package de.fub.tip.datenanzeige.container;
05
06 import java.util.Iterator;
07 import java.util.Vector;
08
09 import org.apache.log4j.Logger;
10
11 import de.fub.tip.datenanzeige.Container;
12 import de.fub.tip.datenanzeige.ContainerInhalt;
13 import de.fub.tip.datenanzeige.ormapper.TopicVO;
14
15 /**
16 * Sinn:
17 * stellt zur Anzeige <code>TopicVO</code>-Objekte zur
18 * Verfügung,
19 * die von einer Logik erzeugt wurden und angezeigt werden sollen.
20 * <br>
21 * <b>Der Container kann nur lesend benutzt werden!</b>
22 *
23 * @author hirsch, 31.03.2004
24 * @version 2004-03-31
25 * $Id: TopicVOContainer.java,v 1.3 2004/04/30 14:26:30 hirsch Exp $
26 *
27 */
28 public class TopicVOContainer implements Container {
29 /** eigener Logger zwecks Fehlersuche */
30 private static Logger logger =
31 Logger.getLogger(TopicVOContainer.class);
32 /** eigentlicher ContainerInhalt */
33 private Vector inhalt = null;
34 /** zum vereinfachenden Zugriff die Daten */
35 private Iterator iterator = null;
36
37 /**
38 * erzeugt den Container, so dass mit add() Elemente
39 * hinzugefügt werden können
40 */
41 public TopicVOContainer() {
42 logger.debug("TopicVOContainer startet...");
43 this.inhalt = new Vector();
44 iterator = this.inhalt.iterator();
45 } // end of Konstruktor
46
47 /**
48 * fügt dem Container ein neues SightVO Objekt hinzu<br>
49 * Der interne Iterator wird dabei initialisiert, um eine
50 * Ausnahme zu vermeiden.
51 *
52 * @param topic TopicVO
53 */
54 public void add(TopicVO topic) {
55 this.inhalt.add(topic);
56 // sonst wird eine ConcurrentModificationException geworfen!
57 this.iterator = this.inhalt.iterator();
58 } // end of add
59
60 /**
61 * @see de.fub.tip.datenanzeige.Container#nextVO()
62 */
63 public ContainerInhalt nextVO() {
64 // wenn Daten Sch* sind, kann ClassCastException kommen
65 return (ContainerInhalt) this.iterator.next();
66 } // end of nextVO
67
68 /**
69 * @see java.util.Iterator#remove()
70 * @throws UnsupportedOperationException wenn aufgerufen,
71 * da nur lesende Zugriffe möglich sind
72 */
73 public void remove() {
74 throw new UnsupportedOperationException(
75 "TopicVOContainer nur lesbar! kein remove() möglich.");
76 } // end of remove
77
78 /**
79 * @see java.util.Iterator#hasNext()
80 */
81 public boolean hasNext() {
82 return this.iterator.hasNext();
83 } // end of hasNext
84
85 /**
86 * @see java.util.Iterator#next()
87 */
88 public Object next() {
89 return this.iterator.next();
90 } // end of next
91
92 /**
93 * gibt die aktuelle Anzahl der Elemente im Container zurück
94 * @return containerElementGroesse
95 */
96 public int size() {
97 return this.inhalt.size();
98 } // end of size
99 } // end of class
|