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 }