Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_902 / libraries / libIverUtiles / src / com / iver / utiles / swing / threads / PipeTask.java @ 10681

History | View | Annotate | Download (1.47 KB)

1
/*
2
 * Created on 10-nov-2006 by azabala
3
 *
4
 */
5
package com.iver.utiles.swing.threads;
6

    
7
import java.util.Iterator;
8

    
9
/**
10
 * @author alzabord
11
 *
12
 * TODO To change the template for this generated type comment go to
13
 * Window - Preferences - Java - Code Style - Code Templates
14
 */
15
public class PipeTask implements IMonitorableTask {
16

    
17
        private IPipedTask task1;
18
        private IPipedTask task2;
19
        private boolean canceled = false;
20
        
21
        private IPipedTask currentTask = null;
22
        
23
        
24
        public PipeTask(IPipedTask task1, IPipedTask task2){
25
                this.task1 = task1;
26
                this.task2 = task2;
27
                this.currentTask = task1;
28
        }
29
        
30
        
31
        public int getInitialStep() {
32
                return 0;
33
        }
34

    
35
        public int getFinishStep() {
36
                return currentTask.getFinishStep();
37
        }
38

    
39
        public int getCurrentStep() {
40
                return currentTask.getCurrentStep();
41
        }
42

    
43
        public String getStatusMessage() {
44
                return currentTask.getStatusMessage();
45
        }
46

    
47
        public String getNote() {
48
                if(currentTask != null){
49
                        return currentTask.getNote();
50
                }else{
51
                        return "";
52
                }
53
        }
54

    
55
        public boolean isDefined() {
56
                return currentTask.isDefined();
57
        }
58

    
59
        public void cancel() {
60
                currentTask.cancel();
61
                canceled = true;
62
        }
63

    
64
        public void run() throws Exception {
65
                currentTask.run();
66
                if(currentTask.isCanceled())
67
                        return;
68
                Object result = currentTask.getResult();
69
                currentTask = task2;
70
                currentTask.setEntry(result);
71
                currentTask.run();
72
        }
73

    
74
        public boolean isCanceled() {
75
                return currentTask.isCanceled();
76
        }
77

    
78
        public boolean isFinished() {
79
                return task1.isFinished() && task2.isFinished();
80
        }
81

    
82
}