/* BookToTagMethodConsumer.java created 2007-10-23 * */ package org.signalml.app.method.booktotag; import java.awt.Window; import java.io.File; import java.io.IOException; import org.apache.log4j.Logger; import org.signalml.app.document.TagDocument; import org.signalml.app.method.ApplicationMethodManager; import org.signalml.app.method.InitializingMethodResultConsumer; import org.signalml.app.view.common.dialogs.OptionPane; import org.signalml.app.view.common.dialogs.errors.Dialogs; import org.signalml.app.view.workspace.ViewerFileChooser; import org.signalml.method.Method; import org.signalml.method.booktotag.BookToTagResult; import org.signalml.plugin.export.SignalMLException; /** BookToTagMethodConsumer * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class BookToTagMethodConsumer implements InitializingMethodResultConsumer { protected static final Logger logger = Logger.getLogger(BookToTagMethodConsumer.class); private Window dialogParent; private ViewerFileChooser fileChooser; @Override public void initialize(ApplicationMethodManager manager) { dialogParent = manager.getDialogParent(); fileChooser = manager.getFileChooser(); } @Override public boolean consumeResult(Method method, Object methodData, Object methodResult) throws SignalMLException { BookToTagResult result = (BookToTagResult) methodResult; TagDocument tagDocument = new TagDocument(result.getTagSet()); boolean hasFile = false; File saveFile; do { saveFile = fileChooser.chooseSaveTag(dialogParent); if (saveFile == null) { // file choice canceled break; } hasFile = true; // file exists warning if (saveFile.exists()) { int res = OptionPane.showFileAlreadyExists(dialogParent); if (res != OptionPane.OK_OPTION) { hasFile = false; } } } while (!hasFile); if (hasFile) { tagDocument.setBackingFile(saveFile); try { tagDocument.saveDocument(); } catch (SignalMLException ex) { logger.error("Failed to save document", ex); Dialogs.showExceptionDialog(dialogParent, ex); return false; } catch (IOException ex) { logger.error("Failed to save document - i/o exception", ex); Dialogs.showExceptionDialog(dialogParent, ex); return false; } } return true; } }