package download; import java.io.*; import javafx.application.*; import javafx.concurrent.*; import model.*; import org.apache.http.*; import org.apache.http.client.methods.*; import org.apache.http.protocol.*; import org.apache.log4j.*; import view.*; import control.*; public class IliasFileDownloaderTask extends Task<Void> { private HttpGet request; private HttpResponse response; private BasicHttpContext context; private HttpEntity entity; private IliasFile file; private String targetPath; protected IliasFileDownloaderTask(IliasFile file, String targetPath) { this.file = file; this.targetPath = targetPath; } @Override protected Void call() throws Exception { try { request = new HttpGet(file.getUrl()); response = IliasManager.getInstance().getIliasClient().execute(request, context); entity = response.getEntity(); BufferedInputStream in = new BufferedInputStream(entity.getContent()); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File( targetPath))); int inByte; while ((inByte = in.read()) != -1) { out.write(inByte); } in.close(); out.close(); request.releaseConnection(); } catch (IOException e) { Logger.getLogger(getClass()).warn("", e); } LocalFileStorage.getInstance().addIliasFile(file, targetPath); Platform.runLater(new Runnable() { @Override public void run() { Dashboard.fileDownloaded(file); } }); return null; } }