Witam,
Chciałbym wstrzymać proces by wykonać inne zadanie w programie (aktualizację do bazy). Co zrobić by proces był kontynuowany po wykonaniu danej operacji? Poniżej przedstawiam fragment programu odpowiedzialnego za proces i wydobycie danych z pliku html. Przykładowo program pobiera dane z pliku, wstrzymuje proces pobierania, ładuje wydobyte dane do bazy i np po wciśnięciu przycisku z komunikatu o zaktualizowaniu danych proces pobierania jest kontynuowany.
@FXML
public void aktualizuj(){
proces = aktualizujProces();
proces.messageProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
System.out.println(newValue);
}
});
new Thread(proces).start();
}
public Task aktualizujProces(){ return new Task() {
@Override
protected Object call() throws Exception {
try {
File dir = new File("Pliki");
Polaczenie lacz = new Polaczenie();
lista = lacz.LinkiDOI(imie, nazwisko);
int numer = 1;
try{
while(lista.next()){
ObservableList<String> row = FXCollections.observableArrayList();
for(int i = 1; i<=lista.getMetaData().getColumnCount();i++){
row.add(lista.getString(i));
}
String ldoi = row.toString();
String doi = ldoi.substring(1, ldoi.length()-1);
if(dir.isDirectory()){
String plik = "Pliki\\plik" + numer + imie + nazwisko + ".html";
try{
File daj_plik = new File(plik);
Platform.runLater(new Runnable() {
@Override
public void run() {
}
});
try{
opis = null;
Document doc = Jsoup.parse(daj_plik, "UTF-8", doi);
Elements links = doc.select("meta");
for (Element link : links) {
String description = link.attr("property");
if(linkHref.equals("description") || linkHref.equals("twitter:description") || description.equals("og:description"))
opis = linkText;
}
System.out.println("Opis: "+opis);
}finally{
daj_plik.deleteOnExit();
}
}catch(Exception e){
System.out.println("Dane nie zostały znalezione");
}
numer++;
updateProgress(numer-1, liczbaDOI);
dir.deleteOnExit();
}else{System.out.println("Blad");}
}
}catch(Exception e){
System.out.println("Anulowano");
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Skończone.");
proces.cancel(true);
return true;
}
};
}