1
15
16 package gate.creole;
17
18 import java.util.Vector;
19
20 import gate.ProcessingResource;
21 import gate.Resource;
22 import gate.event.ProgressListener;
23 import gate.event.StatusListener;
24
25
28 abstract public class AbstractProcessingResource
29 extends AbstractResource implements ProcessingResource, ANNIEConstants
30 {
31
32 public Resource init() throws ResourceInstantiationException {
33 return this;
34 }
36
40 public void execute() throws ExecutionException{
41 throw new ExecutionException(
42 "Resource " + getClass() + " hasn't overriden the execute() method"
43 );
44 }
46
56 public void reInit() throws ResourceInstantiationException{
57 init();
58 }
60
61 public void cleanup() {
62 }
63
64
68 public synchronized boolean isInterrupted(){
69 return interrupted;
70 }
71
72
75 public synchronized void interrupt(){
76 interrupted = true;
77 }
78
79
80
84 public synchronized void removeStatusListener(StatusListener l) {
85 if (statusListeners != null && statusListeners.contains(l)) {
86 Vector v = (Vector) statusListeners.clone();
87 v.removeElement(l);
88 statusListeners = v;
89 }
90 }
91
92
96 public synchronized void addStatusListener(StatusListener l) {
97 Vector v = statusListeners == null ? new Vector(2) : (Vector) statusListeners.clone();
98 if (!v.contains(l)) {
99 v.addElement(l);
100 statusListeners = v;
101 }
102 }
103
104
108 protected void fireStatusChanged(String e) {
109 if (statusListeners != null) {
110 Vector listeners = statusListeners;
111 int count = listeners.size();
112 for (int i = 0; i < count; i++) {
113 ((StatusListener) listeners.elementAt(i)).statusChanged(e);
114 }
115 }
116 }
117
118
122 public synchronized void addProgressListener(ProgressListener l) {
123 Vector v = progressListeners == null ? new Vector(2) : (Vector) progressListeners.clone();
124 if (!v.contains(l)) {
125 v.addElement(l);
126 progressListeners = v;
127 }
128 }
129
130
134 public synchronized void removeProgressListener(ProgressListener l) {
135 if (progressListeners != null && progressListeners.contains(l)) {
136 Vector v = (Vector) progressListeners.clone();
137 v.removeElement(l);
138 progressListeners = v;
139 }
140 }
141
142
147 protected void fireProgressChanged(int e) {
148 if (progressListeners != null) {
149 Vector listeners = progressListeners;
150 int count = listeners.size();
151 for (int i = 0; i < count; i++) {
152 ((ProgressListener) listeners.elementAt(i)).progressChanged(e);
153 }
154 }
155 }
156
157
161 protected void fireProcessFinished() {
162 if (progressListeners != null) {
163 Vector listeners = progressListeners;
164 int count = listeners.size();
165 for (int i = 0; i < count; i++) {
166 ((ProgressListener) listeners.elementAt(i)).processFinished();
167 }
168 }
169 }
170
171
174 protected class IntervalProgressListener implements ProgressListener{
175 public IntervalProgressListener(int start, int end){
176 this.start = start;
177 this.end = end;
178 }
179 public void progressChanged(int i){
180 fireProgressChanged(start + (end - start) * i / 100);
181 }
182
183 public void processFinished(){
184 fireProgressChanged(end);
185 }
186
187 int start;
188 int end;
189 }
191
194 protected class InternalStatusListener implements StatusListener{
195 public void statusChanged(String message){
196 fireStatusChanged(message);
197 }
198 }
200
204 private transient Vector statusListeners;
205
206
210 private transient Vector progressListeners;
211
212 protected boolean interrupted = false;
213 }