package concurrent;
import javafx.concurrent.Task;
import java.util.List;
public class TravelToPortugal extends Task<TravelReport> {
private List<Leg> journey;
public TravelToPortugal(List<Leg> journey) {
this.journey = journey;
}
@Override
protected TravelReport call() throws Exception {
int legsCompleted = 0;
int totalNumberOfLegs = journey.size();
updateProgress(0, totalNumberOfLegs);
Leg lastLeg = null;
for (Leg leg : journey) {
if(isCancelled()){
break;
}
lastLeg = leg;
updateMessage("travel to "+ leg.destination);
leg.travel();
updateMessage("arrived in "+ leg.destination);
updateProgress(++legsCompleted, totalNumberOfLegs);
}
String destination = "we did not leave";
if( null !=lastLeg){
destination = lastLeg.destination;
}
return new TravelReport();
}
}