package com.illumina.basespace.igv; import java.io.InputStream; import java.io.Reader; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.swing.SwingWorker; import com.illumina.basespace.ApiClient; import com.illumina.basespace.entity.File; import com.illumina.basespace.entity.FileCompact; import com.illumina.basespace.file.DownloadEvent; import com.illumina.basespace.file.DownloadListener; import com.illumina.basespace.igv.ui.ProgressReport; import com.illumina.basespace.igv.ui.tree.BrowserDialog; public class BaseSpaceUtil { private static final Logger log = Logger.getLogger(BaseSpaceUtil.class.getPackage().getName()); public static FileCompact findFile(String name, List<FileCompact> files) { for (FileCompact file : files) { if (file.getName().equalsIgnoreCase(name)) { return file; } } return null; } public static double bytesToMb(double bytes) { return bytes/BaseSpaceConstants.MB; } public static void dispose(InputStream is) { if (is != null) { try{is.close();}catch(Throwable t){} } } public static void dispose(Reader r) { if (r != null) { try{r.close();}catch(Throwable t){} } } public static void downloadFile(final ApiClient client,final File file,final java.io.File localFile) { BrowserDialog.instance().workInit((double)file.getSize()); SwingWorker<Boolean,ProgressReport> worker = new SwingWorker<Boolean,ProgressReport>() { @Override protected Boolean doInBackground() throws Exception { client.download(file,localFile, new DownloadListener() { @Override public void progress(DownloadEvent evt) { long bytes = evt.getCurrentBytes(); List<ProgressReport>progress = new ArrayList<ProgressReport>(); progress.add(new ProgressReport(file.getName() + " " + bytes + " of " + evt.getTotalBytes(),bytes)); publish(progress.toArray(new ProgressReport[progress.size()])); } @Override public void complete(DownloadEvent evt) { } @Override public void canceled(DownloadEvent evt) { } }); return true; } @Override protected void process(List<ProgressReport> chunks) { BrowserDialog.instance().workProgress(chunks); } @Override protected void done() { BrowserDialog.instance().workDone(); } }; BrowserDialog.instance().workStart(); worker.execute(); try { worker.get(); } catch (Throwable e) { } } }