http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileManager.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileManager.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileManager.java deleted file mode 100644 index 299cdad..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileManager.java +++ /dev/null @@ -1,573 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file; - -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.List; - -import javax.swing.filechooser.FileFilter; - -import org.apache.taverna.lang.observer.Observable; -import org.apache.taverna.lang.observer.Observer; -import net.sf.taverna.t2.workbench.file.events.ClosedDataflowEvent; -import net.sf.taverna.t2.workbench.file.events.FileManagerEvent; -import net.sf.taverna.t2.workbench.file.events.OpenedDataflowEvent; -import net.sf.taverna.t2.workbench.file.events.SavedDataflowEvent; -import net.sf.taverna.t2.workbench.file.exceptions.OpenException; -import net.sf.taverna.t2.workbench.file.exceptions.OverwriteException; -import net.sf.taverna.t2.workbench.file.exceptions.SaveException; -import net.sf.taverna.t2.workbench.file.exceptions.UnsavedException; -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** - * Manager of open files (WorkflowBundleBundles) in the workbench. - * <p> - * A {@link WorkflowBundle} can be opened for the workbench using - * {@link #openDataflow(FileType, Object)} or {@link #openDataflow(WorkflowBundle)}. - * {@link Observer}s of the FileManager gets notified with an - * {@link OpenedDataflowEvent}. The opened workflow is also - * {@link #setCurrentDataflow(WorkflowBundle) made the current dataflow}, available - * through {@link #getCurrentDataflow()} or by observing the - * {@link net.sf.taverna.t2.lang.ui.ModelMap} for the model name - * {@link net.sf.taverna.t2.workbench.ModelMapConstants#CURRENT_DATAFLOW}. - * <p> - * A dataflow can be saved using - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)}. Observers will be - * presented a {@link SavedDataflowEvent}. - * <p> - * If a dataflow was previously opened from a saveable destination or previously - * saved using {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)}, - * {@link #saveDataflow(WorkflowBundle, boolean)} can be used to resave to that - * destination. - * <p> - * You can get the last opened/saved source and type using - * {@link #getDataflowSource(WorkflowBundle)} and {@link #getDataflowType(WorkflowBundle)}. - * <p> - * If the save methods are used with failOnOverwrite=true, an - * {@link OverwriteException} will be thrown if the destination file already - * exists and was not last written by a previous save on that dataflow. (This is - * typically checked using timestamps on the file). - * <p> - * A dataflow can be closed using {@link #closeDataflow(WorkflowBundle, boolean)}. A - * closed dataflow is no longer monitored for changes and can no longer be used - * with the other operations, except {@link #openDataflow(WorkflowBundle)}. - * <p> - * If a dataflow has been changed using the {@link EditManager}, - * {@link #isDataflowChanged(WorkflowBundle)} will return true until the next save. If - * the close methods are used with failOnUnsaved=true, an - * {@link UnsavedException} will be thrown if the dataflow has been changed. - * <p> - * The implementation of this interface is an OSGi Service. - * - * @author Stian Soiland-Reyes - */ -public interface FileManager extends Observable<FileManagerEvent> { - /** - * True if {@link #saveDataflow(WorkflowBundle, boolean)} can save the - * workflow, i.e., that there exists an SPI implementation of - * {@link DataflowPersistenceHandler} that can save to - * {@link #getDataflowSource(WorkflowBundle)} using - * {@link #getDataflowType(WorkflowBundle)}. - * - * @see #saveDataflow(WorkflowBundle, boolean) - * @param dataflow - * The dataflow to check - * @return <code>true</code> if the given dataflow can be saved without - * providing a destination and filetype - */ - boolean canSaveWithoutDestination(WorkflowBundle dataflow); - - /** - * Close the specified dataflow. - * <p> - * A closed dataflow can no longer be used with the save methods, and will - * disappear from the UI's list of open dataflows. - * <p> - * If no more dataflows would be open after the close, a new empty dataflow - * is opened as through {@link #newDataflow()}. - * <p> - * If the failOnUnsaved parameters is <code>true</code>, and - * {@link #isDataflowChanged(WorkflowBundle)} is <code>true</code>, an - * {@link UnsavedException} will be thrown, typically because the workflow - * has been changed using the {@link EditManager} since the last change. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link ClosedDataflowEvent}. - * - * @param dataflow - * {@link WorkflowBundle} to close - * @param failOnUnsaved - * If <code>true</code>, fail on unsaved changes - * @throws UnsavedException - * If failOnUnsaved was <code>true</code> and there has been - * changes to the dataflow since the last save - */ - boolean closeDataflow(WorkflowBundle dataflow, boolean failOnUnsaved) - throws UnsavedException; - - /** - * Get the current dataflow. - * <p> - * The current workflow is typically the one currently showed on the screen, - * and is also in {@link #getOpenDataflows()}. - * <p> - * The current dataflow is set through {@link #setCurrentDataflow(WorkflowBundle)} - * or the {@link net.sf.taverna.t2.lang.ui.ModelMap} using the key - * {@link net.sf.taverna.t2.workbench.ModelMapConstants#CURRENT_DATAFLOW}. - * - * @return The current dataflow, or <code>null</code> if no dataflow is - * current - */ - WorkflowBundle getCurrentDataflow(); - - /** - * Get the dataflow that was opened from or last saved to the given source. - * - * @param source - * The source as opened with or saved to - * {@link #openDataflow(FileType, Object)} - * @return The opened {@link WorkflowBundle} or <code>null</code> if no matching - * dataflow found. - */ - WorkflowBundle getDataflowBySource(Object source); - - /** - * Get a name to represent this dataflow. - * <p> - * The name will primarily be deduced from the source of where the workflow - * is opened from, unless {@link Object#toString()} is not overridden (for - * instance opened from an InputStream) or if the source is unknown, in - * which case the dataflow's internal name {@link WorkflowBundle#getName()} - * is returned. - * <p> - * The returned name can be used in listings like the WorkflowBundles menu, but is - * not guaranteed to be unique. (For instance a workflow could be opened - * twice from the same source). - * - * @param dataflow - * WorkflowBundle to get the name for - * @return The deduced workflow name - */ - String getDataflowName(WorkflowBundle dataflow); - - /** - * Returns the default name to use when creating new workflows. - * - * @return the default name to use when creating new workflows - */ - String getDefaultWorkflowName(); - - /** - * Get the last opened/saved source/destination for the given dataflow. - * <p> - * The source is the last source used with - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)} for the given - * dataflow, or {@link #openDataflow(FileType, Object)} if it has not yet - * been saved. - * <p> - * If the given dataflow's last opened/saved location was unknown (opened - * with {@link #newDataflow()} or {@link #openDataflow(WorkflowBundle)}), return - * <code>null</code>. - * - * @param dataflow - * {@link WorkflowBundle} which file is to be returned - * @return The last opened/saved source for the given dataflow, or - * <code>null</code> if unknown. - */ - Object getDataflowSource(WorkflowBundle dataflow); - - /** - * Get the last opened/saved source/destination FileType for the given - * dataflow. - * <p> - * The type is the last {@link FileType} used with - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)} for the given - * dataflow, or {@link #openDataflow(FileType, Object)} if it has not yet - * been saved. - * <p> - * If the given dataflow's last opened/saved file type was unknown (opened - * with {@link #newDataflow()} or {@link #openDataflow(WorkflowBundle)}), return - * <code>null</code>. - * - * @param dataflow - * {@link WorkflowBundle} which file is to be returned - * @return The last opened/saved {@link FileType} for the given dataflow, or - * <code>null</code> if unknown. - */ - FileType getDataflowType(WorkflowBundle dataflow); - - /** - * Get the list of currently open dataflows. This list of dataflows are - * typically displayed in the UI in the "WorkflowBundles" menu to allow switching - * the {@link #getCurrentDataflow() current dataflow}. - * - * @return A copy of the {@link List} of open {@link WorkflowBundle}s - */ - List<WorkflowBundle> getOpenDataflows(); - - /** - * Get a list of {@link FileFilter}s for supported {@link FileType}s that - * can be opened with any source class. - * - * @return A {@link List} of {@link FileFilter}s supported by - * {@link #openDataflow(FileType, Object)} - */ - List<FileFilter> getOpenFileFilters(); - - /** - * Get a list of {@link FileFilter}s for supported {@link FileType}s that - * can be opened with given source class. - * - * @param sourceClass - * Source class that can be opened from - * @return A {@link List} of {@link FileFilter}s supported by - * {@link #openDataflow(FileType, Object)} - */ - List<FileFilter> getOpenFileFilters(Class<?> sourceClass); - - /** - * Get a list of {@link FileFilter}s for supported {@link FileType}s that - * can be saved to any destination class. - * - * @return A {@link List} of {@link FileFilter}s supported by - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)} - */ - List<FileFilter> getSaveFileFilters(); - - /** - * Get a list of {@link FileFilter}s for supported {@link FileType}s that - * can be saved to the given destination class. - * - * @param destinationClass - * Destination class that can be saved to - * @return A {@link List} of {@link FileFilter}s supported by - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)} - */ - List<FileFilter> getSaveFileFilters(Class<?> destinationClass); - - /** - * Return <code>true</code> if the dataflow has been changed (through the - * {@link EditManager} or {@link #setDataflowChanged(WorkflowBundle, boolean)}) - * since last save. - * - * @param dataflow - * WorkflowBundle which changed status is to be checked - * @return <code>true</code> if the dataflow has been changed since last - * save. - */ - boolean isDataflowChanged(WorkflowBundle dataflow); - - /** - * True if the given dataflow has been opened and is in - * {@link #getOpenDataflows()}. - * - * @param dataflow - * Dataflow to check - * @return <code>true</code> if dataflow is open - */ - boolean isDataflowOpen(WorkflowBundle dataflow); - - /** - * Create and open a new, blank dataflow. The dataflow will not initially be - * marked as changed. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link OpenedDataflowEvent}. - * <p> - * Note, if the dataflow is later changed, it will not be possible to save - * it to any original location using - * {@link #saveDataflow(WorkflowBundle, boolean)}, only - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)}. - * - * @return The newly opened blank {@link WorkflowBundle} - */ - WorkflowBundle newDataflow(); - - /** - * Open a {@link WorkflowBundle} instance that has been created outside the - * {@link FileManager}. The dataflow will not initially be marked as - * changed. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link OpenedDataflowEvent}. - * <p> - * Note, if the dataflow is later changed, it will not be possible to save - * it to its original location using - * {@link #saveDataflow(WorkflowBundle, boolean)}, only - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)}. - * <p> - * Instead of using this option it is recommended to create your own - * {@link FileType} and/or source type and a - * {@link DataflowPersistenceHandler} to implement save and/or reopen - * (revert). - * <p> - * If there is only one workflow open before opening this workflow, and it - * is an unchanged blank workflow, the blank workflow will be closed. - * - * @param dataflow - * {@link WorkflowBundle} instance that is to be added as an open - * dataflow - */ - void openDataflow(WorkflowBundle dataflow); - - /** - * Open a dataflow from a source. The dataflow will not initially be marked - * as changed, and will be set as the new current workflow. - * <p> - * The file manager will find implementations of the SPI - * {@link DataflowPersistenceHandler} to perform the opening for the given file - * type and destination class. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link OpenedDataflowEvent}. - * <p> - * If there is only one workflow open before opening this workflow, and it - * is an unchanged blank workflow, the blank workflow will be closed. - * - * @param fileType - * The filetype, for instance - * {@link net.sf.taverna.t2.workbench.file.impl.T2FlowFileType}. - * The file type must be supported by an implementation of the - * SPI DataflowPersistenceHandler. - * @param source - * The source, for instance a {@link File} or {@link URL}. The - * source type must be supported by an implementation of - * DataflowPersistenceHandler. - * @return The opened {@link WorkflowBundle}. - * @throws OpenException - * If there was no matching DataflowPersistenceHandler found or - * the source could not be opened for any other reason, such as - * IO errors or syntax errors. - */ - WorkflowBundle openDataflow(FileType fileType, Object source) - throws OpenException; - - /** - * Open a dataflow from a source silently. The dataflow will not be listed - * as open, and will not be made the current workflow. - * <p> - * The file manager will find implementations of the SPI - * {@link DataflowPersistenceHandler} to perform the opening for the given file - * type and destination class. - * <p> - * Listeners will <strong>not</strong> be notified. - * - * @param fileType - * The filetype, for instance - * {@link net.sf.taverna.t2.workbench.file.impl.T2FlowFileType}. - * The file type must be supported by an implementation of the - * SPI DataflowPersistenceHandler. - * @param source - * The source, for instance a {@link File} or {@link URL}. The - * source type must be supported by an implementation of - * DataflowPersistenceHandler. - * @return The {@link DataflowInfo} describing the opened dataflow. - * @throws OpenException - * If there was no matching DataflowPersistenceHandler found or - * the source could not be opened for any other reason, such as - * IO errors or syntax errors. - */ - DataflowInfo openDataflowSilently(FileType fileType, Object source) - throws OpenException; - - /** - * Save the dataflow to the last saved destination and FileType from - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)} or the last - * opened source and FileType from {@link #openDataflow(FileType, Object)}. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link SavedDataflowEvent}. - * - * @param dataflow - * Dataflow to save. Dataflow must have been opened with - * {@link #openDataflow(FileType, Object)} or saved using - * {@link #saveDataflow(WorkflowBundle, FileType, Object, boolean)}. - * @param failOnOverwrite - * If <code>true</code>, an {@link OverwriteException} is thrown - * if a save would overwrite the destination because it has been - * changed since last open/save. - * @throws OverwriteException - * if failOnOverwrite was true, and a save would overwrite the - * destination because it has been changed since last open/save. - * The save was not performed. - * @throws SaveException - * If any other error occurs during saving, including the case - * that a dataflow is not connected to a source or destination, - * that there are no handlers (some source types can't be saved - * to, such as HTTP URLs), or any other IO error occurring while - * saving. - */ - void saveDataflow(WorkflowBundle dataflow, boolean failOnOverwrite) - throws SaveException, OverwriteException; - - /** - * Save the dataflow to the given destination using the given filetype. - * <p> - * The file manager will find implementations of the SPI - * {@link DataflowPersistenceHandler} to perform the save for the given file - * type and destination class. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link SavedDataflowEvent}. - * - * @param dataflow - * {@link Dataflow} to be saved - * @param fileType - * {@link FileType} to save dataflow as, for instance - * {@link net.sf.taverna.t2.workbench.file.impl.T2FlowFileType}. - * The file type must be supported by an SPI implementation of - * {@link DataflowPersistenceHandler}. - * @param destination - * Destination to save dataflow to, for instance a {@link File} - * @param failOnOverwrite - * If <code>true</code>, an {@link OverwriteException} is thrown - * if a save would overwrite the destination because it already - * exists, but was not opened or save to using the file manager - * for the given dataflow. (ie. a repeated call to this function - * should not throw an OverwriteException unless someone outside - * has modified the file) - * @throws OverwriteException - * if failOnOverwrite was true, and a save would overwrite the - * destination because it already existed, and was not last - * written to by a previous save. The save was not performed. - * @throws SaveException - * If any other error occurs during saving, including the case - * that a dataflow is not connected to a source or destination, - * that there are no handlers (some source types can't be saved - * to, such as HTTP URLs), or any other IO error occurring while - * saving. - */ - void saveDataflow(WorkflowBundle dataflow, FileType fileType, - Object destination, boolean failOnOverwrite) throws SaveException, - OverwriteException; - - /** - * Silently save the dataflow to the given destination using the given - * filetype. - * <p> - * The file manager will find implementations of the SPI - * {@link DataflowPersistenceHandler} to perform the save for the given file - * type and destination class. - * <p> - * Listeners will <strong>not</strong> be notified, and the dataflow does - * not previously have to be opened. getDataflowSource(), - * isDataflowChanged() etc will not be affected - as if the silent save - * never happened. - * - * @param dataflow - * {@link WorkflowBundle} to be saved - * @param fileType - * {@link FileType} to save dataflow as, for instance - * {@link net.sf.taverna.t2.workbench.file.impl.T2FlowFileType}. - * The file type must be supported by an SPI implementation of - * {@link DataflowPersistenceHandler}. - * @param destination - * Destination to save dataflow to, for instance a {@link File} - * @param failOnOverwrite - * If <code>true</code>, an {@link OverwriteException} is thrown - * if a save would overwrite the destination because it already - * exists, but was not opened or save to using the file manager - * for the given dataflow. (ie. a repeated call to this function - * should not throw an OverwriteException unless someone outside - * has modified the file) - * @return The {@link DataflowInfo} describing where the workflow was saved - * @throws OverwriteException - * if failOnOverwrite was true, and a save would overwrite the - * destination because it already existed, and was not last - * written to by a previous save. The save was not performed. - * @throws SaveException - * If any other error occurs during saving, including the case - * that a dataflow is not connected to a source or destination, - * that there are no handlers (some source types can't be saved - * to, such as HTTP URLs), or any other IO error occurring while - * saving. - */ - DataflowInfo saveDataflowSilently(WorkflowBundle dataflow, FileType fileType, - Object destination, boolean failOnOverwrite) throws SaveException, - OverwriteException; - - /** - * Set the current dataflow to the one provided. - * <p> - * The current dataflow can be retrieved using {@link #getCurrentDataflow()} - * . Note that opening a dataflow will normally also set it as the current - * dataflow. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link SetCurrentDataflowEvent}. - * <p> - * Note, the dataflow must already be open. If this is not the case, use one - * of the openDataflow() methods or - * {@link #setCurrentDataflow(WorkflowBundle, boolean)}. - * - * @see #setCurrentDataflow(WorkflowBundle, boolean) - * @param dataflow - * {@link WorkflowBundle} to be made current - */ - void setCurrentDataflow(WorkflowBundle dataflow); - - /** - * Set the current dataflow to the one provided. - * <p> - * The current dataflow can be retrieved using {@link #getCurrentDataflow()} - * . Note that opening a dataflow will normally also set it as the current - * dataflow. - * <p> - * Listeners registered using {@link Observable#addObserver(Observer)} will - * be notified with an {@link SetCurrentDataflowEvent}. - * <p> - * Unless <code>openIfNeeded</code> is <code>true</code>, the dataflow must - * already be open. - * - * @see #setCurrentDataflow(WorkflowBundle, boolean) - * @param dataflow - * {@link WorkflowBundle} to be made current - * @param openIfNeeded - * If <code>true</code>, open the dataflow if needed - */ - void setCurrentDataflow(WorkflowBundle dataflow, boolean openIfNeeded); - - /** - * Set a dataflow as changed or not. This changes the value returned by - * {@link #isDataflowChanged(WorkflowBundle)}. - * <p> - * This method can be used if the dataflow has been changed outside the - * {@link EditManager}. - * - * @param dataflow - * Dataflow which is to be marked - * @param isChanged - * <code>true</code> if the dataflow is to be marked as changed, - * <code>false</code> if it is to be marked as not changed. - */ - void setDataflowChanged(WorkflowBundle dataflow, boolean isChanged); - - /** - * Returns the canonical form of the source where the dataflow was opened - * from or saved to. The code for this method was devised based on - * {@link net.sf.taverna.t2.workbench.file.impl.T2DataflowOpener#openDataflow(FileType fileType, Object source)}. - */ - Object getCanonical(Object source) throws IllegalArgumentException, - URISyntaxException, IOException; -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileType.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileType.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileType.java deleted file mode 100644 index 001d82c..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/FileType.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file; - -/** - * A filetype to identify a way to (de)serialise a {@link WorkflowBundle} with - * the {@link FileManager}. - * <p> - * Two filetypes are considered equal if they share an extension or mime type or - * are the same instance. - * - * @see net.sf.taverna.t2.workbench.file.impl.WorkflowBundleFileType - * @author Stian Soiland-Reyes - */ -public abstract class FileType { - public abstract String getExtension(); - - public abstract String getMimeType(); - - public abstract String getDescription(); - - /** - * {@inheritDoc} - */ - @Override - public boolean equals(Object obj) { - if (obj == this) - return true; - if (!(obj instanceof FileType)) - return false; - FileType other = (FileType) obj; - if (getMimeType() != null && other.getMimeType() != null) - return getMimeType().equalsIgnoreCase(other.getMimeType()); - if (getExtension() != null && other.getExtension() != null) - return getExtension().equalsIgnoreCase(other.getExtension()); - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public int hashCode() { - int hash = 7; - hash = 31 * hash + getExtension().hashCode(); - hash = 31 * hash + getMimeType().hashCode(); - return hash; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/AbstractDataflowEvent.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/AbstractDataflowEvent.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/AbstractDataflowEvent.java deleted file mode 100644 index 26e697e..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/AbstractDataflowEvent.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.events; - -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** - * Abstract FileManagerEvent that relates to a {@link WorkflowBundle} - * - * @see AbstractDataflowEvent - * @see ClosedDataflowEvent - * @see OpenedDataflowEvent - * @see SavedDataflowEvent - * @see SetCurrentDataflowEvent - * @author Stian Soiland-Reyes - */ -public abstract class AbstractDataflowEvent extends FileManagerEvent { - private final WorkflowBundle workflowBundle; - - public AbstractDataflowEvent(WorkflowBundle workflowBundle) { - this.workflowBundle = workflowBundle; - } - - public WorkflowBundle getDataflow() { - return workflowBundle; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosedDataflowEvent.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosedDataflowEvent.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosedDataflowEvent.java deleted file mode 100644 index 9df5b7c..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosedDataflowEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.events; - -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** - * {@link FileManagerEvent} that means a {@link WorkflowBundle} has been closed. - * - * @author Stian Soiland-Reyes - */ -public class ClosedDataflowEvent extends AbstractDataflowEvent { - public ClosedDataflowEvent(WorkflowBundle workflowBundle) { - super(workflowBundle); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosingDataflowEvent.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosingDataflowEvent.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosingDataflowEvent.java deleted file mode 100644 index 62f16eb..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/ClosingDataflowEvent.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.events; - -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** - * {@link FileManagerEvent} that means a {@link WorkflowBundle} is being closed. - * <i>This event is abortable;</i> if aborted, the close will not occur. - * - * @author Alan R Williams - */ -public class ClosingDataflowEvent extends AbstractDataflowEvent { - private boolean abortClose = false; - - public boolean isAbortClose() { - return abortClose; - } - - public void setAbortClose(boolean abortClose) { - this.abortClose = abortClose; - } - - public ClosingDataflowEvent(WorkflowBundle workflowBundle) { - super(workflowBundle); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/FileManagerEvent.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/FileManagerEvent.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/FileManagerEvent.java deleted file mode 100644 index df44b16..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/FileManagerEvent.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.events; - -import org.apache.taverna.lang.observer.Observable; -import net.sf.taverna.t2.workbench.file.FileManager; - -/** - * An event given to {@link FileManager} observers registered using - * {@link Observable#addObserver(net.sf.taverna.t2.lang.observer.Observer)}. - * - * @see AbstractDataflowEvent - * @see ClosedDataflowEvent - * @see OpenedDataflowEvent - * @see SavedDataflowEvent - * @see SetCurrentDataflowEvent - * @author Stian Soiland-Reyes - */ -public class FileManagerEvent { - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/OpenedDataflowEvent.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/OpenedDataflowEvent.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/OpenedDataflowEvent.java deleted file mode 100644 index eb5492c..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/OpenedDataflowEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.events; - -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** - * {@link FileManagerEvent} that means a dataflow has been opened - * - * @author Stian Soiland-Reyes - */ -public class OpenedDataflowEvent extends AbstractDataflowEvent { - public OpenedDataflowEvent(WorkflowBundle workflowBundle) { - super(workflowBundle); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SavedDataflowEvent.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SavedDataflowEvent.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SavedDataflowEvent.java deleted file mode 100644 index be70485..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SavedDataflowEvent.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.events; - -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** - * {@link FileManagerEvent} that means a {@link WorkflowBundle} has been saved. - * - * @author Stian Soiland-Reyes - */ -public class SavedDataflowEvent extends AbstractDataflowEvent { - public SavedDataflowEvent(WorkflowBundle workflowBundle) { - super(workflowBundle); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SetCurrentDataflowEvent.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SetCurrentDataflowEvent.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SetCurrentDataflowEvent.java deleted file mode 100644 index 993c844..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/events/SetCurrentDataflowEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.events; - -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** - * {@link FileManagerEvent} that means a {@link WorkflowBundle} has been made - * current. - * - * @author Stian Soiland-Reyes - */ -public class SetCurrentDataflowEvent extends AbstractDataflowEvent { - public SetCurrentDataflowEvent(WorkflowBundle workflowBundle) { - super(workflowBundle); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/FileException.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/FileException.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/FileException.java deleted file mode 100644 index a2cb9ce..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/FileException.java +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.exceptions; - -import net.sf.taverna.t2.workbench.file.FileManager; - -/** - * Superclass of exceptions thrown by the {@link FileManager}. - */ -@SuppressWarnings("serial") -public class FileException extends Exception { - public FileException() { - } - - public FileException(String message) { - super(message); - } - - public FileException(Throwable cause) { - super(cause); - } - - public FileException(String message, Throwable cause) { - super(message, cause); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OpenException.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OpenException.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OpenException.java deleted file mode 100644 index 057679b..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OpenException.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.exceptions; - -/** Indicate that something went wrong during opening a file */ -@SuppressWarnings("serial") -public class OpenException extends FileException { - public OpenException() { - } - - public OpenException(String message) { - super(message); - } - - public OpenException(Throwable cause) { - super(cause); - } - - public OpenException(String message, Throwable cause) { - super(message, cause); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OverwriteException.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OverwriteException.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OverwriteException.java deleted file mode 100644 index 6d410a3..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/OverwriteException.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.exceptions; - -/** Indicate that something could not be overwritten. */ -@SuppressWarnings("serial") -public class OverwriteException extends SaveException { - private final Object destination; - - public OverwriteException(Object destination) { - super("Save would overwrite existing destination " + destination); - this.destination = destination; - } - - public Object getDestination() { - return destination; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/SaveException.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/SaveException.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/SaveException.java deleted file mode 100644 index 8c4266f..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/SaveException.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.exceptions; - -/** Indicate that a workflow could not be saved. */ -@SuppressWarnings("serial") -public class SaveException extends FileException { - public SaveException() { - } - - public SaveException(String message) { - super(message); - } - - public SaveException(Throwable cause) { - super(cause); - } - - public SaveException(String message, Throwable cause) { - super(message, cause); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/UnsavedException.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/UnsavedException.java b/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/UnsavedException.java deleted file mode 100644 index 1bc6767..0000000 --- a/taverna-file-api/src/main/java/net/sf/taverna/t2/workbench/file/exceptions/UnsavedException.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.file.exceptions; - -import org.apache.taverna.scufl2.api.container.WorkflowBundle; - -/** Indicate that a workflow bundle is not saved. */ -@SuppressWarnings("serial") -public class UnsavedException extends FileException { - private final WorkflowBundle workflowBundle; - - public UnsavedException(WorkflowBundle workflowBundle) { - super("WorkflowBundle was not saved: " + workflowBundle); - this.workflowBundle = workflowBundle; - } - - public WorkflowBundle getDataflow() { - return workflowBundle; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/AbstractDataflowPersistenceHandler.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/AbstractDataflowPersistenceHandler.java b/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/AbstractDataflowPersistenceHandler.java new file mode 100644 index 0000000..71a3c12 --- /dev/null +++ b/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/AbstractDataflowPersistenceHandler.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (C) 2007 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + ******************************************************************************/ +package org.apache.taverna.workbench.file; + +import java.util.Collections; +import java.util.List; + +import org.apache.taverna.workbench.file.exceptions.OpenException; +import org.apache.taverna.workbench.file.exceptions.SaveException; +import org.apache.taverna.scufl2.api.container.WorkflowBundle; + +public abstract class AbstractDataflowPersistenceHandler implements + DataflowPersistenceHandler { + @Override + public List<FileType> getOpenFileTypes() { + return Collections.emptyList(); + } + + @Override + public List<FileType> getSaveFileTypes() { + return Collections.emptyList(); + } + + @Override + public List<Class<?>> getOpenSourceTypes() { + return Collections.emptyList(); + } + + @Override + public List<Class<?>> getSaveDestinationTypes() { + return Collections.emptyList(); + } + + @Override + public DataflowInfo openDataflow(FileType fileType, Object source) + throws OpenException { + throw new UnsupportedOperationException(); + } + + @Override + public DataflowInfo saveDataflow(WorkflowBundle workflowBundle, FileType fileType, + Object destination) throws SaveException { + throw new UnsupportedOperationException(); + } + + @Override + public boolean wouldOverwriteDataflow(WorkflowBundle workflowBundle, FileType fileType, + Object destination, DataflowInfo lastDataflowInfo) { + throw new UnsupportedOperationException(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowInfo.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowInfo.java b/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowInfo.java new file mode 100644 index 0000000..b841aa9 --- /dev/null +++ b/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowInfo.java @@ -0,0 +1,108 @@ +/******************************************************************************* + * Copyright (C) 2007 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + ******************************************************************************/ +package org.apache.taverna.workbench.file; + +import java.util.Date; + +import org.apache.taverna.scufl2.api.container.WorkflowBundle; + +/** + * Information about a WorkflowBundle that has been opened by the + * {@link FileManager}. + * <p> + * This class, or a subclass of it, is used by + * {@link DataflowPersistenceHandler}s to keep information about where a + * {@link WorkflowBundle} came from or where it was saved to. + * + * @author Stian Soiland-Reyes + */ +public class DataflowInfo { + private final FileType fileType; + private final WorkflowBundle worflowBundle; + private final Date lastModified; + private final Object canonicalSource; + + public DataflowInfo(FileType fileType, Object canonicalSource, + WorkflowBundle worflowBundle, Date lastModified) { + this.fileType = fileType; + this.canonicalSource = canonicalSource; + this.worflowBundle = worflowBundle; + this.lastModified = lastModified; + } + + public DataflowInfo(FileType fileType, Object canonicalSource, + WorkflowBundle worflowBundle) { + this(fileType, canonicalSource, worflowBundle, null); + } + + /** + * Return the canonical source of where the WorkflowBundle was opened from + * or saved to. + * <p> + * This is not necessarily the source provided to + * {@link FileManager#openDataflow(FileType, Object)} or + * {@link FileManager#saveDataflow(WorkflowBundle, FileType, Object, boolean)} + * , but it's canonical version. + * <p> + * For instance, if a WorkflowBundle was opened from a + * File("relative/something.wfbundle) this canonical source would resolve + * the relative path. + * + * @return + */ + public Object getCanonicalSource() { + return canonicalSource; + } + + /** + * Return the WorkflowBundle that is open. + * + * @return The open WorkflowBundle + */ + public WorkflowBundle getDataflow() { + return worflowBundle; + } + + /** + * Get the last modified {@link Date} of the source at the time when it was + * opened/saved. + * <p> + * It is important that this value is checked on creation time, and not on + * demand. + * + * @return The {@link Date} of the source/destination's last modified + * timestamp, or <code>null</code> if unknown. + */ + public Date getLastModified() { + return lastModified; + } + + /** + * The {@link FileType} of this {@link WorkflowBundle} serialisation used + * for opening/saving. + * + * @return The {@link FileType}, for instance + * {@link net.sf.taverna.t2.workbench.file.impl.WorkflowBundleFileType} + */ + public FileType getFileType() { + return fileType; + } +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowPersistenceHandler.java ---------------------------------------------------------------------- diff --git a/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowPersistenceHandler.java b/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowPersistenceHandler.java new file mode 100644 index 0000000..b3cc260 --- /dev/null +++ b/taverna-file-api/src/main/java/org/apache/taverna/workbench/file/DataflowPersistenceHandler.java @@ -0,0 +1,152 @@ +/******************************************************************************* + * Copyright (C) 2007 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + ******************************************************************************/ +package org.apache.taverna.workbench.file; + +import java.io.File; +import java.net.URL; +import java.util.Collection; + +import org.apache.taverna.workbench.file.exceptions.OpenException; +import org.apache.taverna.workbench.file.exceptions.SaveException; +import org.apache.taverna.scufl2.api.container.WorkflowBundle; + +/** + * A handler for opening or saving {@link WorkflowBundle} from the + * {@link FileManager}. + * + * @author Stian Soiland-Reyes + */ +public interface DataflowPersistenceHandler { + /** + * A collection of supported file types for + * {@link #openDataflow(FileType, Object)}, or an empty collection if + * opening is not supported by this handler. + * + * @return A collection of supported {@link FileType}s for opening. + */ + Collection<FileType> getOpenFileTypes(); + + /** + * A collection of supported source classes for + * {@link #openDataflow(FileType, Object)}, or an empty collection if + * opening is not supported by this handler. + * <p> + * For example, a handler that supports sources opened from a {@link File} + * and {@link URL} could return + * <code>Arrays.asList(File.class, URL.class)</code> + * + * @return A collection of supported {@link Class}es of the open source + * types. + */ + Collection<Class<?>> getOpenSourceTypes(); + + /** + * A collection of supported destination classes for + * {@link #saveDataflow(Dataflow, FileType, Object)}, or an empty collection + * if saving is not supported by this handler. + * <p> + * For example, a handler that supports saving to destinations that are + * instances of a {@link File} could return + * <code>Arrays.asList(File.class)</code> + * + * @return A collection of supported {{@link Class}es of the save + * destination types. + */ + Collection<Class<?>> getSaveDestinationTypes(); + + /** + * A collection of supported file types for + * {@link #saveDataflow(WorkflowBundle, FileType, Object)}, or an empty + * collection if saving is not supported by this handler. + * + * @return A collection of supported {@link FileType}s for saving. + */ + Collection<FileType> getSaveFileTypes(); + + /** + * Open a dataflow from a source containing a dataflow of the given + * {@link FileType}. + * <p> + * The {@link FileType} will be equal to one of the types from + * {@link #getOpenFileTypes()}, and the source class will be one that is + * assignable to one of the classes from {@link #getOpenSourceTypes()}. + * + * @param fileType + * {@link FileType} determining which serialisation method has + * been used + * @param source + * Source for reading the WorkflowBundle + * @return {@link DataflowInfo} describing the opened WorkflowBundle, + * including the WorkflowBundle itself + * @throws OpenException + * If the WorkflowBundle could not be read, parsed or opened for + * any reason. + */ + DataflowInfo openDataflow(FileType fileType, Object source) + throws OpenException; + + /** + * Save a WorkflowBundle to a destination of the given {@link FileType}. + * <p> + * The {@link FileType} will be equal to one of the types from + * {@link #getSaveFileTypes()}, and the destination class will be one that + * is assignable to one of the classes from + * {@link #getSaveDestinationTypes()}. + * + * @param dataflow + * {@link WorkflowBundle} to be saved + * @param fileType + * {@link FileType} determining which serialisation method to use + * @param destination + * Destination for writing the WorkflowBundle + * @return {@link DataflowInfo} describing the saved WorkflowBundle, + * including the WorkflowBundle itself + * @throws OpenException + * If the WorkflowBundle could not be read, parsed or opened for + * any reason. + */ + DataflowInfo saveDataflow(WorkflowBundle dataflow, FileType fileType, + Object destination) throws SaveException; + + /** + * Return <code>true</code> if a call to + * {@link #saveDataflow(WorkflowBundle, FileType, Object)} would overwrite + * the destination, and the destination is different from last + * {@link #openDataflow(FileType, Object)} or + * {@link #saveDataflow(WorkflowBundle, FileType, Object)} of the given + * dataflow. + * + * @param dataflow + * {@link WorkflowBundle} that is to be saved + * @param fileType + * {@link FileType} for saving WorkflowBundle + * @param destination + * destination for writing WorkflowBundle + * @param lastDataflowInfo + * last provided {@link DataflowInfo} returned by + * {@link #openDataflow(FileType, Object)} or + * {@link #saveDataflow(WorkflowBundle, FileType, Object)}. (but + * not necessarily from this handler) + * @return <code>true</code> if the save would overwrite + */ + boolean wouldOverwriteDataflow(WorkflowBundle dataflow, FileType fileType, + Object destination, DataflowInfo lastDataflowInfo); +}
