package name.abuchen.portfolio.ui; import java.io.File; import java.io.FileNotFoundException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.e4.core.services.events.IEventBroker; import name.abuchen.portfolio.model.Client; import name.abuchen.portfolio.model.ClientFactory; public class LoadClientThread extends Thread { public interface Callback { void setClient(Client client); void setErrorMessage(String message); } private final IEventBroker broker; private final IProgressMonitor monitor; private final Callback callback; private final File file; private final char[] password; public LoadClientThread(IEventBroker broker, IProgressMonitor monitor, Callback callback, File file, char[] password) { this.broker = broker; this.monitor = monitor; this.callback = callback; this.file = file; this.password = password; } @Override public void run() { try { Client client = ClientFactory.load(file, password, monitor); callback.setClient(client); } catch (FileNotFoundException exception) { broker.post(UIConstants.Event.File.REMOVED, file.getAbsolutePath()); callback.setErrorMessage(exception.getMessage()); PortfolioPlugin.log(exception); } catch (Exception exception) { callback.setErrorMessage(exception.getMessage()); PortfolioPlugin.log(exception); } } }