KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > coldcore > coloradoftp > connection > impl > DataPortListenerSequence


1 package com.coldcore.coloradoftp.connection.impl;
2
3 import com.coldcore.coloradoftp.connection.DataPortListener;
4 import com.coldcore.coloradoftp.factory.ObjectFactory;
5 import com.coldcore.coloradoftp.factory.ObjectName;
6
7 import java.util.HashSet JavaDoc;
8 import java.util.Iterator JavaDoc;
9
10 /**
11  * Factory-like class to create a sequence of data port listeners.
12  * This class can be used as an imput parameter into data port listener set.
13  *
14  * Class contructor takes port numbers and creates a sequence of data port listeners with assigned
15  * port from port 1 to port 2 (inclusive). A very easy way rather than to create every data port
16  * listener individualy.
17  *
18  * This class relies on the ObjectFactory to get instances of DataPortListeners, but the ObjectFactory
19  * cannot be used in a constructor. This class overwrites important methods of the HashSet initializing
20  * itself when those will be called (e.g. by DataPortListenerSet).
21  */

22 public class DataPortListenerSequence extends HashSet JavaDoc<DataPortListener> {
23
24   protected int port1;
25   protected int port2;
26   protected boolean initialized;
27
28   
29   public DataPortListenerSequence(int port1, int port2) {
30     this.port1 = port1;
31     this.port2 = port2;
32   }
33
34
35   protected void initialize() {
36     if (initialized) return;
37     initialized = true;
38     for (int port = port1; port <= port2; port++) {
39       DataPortListener listener = (DataPortListener) ObjectFactory.getObject(ObjectName.DATA_PORT_LISTENER);
40       listener.setPort(port);
41       add(listener);
42     }
43   }
44
45
46   public Iterator JavaDoc<DataPortListener> iterator() {
47     initialize();
48     return super.iterator();
49   }
50
51
52   public int size() {
53     initialize();
54     return super.size();
55   }
56
57
58   public boolean isEmpty() {
59     initialize();
60     return super.isEmpty();
61   }
62 }
63
Popular Tags