Revision 1719 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/task/impl/DefaultTaskStatusManager.java

View differences:

DefaultTaskStatusManager.java
37 37
/**
38 38
 * @author gvSIG Team
39 39
 * @version $Id$
40
 * 
40
 *
41 41
 */
42 42
public class DefaultTaskStatusManager implements TaskStatusManager {
43 43

  
44
	private static final int MAXTASKS_TO_AUTOREMOVE = 15;
44
    private static final int MAXTASKS_TO_AUTOREMOVE = 15;
45 45

  
46
	private static long codeCounter = 1;
46
    private static long codeCounter = 1;
47 47

  
48
	private Map tasksStatus = null;
49
	private ObservableHelper observers = null;
48
    private Map tasksStatus = null;
49
    private ObservableHelper observers = null;
50 50

  
51
	public DefaultTaskStatusManager() {
52
		this.tasksStatus = new LinkedHashMap();
53
		this.observers = new ObservableHelper();
54
	}
51
    public DefaultTaskStatusManager() {
52
        this.tasksStatus = new LinkedHashMap();
53
        this.observers = new ObservableHelper();
54
    }
55 55

  
56
	synchronized public void add(TaskStatus taskStatus) {
57
		this.tasksStatus.put(taskStatus.getCode(), taskStatus);
58
		this.update(taskStatus);
59
	}
56
    @Override
57
    synchronized public void add(TaskStatus taskStatus) {
58
        this.tasksStatus.put(taskStatus.getCode(), taskStatus);
59
        this.update(taskStatus);
60
    }
60 61

  
61
	synchronized public TaskStatus get(String code) {
62
		return (TaskStatus) (this.tasksStatus.get(code));
63
	}
62
    @Override
63
    synchronized public TaskStatus get(String code) {
64
        return (TaskStatus) (this.tasksStatus.get(code));
65
    }
64 66

  
65
	synchronized public void remove(String code) {
66
		this.tasksStatus.remove(code);
67
		this.update((TaskStatus) this.tasksStatus.get(code));
68
	}
67
    @Override
68
    synchronized public void remove(String code) {
69
        this.tasksStatus.remove(code);
70
        this.update((TaskStatus) this.tasksStatus.get(code));
71
    }
69 72

  
70
	synchronized public void remove(TaskStatus taskStatus) {
71
		this.tasksStatus.remove(taskStatus.getCode());
72
		this.update(null);
73
	}
73
    @Override
74
    synchronized public void remove(TaskStatus taskStatus) {
75
        this.tasksStatus.remove(taskStatus.getCode());
76
        this.update(null);
77
    }
74 78

  
75
	public String getNewCode() {
76
		return Long.toBinaryString(codeCounter++);
77
	}
79
    @Override
80
    public String getNewCode() {
81
        return Long.toBinaryString(codeCounter++);
82
    }
78 83

  
79
	synchronized public Map getAll() {
80
		return Collections.unmodifiableMap(this.tasksStatus);
81
	}
84
    @Override
85
    synchronized public Map getAll() {
86
        return Collections.unmodifiableMap(this.tasksStatus);
87
    }
82 88

  
83
	synchronized public void addObserver(Observer o) {
84
		this.observers.addObserver(o);
85
	}
89
    @Override
90
    synchronized public boolean isEmpty() {
91
        return this.tasksStatus.isEmpty();
92
    }
86 93

  
87
	synchronized public void deleteObserver(Observer o) {
88
		this.observers.deleteObserver(o);
89
	}
94
    @Override
95
    synchronized public void addObserver(Observer o) {
96
        this.observers.addObserver(o);
97
    }
90 98

  
91
	synchronized public void deleteObservers() {
92
		this.observers.deleteObservers();
93
	}
99
    @Override
100
    synchronized public void deleteObserver(Observer o) {
101
        this.observers.deleteObserver(o);
102
    }
94 103

  
95
	synchronized public void update(TaskStatus taskstatus) {
96
		if (taskstatus != null
97
				&& this.tasksStatus.get(taskstatus.getCode()) == null) {
98
			// This TaskStatus not is registered in this manager.
99
			return;
100
		}
101
		this.observers.notifyObservers(this, taskstatus);
102
		if (taskstatus != null) {
103
			if (!taskstatus.isRunning()) {
104
				if (taskstatus instanceof SimpleTaskStatus) {
105
					if (((SimpleTaskStatus) taskstatus).getAutoRemove()) {
106
						if (this.tasksStatus.size() > MAXTASKS_TO_AUTOREMOVE) {
107
							((SimpleTaskStatus) taskstatus).remove();
108
						}
109
					}
110
				}
111
			}
112
		}
113
	}
104
    @Override
105
    synchronized public void deleteObservers() {
106
        this.observers.deleteObservers();
107
    }
114 108

  
115
	public SimpleTaskStatus creteDefaultSimpleTaskStatus(String tittle) {
109
    @Override
110
    synchronized public void update(TaskStatus taskstatus) {
111
        if (taskstatus != null
112
                && this.tasksStatus.get(taskstatus.getCode()) == null) {
113
            // This TaskStatus not is registered in this manager.
114
            return;
115
        }
116
        this.observers.notifyObservers(this, taskstatus);
117
        if (taskstatus != null) {
118
            if (!taskstatus.isRunning()) {
119
                if (taskstatus instanceof SimpleTaskStatus) {
120
                    if (((SimpleTaskStatus) taskstatus).getAutoRemove()) {
121
                        if (this.tasksStatus.size() > MAXTASKS_TO_AUTOREMOVE) {
122
                            ((SimpleTaskStatus) taskstatus).remove();
123
                        }
124
                    }
125
                }
126
            }
127
        }
128
    }
129

  
130
    @Override
131
    public SimpleTaskStatus creteDefaultSimpleTaskStatus(String tittle) {
116 132
        return createDefaultSimpleTaskStatus(tittle);
117 133
    }
118 134

  
135
    @Override
119 136
    public SimpleTaskStatus createDefaultSimpleTaskStatus(String title) {
120 137
        return new BaseTaskStatus(title);
121
	}
138
    }
122 139

  
123
	synchronized public TaskStatus getRunningTaskStatusMostRecent() {
124
		TaskStatus mostRecent = null;
125
		Iterator taskStatusIterator = this.tasksStatus.values().iterator();
126
		while( taskStatusIterator.hasNext() ) {
127
			TaskStatus current = (TaskStatus) taskStatusIterator.next();
128
			if ( current.isRunning() ) {
129
				if( mostRecent==null || current.getLastModification().compareTo(mostRecent.getLastModification())>0 ) {
130
					mostRecent = current;
131
				}
132
			}
133
		}
134
		return mostRecent;
135
	}
140
    @Override
141
    synchronized public TaskStatus getRunningTaskStatusMostRecent() {
142
        TaskStatus mostRecent = null;
143
        Iterator taskStatusIterator = this.tasksStatus.values().iterator();
144
        while (taskStatusIterator.hasNext()) {
145
            TaskStatus current = (TaskStatus) taskStatusIterator.next();
146
            if (current.isRunning()) {
147
                if (mostRecent == null || current.getLastModification().compareTo(mostRecent.getLastModification()) > 0) {
148
                    mostRecent = current;
149
                }
150
            }
151
        }
152
        return mostRecent;
153
    }
136 154

  
137 155
}

Also available in: Unified diff