73 |
73 |
import com.iver.cit.gvsig.fmap.layers.SingleLayerIterator;
|
74 |
74 |
import com.iver.cit.gvsig.geoprocess.core.fmap.GeoprocessException;
|
75 |
75 |
import com.iver.cit.gvsig.geoprocess.core.fmap.XTypes;
|
76 |
|
import com.iver.cit.gvsig.geoprocess.core.gui.AddResultLayerTask;
|
77 |
76 |
import com.iver.cit.gvsig.graph.core.writers.NetworkFileRedWriter;
|
78 |
77 |
import com.iver.cit.gvsig.graph.core.writers.NetworkGvTableWriter;
|
79 |
78 |
import com.iver.cit.gvsig.graph.gui.wizard.NetWizard;
|
... | ... | |
85 |
84 |
import com.iver.utiles.SimpleFileFilter;
|
86 |
85 |
import com.iver.utiles.swing.threads.AbstractMonitorableTask;
|
87 |
86 |
import com.iver.utiles.swing.threads.IMonitorableTask;
|
88 |
|
import com.iver.utiles.swing.threads.MonitorableDecoratorMainFirst;
|
89 |
|
import com.iver.utiles.swing.threads.MonitorableTaskQueue;
|
|
87 |
import com.iver.utiles.swing.threads.IPipedTask;
|
|
88 |
import com.iver.utiles.swing.threads.PipeTask;
|
90 |
89 |
|
|
90 |
|
91 |
91 |
public class GenerateNetworkExtension extends Extension implements
|
92 |
92 |
IPreferenceExtension {
|
93 |
93 |
private static final IPreference thePreferencePage = new RoutePage();
|
... | ... | |
162 |
162 |
.getText(this, "done"));
|
163 |
163 |
}
|
164 |
164 |
|
165 |
|
class GenerateRedNetworkAfterCleanTask extends AbstractMonitorableTask {
|
166 |
|
IMonitorableTask cleanTask;
|
167 |
|
LineCleanGeoprocess cleanGeoprocess;
|
168 |
|
|
|
165 |
class GenerateRedNetworkAfterCleanTask
|
|
166 |
extends AbstractMonitorableTask implements IPipedTask{
|
|
167 |
|
169 |
168 |
File redFile;
|
170 |
|
|
171 |
169 |
NetworkFileRedWriter netBuilder;
|
172 |
170 |
|
|
171 |
FLyrVect inputLayer;
|
173 |
172 |
|
174 |
|
|
175 |
173 |
/**
|
176 |
174 |
* Constructor
|
177 |
175 |
*/
|
178 |
|
GenerateRedNetworkAfterCleanTask(FLyrVect layer, File redFile,
|
179 |
|
NetworkFileRedWriter netBuilder,
|
180 |
|
IMonitorableTask cleanTask, LineCleanGeoprocess geoprocess) {
|
|
176 |
GenerateRedNetworkAfterCleanTask(File redFile,
|
|
177 |
NetworkFileRedWriter netBuilder) {
|
181 |
178 |
this.redFile = redFile;
|
182 |
179 |
this.netBuilder = netBuilder;
|
183 |
|
this.cleanTask = cleanTask;
|
184 |
|
this.cleanGeoprocess = geoprocess;
|
185 |
180 |
setInitialStep(0);
|
186 |
181 |
setDeterminatedProcess(true);
|
187 |
182 |
setStatusMessage(PluginServices.getText(this,
|
... | ... | |
189 |
184 |
}
|
190 |
185 |
|
191 |
186 |
public void run() throws Exception {
|
192 |
|
//TODO Esto creo que no vale, porque estamos esperando a que el thread del CLEAN acabe
|
193 |
|
//y esto come mucho procesador
|
194 |
|
|
195 |
|
//Probar a crear un PluginServices.enqueue(Task1, Task2)
|
196 |
|
//de forma que el thread de la task2 se quede esperando al de la task1
|
197 |
|
|
198 |
|
while(! cleanTask.isFinished() || ! cleanTask.isCanceled()){
|
199 |
|
Thread.sleep(1000);
|
200 |
|
}
|
201 |
|
if(cleanTask.isCanceled())
|
202 |
|
return;
|
203 |
|
FLyrVect layer = (FLyrVect) cleanGeoprocess.getResult();
|
|
187 |
FLyrVect layer = null;
|
204 |
188 |
int numShapes;
|
205 |
189 |
try {
|
206 |
190 |
numShapes = layer.getSource().getShapeCount();
|
... | ... | |
229 |
213 |
public void cancel() {
|
230 |
214 |
setCanceled(true);
|
231 |
215 |
}
|
|
216 |
|
|
217 |
/* (non-Javadoc)
|
|
218 |
* @see com.iver.utiles.swing.threads.IPipedTask#getResult()
|
|
219 |
*/
|
|
220 |
public Object getResult() {
|
|
221 |
// TODO Auto-generated method stub
|
|
222 |
return null;
|
|
223 |
}
|
|
224 |
|
|
225 |
/* (non-Javadoc)
|
|
226 |
* @see com.iver.utiles.swing.threads.IPipedTask#setEntry(java.lang.Object)
|
|
227 |
*/
|
|
228 |
public void setEntry(Object object) {
|
|
229 |
inputLayer = (FLyrVect) object;
|
|
230 |
}
|
232 |
231 |
}
|
233 |
232 |
|
234 |
233 |
|
... | ... | |
283 |
282 |
public void cancel() {
|
284 |
283 |
setCanceled(true);
|
285 |
284 |
}
|
|
285 |
|
|
286 |
public Object getResult(){
|
|
287 |
return null;
|
|
288 |
|
|
289 |
}
|
|
290 |
public void setEntry(Object object){
|
|
291 |
this.layer = (FLyrVect) object;
|
|
292 |
}
|
286 |
293 |
}
|
287 |
294 |
|
288 |
295 |
/**
|
... | ... | |
400 |
407 |
if(clean != null){
|
401 |
408 |
//we wont start the process of network creation
|
402 |
409 |
//until clean geoprocess will be finished
|
403 |
|
IMonitorableTask cleanTask = clean.createTask();
|
|
410 |
IPipedTask cleanTask = (IPipedTask) clean.createTask();
|
404 |
411 |
GenerateRedNetworkAfterCleanTask task = new
|
405 |
|
GenerateRedNetworkAfterCleanTask(lyr, redFile,
|
406 |
|
netBuilder, cleanTask, clean );
|
407 |
|
PluginServices.cancelableBackgroundExecution(cleanTask);
|
408 |
|
PluginServices.cancelableBackgroundExecution(task);
|
|
412 |
GenerateRedNetworkAfterCleanTask(redFile, netBuilder);
|
409 |
413 |
|
|
414 |
PipeTask pipe = new PipeTask(cleanTask, (IPipedTask)task);
|
|
415 |
|
|
416 |
PluginServices.cancelableBackgroundExecution(pipe);
|
|
417 |
// PluginServices.cancelableBackgroundExecution(task);
|
|
418 |
|
410 |
419 |
}else{
|
411 |
420 |
GenerateRedNetworkTask task = new GenerateRedNetworkTask(lyr, redFile,
|
412 |
421 |
netBuilder);
|