package ciscoroutertool.gui; import ciscoroutertool.scanner.FullReport; import ciscoroutertool.scanner.ScanManager; import javax.swing.*; import java.util.concurrent.ExecutionException; import java.util.logging.Level; import java.util.logging.Logger; /** * Runs the scan and retrieves the full report * @version 0.01ALPHA * @author Andrew H. Johnston */ public class ScanLauncher extends SwingWorker<FullReport, Object> { /** * The GUI that will run the scan */ private final ScanLauncherParent parent; /** * The ScanManager for this scan */ private final ScanManager manager; /** * Initializes the ScanLauncher so it can be run * @param parent The GUI launching the ScanLauncher * @param manager The ScanManager that will be used */ public ScanLauncher(ScanLauncherParent parent, ScanManager manager) { this.parent = parent; this.manager = manager; } /** * Runs the scan and displays the waiting window * @return The Full Report from the scan * @throws Exception Any Exceptions found during scanning */ @Override protected FullReport doInBackground() throws Exception { parent.showPleaseWaitDialog(); return manager.run(); } /** * Cleans up everything once scan is completed */ @Override protected void done() { super.done(); parent.disposePleaseWaitDialog(); try { parent.displayReport(get()); } catch (InterruptedException | ExecutionException ex) { Logger.getLogger(ScanLauncher.class.getName()).log(Level.SEVERE, null, ex); } } }