View Javadoc

1   /*--------------------------------------------------------------------------
2    *  Copyright 2007 utgenome.org
3    *
4    *  Licensed under the Apache License, Version 2.0 (the "License");
5    *  you may not use this file except in compliance with the License.
6    *  You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *  Unless required by applicable law or agreed to in writing, software
11   *  distributed under the License is distributed on an "AS IS" BASIS,
12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *  See the License for the specific language governing permissions and
14   *  limitations under the License.
15   *--------------------------------------------------------------------------*/
16  //--------------------------------------
17  // UTGBMedaka Project
18  //
19  // Worker.java
20  // Since: Aug 15, 2007
21  //
22  // $URL$ 
23  // $Author$
24  //--------------------------------------
25  package org.utgenome.gwt.utgb.client.util;
26  
27  import com.google.gwt.user.client.Command;
28  import com.google.gwt.user.client.DeferredCommand;
29  import com.google.gwt.user.client.Timer;
30  import com.google.gwt.user.client.rpc.AsyncCallback;
31  
32  public abstract class Worker implements Command {
33  
34  	private Timer timer = null;
35  	private WorkQueue workQueue;
36  	private Command command = null;
37  
38  	public Worker(WorkQueue workQueue, Command command) {
39  		this.workQueue = workQueue;
40  	}
41  
42  	public class WorkerCallback implements AsyncCallback<Object> {
43  		public void onFailure(Throwable caught) {
44  			handleFailure(caught);
45  		}
46  
47  		public void onSuccess(Object result) {
48  			handleSuccess();
49  		}
50  
51  	}
52  
53  	public abstract void execute();
54  
55  	public void handleFailure(Throwable caught) {
56  
57  	}
58  
59  	public void handleSuccess() {
60  		if (workQueue.hasNextWorker())
61  			DeferredCommand.addCommand(workQueue.nextWorker());
62  	}
63  }