You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/17 21:46:03 UTC
[32/51] [partial] incubator-taverna-workbench git commit: temporarily
empty repository
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/pom.xml b/taverna-workbench-file-impl/pom.xml
deleted file mode 100644
index 98dcce7..0000000
--- a/taverna-workbench-file-impl/pom.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>net.sf.taverna.t2</groupId>
- <artifactId>ui-impl</artifactId>
- <version>2.0-SNAPSHOT</version>
- </parent>
- <groupId>net.sf.taverna.t2.ui-impl</groupId>
- <artifactId>file-impl</artifactId>
- <packaging>bundle</packaging>
- <name>File opening implementation</name>
- <description>
- Implementation for doing file (i.e. workflow) open/save in the
- workbench.
- </description>
- <dependencies>
- <dependency>
- <groupId>net.sf.taverna.t2.ui-api</groupId>
- <artifactId>file-api</artifactId>
- <version>${t2.ui.api.version}</version>
- </dependency>
- <dependency>
- <groupId>net.sf.taverna.t2.ui-api</groupId>
- <artifactId>edits-api</artifactId>
- <version>${t2.ui.api.version}</version>
- </dependency>
- <dependency>
- <groupId>net.sf.taverna.t2.ui-api</groupId>
- <artifactId>helper-api</artifactId>
- <version>${t2.ui.api.version}</version>
- </dependency>
- <dependency>
- <groupId>net.sf.taverna.t2.ui-api</groupId>
- <artifactId>menu-api</artifactId>
- <version>${t2.ui.api.version}</version>
- </dependency>
- <dependency>
- <groupId>net.sf.taverna.t2.ui-api</groupId>
- <artifactId>workbench-api</artifactId>
- <version>${t2.ui.api.version}</version>
- </dependency>
- <dependency>
- <groupId>net.sf.taverna.t2.lang</groupId>
- <artifactId>observer</artifactId>
- <version>${t2.lang.version}</version>
- </dependency>
- <dependency>
- <groupId>uk.org.taverna.configuration</groupId>
- <artifactId>taverna-app-configuration-api</artifactId>
- <version>${taverna.configuration.version}</version>
- </dependency>
- <dependency>
- <groupId>uk.org.taverna.scufl2</groupId>
- <artifactId>scufl2-api</artifactId>
- <version>${scufl2.version}</version>
- </dependency>
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>com.springsource.org.apache.commons.lang</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jdom</groupId>
- <artifactId>com.springsource.org.jdom</artifactId>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>net.sf.taverna.t2.ui-impl</groupId>
- <artifactId>edits-impl</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>uk.org.taverna.scufl2</groupId>
- <artifactId>scufl2-t2flow</artifactId>
- <version>${scufl2.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>uk.org.taverna.scufl2</groupId>
- <artifactId>scufl2-rdfxml</artifactId>
- <version>${scufl2.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowFromDataflowPersistenceHandler.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowFromDataflowPersistenceHandler.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowFromDataflowPersistenceHandler.java
deleted file mode 100644
index 86bc091..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowFromDataflowPersistenceHandler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.workbench.file.impl;
-
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import net.sf.taverna.t2.workbench.file.AbstractDataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.DataflowInfo;
-import net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.FileType;
-import net.sf.taverna.t2.workbench.file.exceptions.OpenException;
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-import uk.org.taverna.scufl2.api.core.Workflow;
-
-/**
- * @author alanrw
- */
-public class DataflowFromDataflowPersistenceHandler extends
- AbstractDataflowPersistenceHandler implements
- DataflowPersistenceHandler {
- private static final WorkflowBundleFileType WORKFLOW_BUNDLE_FILE_TYPE = new WorkflowBundleFileType();
-
- @Override
- public DataflowInfo openDataflow(FileType fileType, Object source)
- throws OpenException {
- if (!getOpenFileTypes().contains(fileType))
- throw new IllegalArgumentException("Unsupported file type "
- + fileType);
-
- WorkflowBundle workflowBundle = (WorkflowBundle) source;
- Date lastModified = null;
- Object canonicalSource = null;
- return new DataflowInfo(WORKFLOW_BUNDLE_FILE_TYPE, canonicalSource,
- workflowBundle, lastModified);
- }
-
- @Override
- public List<FileType> getOpenFileTypes() {
- return Arrays.<FileType> asList(WORKFLOW_BUNDLE_FILE_TYPE);
- }
-
- @Override
- public List<Class<?>> getOpenSourceTypes() {
- return Arrays.<Class<?>> asList(Workflow.class);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowPersistenceHandlerRegistry.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowPersistenceHandlerRegistry.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowPersistenceHandlerRegistry.java
deleted file mode 100644
index 39117e9..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/DataflowPersistenceHandlerRegistry.java
+++ /dev/null
@@ -1,238 +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.impl;
-
-import static org.apache.commons.collections.map.LazyMap.decorate;
-import static org.apache.commons.lang.ClassUtils.getAllInterfaces;
-import static org.apache.commons.lang.ClassUtils.getAllSuperclasses;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.FileType;
-
-import org.apache.commons.collections.Factory;
-
-// TODO: Cache lookups / build one massive structure
-public class DataflowPersistenceHandlerRegistry {
- private static final MapFactory MAP_FACTORY = new MapFactory();
- private static final SetFactory SET_FACTORY = new SetFactory();
-
- @SuppressWarnings("unchecked")
- protected static List<Class<?>> findAllParentClasses(
- final Class<?> sourceClass) {
- List<Class<?>> superClasses = new ArrayList<>();
- superClasses.add(sourceClass);
- superClasses.addAll(getAllSuperclasses(sourceClass));
- superClasses.addAll(getAllInterfaces(sourceClass));
- return superClasses;
- }
-
- private Map<Class<?>, Set<DataflowPersistenceHandler>> openClassToHandlers;
- private Map<Class<?>, Set<FileType>> openClassToTypes;
- private Map<FileType, Map<Class<?>, Set<DataflowPersistenceHandler>>> openFileClassToHandler;
- private Map<FileType, Set<DataflowPersistenceHandler>> openFileToHandler;
- private Map<Class<?>, Set<DataflowPersistenceHandler>> saveClassToHandlers;
- private Map<Class<?>, Set<FileType>> saveClassToTypes;
- private Map<FileType, Map<Class<?>, Set<DataflowPersistenceHandler>>> saveFileClassToHandler;
- private Map<FileType, Set<DataflowPersistenceHandler>> saveFileToHandler;
-
- private List<DataflowPersistenceHandler> dataflowPersistenceHandlers;
-
- public DataflowPersistenceHandlerRegistry() {
- }
-
- public Set<FileType> getOpenFileTypes() {
- return getOpenFileClassToHandler().keySet();
- }
-
- public Set<FileType> getOpenFileTypesFor(Class<?> sourceClass) {
- Set<FileType> fileTypes = new LinkedHashSet<>();
- for (Class<?> candidateClass : findAllParentClasses(sourceClass))
- fileTypes.addAll(getOpenClassToTypes().get(candidateClass));
- return fileTypes;
- }
-
- public Set<DataflowPersistenceHandler> getOpenHandlersFor(
- Class<? extends Object> sourceClass) {
- Set<DataflowPersistenceHandler> handlers = new LinkedHashSet<>();
- for (Class<?> candidateClass : findAllParentClasses(sourceClass))
- handlers.addAll(getOpenClassToHandlers().get(candidateClass));
- return handlers;
- }
-
- public Set<DataflowPersistenceHandler> getOpenHandlersFor(
- FileType fileType, Class<? extends Object> sourceClass) {
- Set<DataflowPersistenceHandler> handlers = new LinkedHashSet<>();
- for (Class<?> candidateClass : findAllParentClasses(sourceClass))
- handlers.addAll(getOpenFileClassToHandler().get(fileType).get(
- candidateClass));
- return handlers;
- }
-
- public Set<DataflowPersistenceHandler> getOpenHandlersForType(
- FileType fileType) {
- return getOpenFileToHandler().get(fileType);
- }
-
- public synchronized Set<DataflowPersistenceHandler> getOpenHandlersForType(
- FileType fileType, Class<?> sourceClass) {
- Set<DataflowPersistenceHandler> handlers = new LinkedHashSet<>();
- for (Class<?> candidateClass : findAllParentClasses(sourceClass))
- handlers.addAll(getOpenFileClassToHandler().get(fileType).get(
- candidateClass));
- return handlers;
- }
-
- public Set<FileType> getSaveFileTypes() {
- return getSaveFileClassToHandler().keySet();
- }
-
- public Set<FileType> getSaveFileTypesFor(Class<?> destinationClass) {
- Set<FileType> fileTypes = new LinkedHashSet<>();
- for (Class<?> candidateClass : findAllParentClasses(destinationClass))
- fileTypes.addAll(getSaveClassToTypes().get(candidateClass));
- return fileTypes;
- }
-
- public Set<DataflowPersistenceHandler> getSaveHandlersFor(
- Class<? extends Object> destinationClass) {
- Set<DataflowPersistenceHandler> handlers = new LinkedHashSet<>();
- for (Class<?> candidateClass : findAllParentClasses(destinationClass))
- handlers.addAll(getSaveClassToHandlers().get(candidateClass));
- return handlers;
- }
-
- public Set<DataflowPersistenceHandler> getSaveHandlersForType(
- FileType fileType, Class<?> destinationClass) {
- Set<DataflowPersistenceHandler> handlers = new LinkedHashSet<>();
- for (Class<?> candidateClass : findAllParentClasses(destinationClass))
- handlers.addAll(getSaveFileClassToHandler().get(fileType).get(
- candidateClass));
- return handlers;
- }
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- private synchronized void createCollections() {
- openFileClassToHandler = decorate(new HashMap(), MAP_FACTORY);
- openFileToHandler = decorate(new HashMap(), SET_FACTORY);
- openClassToTypes = decorate(new HashMap(), SET_FACTORY);
- openClassToHandlers = decorate(new HashMap(), SET_FACTORY);
-
- saveFileClassToHandler = decorate(new HashMap(), MAP_FACTORY);
- saveFileToHandler = decorate(new HashMap(), SET_FACTORY);
- saveClassToTypes = decorate(new HashMap(), SET_FACTORY);
- saveClassToHandlers = decorate(new HashMap(), SET_FACTORY);
- }
-
- private Map<Class<?>, Set<DataflowPersistenceHandler>> getOpenClassToHandlers() {
- return openClassToHandlers;
- }
-
- private synchronized Map<Class<?>, Set<FileType>> getOpenClassToTypes() {
- return openClassToTypes;
- }
-
- private synchronized Map<FileType, Map<Class<?>, Set<DataflowPersistenceHandler>>> getOpenFileClassToHandler() {
- return openFileClassToHandler;
- }
-
- private Map<FileType, Set<DataflowPersistenceHandler>> getOpenFileToHandler() {
- return openFileToHandler;
- }
-
- private Map<Class<?>, Set<DataflowPersistenceHandler>> getSaveClassToHandlers() {
- return saveClassToHandlers;
- }
-
- private synchronized Map<Class<?>, Set<FileType>> getSaveClassToTypes() {
- return saveClassToTypes;
- }
-
- private synchronized Map<FileType, Map<Class<?>, Set<DataflowPersistenceHandler>>> getSaveFileClassToHandler() {
- return saveFileClassToHandler;
- }
-
- /**
- * Bind method for SpringDM.
- *
- * @param service
- * @param properties
- */
- public void update(Object service, Map<?, ?> properties) {
- if (dataflowPersistenceHandlers != null)
- updateColletions();
- }
-
- public synchronized void updateColletions() {
- createCollections();
- for (DataflowPersistenceHandler handler : dataflowPersistenceHandlers) {
- for (FileType openFileType : handler.getOpenFileTypes()) {
- Set<DataflowPersistenceHandler> set = openFileToHandler
- .get(openFileType);
- set.add(handler);
- for (Class<?> openClass : handler.getOpenSourceTypes()) {
- openFileClassToHandler.get(openFileType).get(openClass)
- .add(handler);
- openClassToTypes.get(openClass).add(openFileType);
- }
- }
- for (Class<?> openClass : handler.getOpenSourceTypes())
- openClassToHandlers.get(openClass).add(handler);
-
- for (FileType saveFileType : handler.getSaveFileTypes()) {
- saveFileToHandler.get(saveFileType).add(handler);
- for (Class<?> saveClass : handler.getSaveDestinationTypes()) {
- saveFileClassToHandler.get(saveFileType).get(saveClass)
- .add(handler);
- saveClassToTypes.get(saveClass).add(saveFileType);
- }
- }
- for (Class<?> openClass : handler.getSaveDestinationTypes())
- saveClassToHandlers.get(openClass).add(handler);
- }
- }
-
- public void setDataflowPersistenceHandlers(
- List<DataflowPersistenceHandler> dataflowPersistenceHandlers) {
- this.dataflowPersistenceHandlers = dataflowPersistenceHandlers;
- }
-
- private static class MapFactory implements Factory {
- @Override
- @SuppressWarnings("rawtypes")
- public Object create() {
- return decorate(new HashMap(), SET_FACTORY);
- }
- }
-
- private static class SetFactory implements Factory {
- @Override
- public Object create() {
- return new LinkedHashSet<Object>();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileDataflowInfo.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileDataflowInfo.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileDataflowInfo.java
deleted file mode 100644
index 89ae39c..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileDataflowInfo.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.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Date;
-
-import net.sf.taverna.t2.workbench.file.DataflowInfo;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.FileType;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-
-/**
- * Information about an open dataflow that was opened from or saved to a
- * {@link File}.
- *
- * @see DataflowInfo
- * @see FileManager
- * @author Stian Soiland-Reyes
- */
-public class FileDataflowInfo extends DataflowInfo {
- private static Logger logger = Logger.getLogger(FileDataflowInfo.class);
-
- public FileDataflowInfo(FileType fileType, File source,
- WorkflowBundle workflowBundle) {
- super(fileType, canonicalFile(source), workflowBundle,
- lastModifiedFile(source));
- }
-
- protected static Date lastModifiedFile(File file) {
- long lastModifiedLong = file.lastModified();
- if (lastModifiedLong == 0)
- return null;
- return new Date(lastModifiedLong);
- }
-
- public static File canonicalFile(File file) {
- try {
- return file.getCanonicalFile();
- } catch (IOException e) {
- logger.warn("Could not find canonical file for " + file);
- return file;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileManagerImpl.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileManagerImpl.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileManagerImpl.java
deleted file mode 100644
index aadb3f1..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileManagerImpl.java
+++ /dev/null
@@ -1,601 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-2010 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.impl;
-
-import static java.awt.GraphicsEnvironment.isHeadless;
-import static java.util.Collections.singleton;
-import static javax.swing.SwingUtilities.invokeAndWait;
-import static javax.swing.SwingUtilities.isEventDispatchThread;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import javax.swing.filechooser.FileFilter;
-
-import net.sf.taverna.t2.lang.observer.MultiCaster;
-import net.sf.taverna.t2.lang.observer.Observable;
-import net.sf.taverna.t2.lang.observer.Observer;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.edits.EditManager.AbstractDataflowEditEvent;
-import net.sf.taverna.t2.workbench.edits.EditManager.EditManagerEvent;
-import net.sf.taverna.t2.workbench.file.DataflowInfo;
-import net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.file.FileType;
-import net.sf.taverna.t2.workbench.file.events.ClosedDataflowEvent;
-import net.sf.taverna.t2.workbench.file.events.ClosingDataflowEvent;
-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.events.SetCurrentDataflowEvent;
-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.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.common.Scufl2Tools;
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-import uk.org.taverna.scufl2.api.core.Workflow;
-import uk.org.taverna.scufl2.api.profiles.Profile;
-
-/**
- * Implementation of {@link FileManager}
- *
- * @author Stian Soiland-Reyes
- */
-public class FileManagerImpl implements FileManager {
- private static Logger logger = Logger.getLogger(FileManagerImpl.class);
- private static int nameIndex = 1;
-
- /**
- * The last blank workflowBundle created using #newDataflow() until it has
- * been changed - when this variable will be set to null again. Used to
- * automatically close unmodified blank workflowBundles on open.
- */
- private WorkflowBundle blankWorkflowBundle = null;
- @SuppressWarnings("unused")
- private EditManager editManager;
- private EditManagerObserver editManagerObserver = new EditManagerObserver();
- protected MultiCaster<FileManagerEvent> observers = new MultiCaster<>(this);
- /**
- * Ordered list of open WorkflowBundle
- */
- private LinkedHashMap<WorkflowBundle, OpenDataflowInfo> openDataflowInfos = new LinkedHashMap<>();
- private DataflowPersistenceHandlerRegistry dataflowPersistenceHandlerRegistry;
- private Scufl2Tools scufl2Tools = new Scufl2Tools();
- private WorkflowBundle currentWorkflowBundle;
-
- public DataflowPersistenceHandlerRegistry getPersistanceHandlerRegistry() {
- return dataflowPersistenceHandlerRegistry;
- }
-
- public FileManagerImpl(EditManager editManager) {
- this.editManager = editManager;
- editManager.addObserver(editManagerObserver);
- }
-
- /**
- * Add an observer to be notified of {@link FileManagerEvent}s, such as
- * {@link OpenedDataflowEvent} and {@link SavedDataflowEvent}.
- *
- * {@inheritDoc}
- */
- @Override
- public void addObserver(Observer<FileManagerEvent> observer) {
- observers.addObserver(observer);
- }
-
- @Override
- public boolean canSaveWithoutDestination(WorkflowBundle workflowBundle) {
- OpenDataflowInfo dataflowInfo = getOpenDataflowInfo(workflowBundle);
- if (dataflowInfo.getSource() == null)
- return false;
- Set<?> handlers = getPersistanceHandlerRegistry()
- .getSaveHandlersForType(
- dataflowInfo.getFileType(),
- dataflowInfo.getDataflowInfo().getCanonicalSource()
- .getClass());
- return !handlers.isEmpty();
- }
-
- @Override
- public boolean closeDataflow(WorkflowBundle workflowBundle,
- boolean failOnUnsaved) throws UnsavedException {
- if (workflowBundle == null)
- throw new NullPointerException("Dataflow can't be null");
- ClosingDataflowEvent message = new ClosingDataflowEvent(workflowBundle);
- observers.notify(message);
- if (message.isAbortClose())
- return false;
- if ((failOnUnsaved && getOpenDataflowInfo(workflowBundle).isChanged()))
- throw new UnsavedException(workflowBundle);
- if (workflowBundle.equals(getCurrentDataflow())) {
- // We'll need to change current workflowBundle
- // Find best candidate to the left or right
- List<WorkflowBundle> workflowBundles = getOpenDataflows();
- int openIndex = workflowBundles.indexOf(workflowBundle);
- if (openIndex == -1)
- throw new IllegalArgumentException("Workflow was not opened "
- + workflowBundle);
-
- if (openIndex > 0)
- setCurrentDataflow(workflowBundles.get(openIndex - 1));
- else if (openIndex == 0 && workflowBundles.size() > 1)
- setCurrentDataflow(workflowBundles.get(1));
- else
- // If it was the last one, start a new, empty workflowBundle
- newDataflow();
- }
- if (workflowBundle == blankWorkflowBundle)
- blankWorkflowBundle = null;
- openDataflowInfos.remove(workflowBundle);
- observers.notify(new ClosedDataflowEvent(workflowBundle));
- return true;
- }
-
- @Override
- public WorkflowBundle getCurrentDataflow() {
- return currentWorkflowBundle;
- }
-
- @Override
- public WorkflowBundle getDataflowBySource(Object source) {
- for (Entry<WorkflowBundle, OpenDataflowInfo> infoEntry : openDataflowInfos
- .entrySet()) {
- OpenDataflowInfo info = infoEntry.getValue();
- if (source.equals(info.getSource()))
- return infoEntry.getKey();
- }
- // Not found
- return null;
- }
-
- @Override
- public String getDataflowName(WorkflowBundle workflowBundle) {
- Object source = null;
- if (isDataflowOpen(workflowBundle))
- source = getDataflowSource(workflowBundle);
- // Fallback
- String name;
- Workflow workflow = workflowBundle.getMainWorkflow();
- if (workflow != null)
- name = workflow.getName();
- else
- name = workflowBundle.getName();
- if (source == null)
- return name;
- if (source instanceof File)
- return ((File) source).getAbsolutePath();
- else if (source instanceof URL)
- return source.toString();
-
- // Check if it has implemented a toString() method
- Method toStringMethod = null;
- Method toStringMethodFromObject = null;
- try {
- toStringMethod = source.getClass().getMethod("toString");
- toStringMethodFromObject = Object.class.getMethod("toString");
- } catch (Exception e) {
- throw new IllegalStateException(
- "Source did not implement Object.toString() " + source);
- }
- if (!toStringMethod.equals(toStringMethodFromObject))
- return source.toString();
- return name;
- }
-
- @Override
- public String getDefaultWorkflowName() {
- return "Workflow" + (nameIndex++);
- }
-
- @Override
- public Object getDataflowSource(WorkflowBundle workflowBundle) {
- return getOpenDataflowInfo(workflowBundle).getSource();
- }
-
- @Override
- public FileType getDataflowType(WorkflowBundle workflowBundle) {
- return getOpenDataflowInfo(workflowBundle).getFileType();
- }
-
- @Override
- public List<Observer<FileManagerEvent>> getObservers() {
- return observers.getObservers();
- }
-
- /**
- * Get the {@link OpenDataflowInfo} for the given WorkflowBundle
- *
- * @throws NullPointerException
- * if the WorkflowBundle was <code>null</code>
- * @throws IllegalArgumentException
- * if the WorkflowBundle was not open.
- * @param workflowBundle
- * WorkflowBundle which information is to be found
- * @return The {@link OpenDataflowInfo} describing the WorkflowBundle
- */
- protected synchronized OpenDataflowInfo getOpenDataflowInfo(
- WorkflowBundle workflowBundle) {
- if (workflowBundle == null)
- throw new NullPointerException("Dataflow can't be null");
- OpenDataflowInfo info = openDataflowInfos.get(workflowBundle);
- if (info == null)
- throw new IllegalArgumentException("Workflow was not opened "
- + workflowBundle);
- return info;
- }
-
- @Override
- public List<WorkflowBundle> getOpenDataflows() {
- return new ArrayList<>(openDataflowInfos.keySet());
- }
-
- @Override
- public List<FileFilter> getOpenFileFilters() {
- List<FileFilter> fileFilters = new ArrayList<>();
-
- Set<FileType> fileTypes = getPersistanceHandlerRegistry()
- .getOpenFileTypes();
- if (!fileTypes.isEmpty())
- fileFilters.add(new MultipleFileTypes(fileTypes,
- "All supported workflows"));
- for (FileType fileType : fileTypes)
- fileFilters.add(new FileTypeFileFilter(fileType));
- return fileFilters;
- }
-
- @Override
- public List<FileFilter> getOpenFileFilters(Class<?> sourceClass) {
- List<FileFilter> fileFilters = new ArrayList<>();
- for (FileType fileType : getPersistanceHandlerRegistry()
- .getOpenFileTypesFor(sourceClass))
- fileFilters.add(new FileTypeFileFilter(fileType));
- return fileFilters;
- }
-
- @Override
- public List<FileFilter> getSaveFileFilters() {
- List<FileFilter> fileFilters = new ArrayList<>();
- for (FileType fileType : getPersistanceHandlerRegistry()
- .getSaveFileTypes())
- fileFilters.add(new FileTypeFileFilter(fileType));
- return fileFilters;
- }
-
- @Override
- public List<FileFilter> getSaveFileFilters(Class<?> destinationClass) {
- List<FileFilter> fileFilters = new ArrayList<>();
- for (FileType fileType : getPersistanceHandlerRegistry()
- .getSaveFileTypesFor(destinationClass))
- fileFilters.add(new FileTypeFileFilter(fileType));
- return fileFilters;
- }
-
- @Override
- public boolean isDataflowChanged(WorkflowBundle workflowBundle) {
- return getOpenDataflowInfo(workflowBundle).isChanged();
- }
-
- @Override
- public boolean isDataflowOpen(WorkflowBundle workflowBundle) {
- return openDataflowInfos.containsKey(workflowBundle);
- }
-
- @Override
- public WorkflowBundle newDataflow() {
- WorkflowBundle workflowBundle = new WorkflowBundle();
- workflowBundle.setMainWorkflow(new Workflow());
- workflowBundle.getMainWorkflow().setName(getDefaultWorkflowName());
- workflowBundle.setMainProfile(new Profile());
- scufl2Tools.setParents(workflowBundle);
- blankWorkflowBundle = null;
- openDataflowInternal(workflowBundle);
- blankWorkflowBundle = workflowBundle;
- observers.notify(new OpenedDataflowEvent(workflowBundle));
- return workflowBundle;
- }
-
- @Override
- public void openDataflow(WorkflowBundle workflowBundle) {
- openDataflowInternal(workflowBundle);
- observers.notify(new OpenedDataflowEvent(workflowBundle));
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public WorkflowBundle openDataflow(FileType fileType, Object source)
- throws OpenException {
- if (isHeadless())
- return performOpenDataflow(fileType, source);
-
- OpenDataflowRunnable r = new OpenDataflowRunnable(this, fileType,
- source);
- if (isEventDispatchThread()) {
- r.run();
- } else
- try {
- invokeAndWait(r);
- } catch (InterruptedException | InvocationTargetException e) {
- throw new OpenException("Opening was interrupted", e);
- }
- OpenException thrownException = r.getException();
- if (thrownException != null)
- throw thrownException;
- return r.getDataflow();
- }
-
- public WorkflowBundle performOpenDataflow(FileType fileType, Object source)
- throws OpenException {
- DataflowInfo dataflowInfo;
- WorkflowBundle workflowBundle;
- dataflowInfo = openDataflowSilently(fileType, source);
- workflowBundle = dataflowInfo.getDataflow();
- openDataflowInternal(workflowBundle);
- getOpenDataflowInfo(workflowBundle).setOpenedFrom(dataflowInfo);
- observers.notify(new OpenedDataflowEvent(workflowBundle));
- return workflowBundle;
- }
-
- @Override
- public DataflowInfo openDataflowSilently(FileType fileType, Object source)
- throws OpenException {
- Set<DataflowPersistenceHandler> handlers;
- Class<? extends Object> sourceClass = source.getClass();
-
- boolean unknownFileType = (fileType == null);
- if (unknownFileType)
- handlers = getPersistanceHandlerRegistry().getOpenHandlersFor(
- sourceClass);
- else
- handlers = getPersistanceHandlerRegistry().getOpenHandlersFor(
- fileType, sourceClass);
- if (handlers.isEmpty())
- throw new OpenException("Unsupported file type or class "
- + fileType + " " + sourceClass);
-
- Throwable lastException = null;
- for (DataflowPersistenceHandler handler : handlers) {
- Collection<FileType> fileTypes;
- if (unknownFileType)
- fileTypes = handler.getOpenFileTypes();
- else
- fileTypes = singleton(fileType);
- for (FileType candidateFileType : fileTypes) {
- if (unknownFileType && (source instanceof File))
- /*
- * If source is file but fileType was not explicitly set
- * from the open workflow dialog - check the file extension
- * and decide which handler to use based on that (so that we
- * do not loop though all handlers)
- */
- if (!((File) source).getPath().endsWith(
- candidateFileType.getExtension()))
- continue;
-
- try {
- DataflowInfo openDataflow = handler.openDataflow(
- candidateFileType, source);
- WorkflowBundle workflowBundle = openDataflow.getDataflow();
- logger.info("Loaded workflow: " + workflowBundle.getName()
- + " " + workflowBundle.getGlobalBaseURI()
- + " from " + source + " using " + handler);
- return openDataflow;
- } catch (OpenException ex) {
- logger.warn("Could not open workflow " + source + " using "
- + handler + " of type " + candidateFileType);
- lastException = ex;
- }
- }
- }
- throw new OpenException("Could not open workflow " + source + "\n",
- lastException);
- }
-
- /**
- * Mark the WorkflowBundle as opened, and close the blank WorkflowBundle if
- * needed.
- *
- * @param workflowBundle
- * WorkflowBundle that has been opened
- */
- protected void openDataflowInternal(WorkflowBundle workflowBundle) {
- if (workflowBundle == null)
- throw new NullPointerException("Dataflow can't be null");
- if (isDataflowOpen(workflowBundle))
- throw new IllegalArgumentException("Workflow is already open: "
- + workflowBundle);
-
- openDataflowInfos.put(workflowBundle, new OpenDataflowInfo());
- setCurrentDataflow(workflowBundle);
- if (openDataflowInfos.size() == 2 && blankWorkflowBundle != null)
- /*
- * Behave like a word processor and close the blank WorkflowBundle
- * when another workflow has been opened
- */
- try {
- closeDataflow(blankWorkflowBundle, true);
- } catch (UnsavedException e) {
- logger.error("Blank workflow was modified "
- + "and could not be closed");
- }
- }
-
- @Override
- public void removeObserver(Observer<FileManagerEvent> observer) {
- observers.removeObserver(observer);
- }
-
- @Override
- public void saveDataflow(WorkflowBundle workflowBundle,
- boolean failOnOverwrite) throws SaveException {
- if (workflowBundle == null)
- throw new NullPointerException("Dataflow can't be null");
- OpenDataflowInfo lastSave = getOpenDataflowInfo(workflowBundle);
- if (lastSave.getSource() == null)
- throw new SaveException("Can't save without source "
- + workflowBundle);
- saveDataflow(workflowBundle, lastSave.getFileType(),
- lastSave.getSource(), failOnOverwrite);
- }
-
- @Override
- public void saveDataflow(WorkflowBundle workflowBundle, FileType fileType,
- Object destination, boolean failOnOverwrite) throws SaveException {
- DataflowInfo savedDataflow = saveDataflowSilently(workflowBundle,
- fileType, destination, failOnOverwrite);
- getOpenDataflowInfo(workflowBundle).setSavedTo(savedDataflow);
- observers.notify(new SavedDataflowEvent(workflowBundle));
- }
-
- @Override
- public DataflowInfo saveDataflowSilently(WorkflowBundle workflowBundle,
- FileType fileType, Object destination, boolean failOnOverwrite)
- throws SaveException, OverwriteException {
- Set<DataflowPersistenceHandler> handlers;
-
- Class<? extends Object> destinationClass = destination.getClass();
- if (fileType != null)
- handlers = getPersistanceHandlerRegistry().getSaveHandlersForType(
- fileType, destinationClass);
- else
- handlers = getPersistanceHandlerRegistry().getSaveHandlersFor(
- destinationClass);
-
- SaveException lastException = null;
- for (DataflowPersistenceHandler handler : handlers) {
- if (failOnOverwrite) {
- OpenDataflowInfo openDataflowInfo = getOpenDataflowInfo(workflowBundle);
- if (handler.wouldOverwriteDataflow(workflowBundle, fileType,
- destination, openDataflowInfo.getDataflowInfo()))
- throw new OverwriteException(destination);
- }
- try {
- DataflowInfo savedDataflow = handler.saveDataflow(
- workflowBundle, fileType, destination);
- savedDataflow.getDataflow();
- logger.info("Saved workflow: " + workflowBundle.getName() + " "
- + workflowBundle.getGlobalBaseURI() + " to "
- + savedDataflow.getCanonicalSource() + " using "
- + handler);
- return savedDataflow;
- } catch (SaveException ex) {
- logger.warn("Could not save to " + destination + " using "
- + handler);
- lastException = ex;
- }
- }
-
- if (lastException == null)
- throw new SaveException("Unsupported file type or class "
- + fileType + " " + destinationClass);
- throw new SaveException("Could not save to " + destination + ":\n"
- + lastException.getLocalizedMessage(), lastException);
- }
-
- @Override
- public void setCurrentDataflow(WorkflowBundle workflowBundle) {
- setCurrentDataflow(workflowBundle, false);
- }
-
- @Override
- public void setCurrentDataflow(WorkflowBundle workflowBundle,
- boolean openIfNeeded) {
- currentWorkflowBundle = workflowBundle;
- if (!isDataflowOpen(workflowBundle)) {
- if (!openIfNeeded)
- throw new IllegalArgumentException("Workflow is not open: "
- + workflowBundle);
- openDataflow(workflowBundle);
- return;
- }
- observers.notify(new SetCurrentDataflowEvent(workflowBundle));
- }
-
- @Override
- public void setDataflowChanged(WorkflowBundle workflowBundle,
- boolean isChanged) {
- getOpenDataflowInfo(workflowBundle).setIsChanged(isChanged);
- if (blankWorkflowBundle == workflowBundle)
- blankWorkflowBundle = null;
- }
-
- @Override
- public Object getCanonical(Object source) throws IllegalArgumentException,
- URISyntaxException, IOException {
- Object canonicalSource = source;
-
- if (source instanceof URL) {
- URL url = ((URL) source);
- if (url.getProtocol().equalsIgnoreCase("file"))
- canonicalSource = new File(url.toURI());
- }
-
- if (canonicalSource instanceof File)
- canonicalSource = ((File) canonicalSource).getCanonicalFile();
- return canonicalSource;
- }
-
- public void setDataflowPersistenceHandlerRegistry(
- DataflowPersistenceHandlerRegistry dataflowPersistenceHandlerRegistry) {
- this.dataflowPersistenceHandlerRegistry = dataflowPersistenceHandlerRegistry;
- }
-
- /**
- * Observe the {@link EditManager} for changes to open workflowBundles. A
- * change of an open workflow would set it as changed using
- * {@link FileManagerImpl#setDataflowChanged(Dataflow, boolean)}.
- *
- * @author Stian Soiland-Reyes
- *
- */
- private final class EditManagerObserver implements
- Observer<EditManagerEvent> {
- @Override
- public void notify(Observable<EditManagerEvent> sender,
- EditManagerEvent message) throws Exception {
- if (message instanceof AbstractDataflowEditEvent) {
- AbstractDataflowEditEvent dataflowEdit = (AbstractDataflowEditEvent) message;
- WorkflowBundle workflowBundle = dataflowEdit.getDataFlow();
- /**
- * TODO: on undo/redo - keep last event or similar to determine
- * if workflow was saved before. See
- * FileManagerTest#isChangedWithUndo().
- */
- setDataflowChanged(workflowBundle, true);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileTypeFileFilter.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileTypeFileFilter.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileTypeFileFilter.java
deleted file mode 100644
index 6416163..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/FileTypeFileFilter.java
+++ /dev/null
@@ -1,55 +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.impl;
-
-import java.io.File;
-
-import javax.swing.filechooser.FileFilter;
-
-import net.sf.taverna.t2.workbench.file.FileType;
-
-public class FileTypeFileFilter extends FileFilter {
- private final FileType fileType;
-
- public FileTypeFileFilter(FileType fileType) {
- this.fileType = fileType;
- }
-
- @Override
- public String getDescription() {
- return fileType.getDescription();
- }
-
- @Override
- public boolean accept(File file) {
- if (file.isDirectory())
- // Don't grey out directories
- return true;
- if (fileType.getExtension() == null)
- return false;
- return file.getName().toLowerCase()
- .endsWith("." + fileType.getExtension());
- }
-
- public FileType getFileType() {
- return fileType;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/MultipleFileTypes.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/MultipleFileTypes.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/MultipleFileTypes.java
deleted file mode 100644
index c398805..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/MultipleFileTypes.java
+++ /dev/null
@@ -1,58 +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.impl;
-
-import java.io.File;
-import java.util.Set;
-
-import javax.swing.filechooser.FileFilter;
-
-import net.sf.taverna.t2.workbench.file.FileType;
-
-public class MultipleFileTypes extends FileFilter {
- private String description;
- private final Set<FileType> fileTypes;
-
- public MultipleFileTypes(Set<FileType> fileTypes, String description) {
- this.fileTypes = fileTypes;
- this.description = description;
- }
-
- @Override
- public String getDescription() {
- return description;
- }
-
- @Override
- public boolean accept(File file) {
- if (file.isDirectory())
- return true;
-
- String lowerFileName = file.getName().toLowerCase();
- for (FileType fileType : fileTypes) {
- if (fileType.getExtension() == null)
- continue;
- if (lowerFileName.endsWith(fileType.getExtension()))
- return true;
- }
- return false;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInProgressDialog.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInProgressDialog.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInProgressDialog.java
deleted file mode 100644
index dc08cff..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInProgressDialog.java
+++ /dev/null
@@ -1,88 +0,0 @@
-
-/*******************************************************************************
- * Copyright (C) 2009 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.impl;
-
-import static java.awt.BorderLayout.CENTER;
-import static net.sf.taverna.t2.workbench.MainWindow.getMainWindow;
-import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.workingIcon;
-
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
-
-/**
- * Dialog that is popped up while we are opening a workflow.
- *
- * @author Alex Nenadic
- * @author Alan R Williams
- */
-@SuppressWarnings("serial")
-public class OpenDataflowInProgressDialog extends HelpEnabledDialog {
- private boolean userCancelled = false;
-
- public OpenDataflowInProgressDialog() {
- super(getMainWindow(), "Opening workflow", true);
- setResizable(false);
- setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
-
- JPanel panel = new JPanel(new BorderLayout());
- panel.setBorder(new EmptyBorder(10,10,10,10));
-
- JPanel textPanel = new JPanel();
- JLabel text = new JLabel(workingIcon);
- text.setText("Opening workflow...");
- text.setBorder(new EmptyBorder(10,0,10,0));
- textPanel.add(text);
- panel.add(textPanel, CENTER);
-
-/*
- * Cancellation does not work when opening
-
- // Cancel button
- JButton cancelButton = new JButton("Cancel");
- cancelButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- userCancelled = true;
- setVisible(false);
- dispose();
- }
- });
- JPanel cancelButtonPanel = new JPanel();
- cancelButtonPanel.add(cancelButton);
- panel.add(cancelButtonPanel, BorderLayout.SOUTH);
-*/
- setContentPane(panel);
- setPreferredSize(new Dimension(300, 100));
-
- pack();
- }
-
- public boolean hasUserCancelled() {
- return userCancelled;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInfo.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInfo.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInfo.java
deleted file mode 100644
index 4a4a1e3..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowInfo.java
+++ /dev/null
@@ -1,93 +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.impl;
-
-import java.util.Date;
-
-import net.sf.taverna.t2.workbench.file.DataflowInfo;
-import net.sf.taverna.t2.workbench.file.FileType;
-
-/**
- * Information about an open dataflow.
- *
- * @author Stian Soiland-Reyes
- */
-public class OpenDataflowInfo {
- private DataflowInfo dataflowInfo;
- private boolean isChanged;
- private Date openedAt;
-
- public OpenDataflowInfo() {
- }
-
- public FileType getFileType() {
- if (dataflowInfo == null)
- return null;
- return dataflowInfo.getFileType();
- }
-
- public Date getLastModified() {
- if (dataflowInfo == null)
- return null;
- return dataflowInfo.getLastModified();
- }
-
- public Date getOpenedAtDate() {
- return openedAt;
- }
-
- public Object getSource() {
- if (dataflowInfo == null)
- return null;
- return dataflowInfo.getCanonicalSource();
- }
-
- public boolean isChanged() {
- return isChanged;
- }
-
- public void setIsChanged(boolean isChanged) {
- this.isChanged = isChanged;
- }
-
- public synchronized void setOpenedFrom(DataflowInfo dataflowInfo) {
- setDataflowInfo(dataflowInfo);
- setOpenedAt(new Date());
- setIsChanged(false);
- }
-
- public synchronized void setSavedTo(DataflowInfo dataflowInfo) {
- setDataflowInfo(dataflowInfo);
- setIsChanged(false);
- }
-
- private void setDataflowInfo(DataflowInfo dataflowInfo) {
- this.dataflowInfo = dataflowInfo;
- }
-
- private void setOpenedAt(Date openedAt) {
- this.openedAt = openedAt;
- }
-
- public DataflowInfo getDataflowInfo() {
- return dataflowInfo;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowRunnable.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowRunnable.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowRunnable.java
deleted file mode 100644
index 9d687b8..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowRunnable.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.workbench.file.impl;
-
-import static java.lang.Thread.sleep;
-import net.sf.taverna.t2.workbench.file.FileType;
-import net.sf.taverna.t2.workbench.file.exceptions.OpenException;
-import net.sf.taverna.t2.workbench.ui.SwingWorkerCompletionWaiter;
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-
-/**
- * @author alanrw
- */
-public class OpenDataflowRunnable implements Runnable {
- private final FileManagerImpl fileManager;
- private final FileType fileType;
- private final Object source;
- private WorkflowBundle dataflow;
- private OpenException e;
-
- public OpenDataflowRunnable(FileManagerImpl fileManager, FileType fileType,
- Object source) {
- this.fileManager = fileManager;
- this.fileType = fileType;
- this.source = source;
- }
-
- @Override
- public void run() {
- OpenDataflowSwingWorker openDataflowSwingWorker = new OpenDataflowSwingWorker(
- fileType, source, fileManager);
- OpenDataflowInProgressDialog dialog = new OpenDataflowInProgressDialog();
- openDataflowSwingWorker
- .addPropertyChangeListener(new SwingWorkerCompletionWaiter(
- dialog));
- openDataflowSwingWorker.execute();
-
- /*
- * Give a chance to the SwingWorker to finish so we do not have to
- * display the dialog
- */
- try {
- sleep(500);
- } catch (InterruptedException e) {
- this.e = new OpenException("Opening was interrupted");
- }
- if (!openDataflowSwingWorker.isDone())
- dialog.setVisible(true); // this will block the GUI
- boolean userCancelled = dialog.hasUserCancelled(); // see if user cancelled the dialog
-
- if (userCancelled) {
- // Stop the OpenDataflowSwingWorker if it is still working
- openDataflowSwingWorker.cancel(true);
- dataflow = null;
- this.e = new OpenException("Opening was cancelled");
- // exit
- return;
- }
- dataflow = openDataflowSwingWorker.getDataflow();
- this.e = openDataflowSwingWorker.getException();
- }
-
- public WorkflowBundle getDataflow() {
- return dataflow;
- }
-
- public OpenException getException() {
- return this.e;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowSwingWorker.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowSwingWorker.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowSwingWorker.java
deleted file mode 100644
index 4cbd2f8..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/OpenDataflowSwingWorker.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 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.impl;
-
-import javax.swing.SwingWorker;
-
-import net.sf.taverna.t2.workbench.file.FileType;
-import net.sf.taverna.t2.workbench.file.exceptions.OpenException;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-
-public class OpenDataflowSwingWorker extends
- SwingWorker<WorkflowBundle, Object> {
- @SuppressWarnings("unused")
- private Logger logger = Logger.getLogger(OpenDataflowSwingWorker.class);
- private FileType fileType;
- private Object source;
- private FileManagerImpl fileManagerImpl;
- private WorkflowBundle workflowBundle;
- private OpenException e = null;
-
- public OpenDataflowSwingWorker(FileType fileType, Object source,
- FileManagerImpl fileManagerImpl) {
- this.fileType = fileType;
- this.source = source;
- this.fileManagerImpl = fileManagerImpl;
- }
-
- @Override
- protected WorkflowBundle doInBackground() throws Exception {
- try {
- workflowBundle = fileManagerImpl.performOpenDataflow(fileType,
- source);
- } catch (OpenException e) {
- this.e = e;
- }
- return workflowBundle;
- }
-
- public WorkflowBundle getDataflow() {
- return workflowBundle;
- }
-
- public OpenException getException() {
- return e;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2DataflowOpener.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2DataflowOpener.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2DataflowOpener.java
deleted file mode 100644
index bf37faf..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2DataflowOpener.java
+++ /dev/null
@@ -1,144 +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.impl;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import net.sf.taverna.t2.workbench.file.AbstractDataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.DataflowInfo;
-import net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.FileType;
-import net.sf.taverna.t2.workbench.file.exceptions.OpenException;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-import uk.org.taverna.scufl2.api.io.ReaderException;
-import uk.org.taverna.scufl2.api.io.WorkflowBundleIO;
-
-public class T2DataflowOpener extends AbstractDataflowPersistenceHandler
- implements DataflowPersistenceHandler {
- private static final T2FlowFileType T2_FLOW_FILE_TYPE = new T2FlowFileType();
- private static Logger logger = Logger.getLogger(T2DataflowOpener.class);
-
- private WorkflowBundleIO workflowBundleIO;
-
- @SuppressWarnings("resource")
- @Override
- public DataflowInfo openDataflow(FileType fileType, Object source)
- throws OpenException {
- if (!getOpenFileTypes().contains(fileType))
- throw new OpenException("Unsupported file type "
- + fileType);
- InputStream inputStream;
- Date lastModified = null;
- Object canonicalSource = source;
- if (source instanceof InputStream)
- inputStream = (InputStream) source;
- else if (source instanceof File)
- try {
- inputStream = new FileInputStream((File) source);
- } catch (FileNotFoundException e) {
- throw new OpenException("Could not open file " + source + ":\n" + e.getLocalizedMessage(), e);
- }
- else if (source instanceof URL) {
- URL url = ((URL) source);
- try {
- URLConnection connection = url.openConnection();
- connection.setRequestProperty("Accept", "text/xml");
- inputStream = connection.getInputStream();
- if (connection.getLastModified() != 0)
- lastModified = new Date(connection.getLastModified());
- } catch (IOException e) {
- throw new OpenException("Could not open connection to URL "
- + source+ ":\n" + e.getLocalizedMessage(), e);
- }
- try {
- if (url.getProtocol().equalsIgnoreCase("file"))
- canonicalSource = new File(url.toURI());
- } catch (URISyntaxException e) {
- logger.warn("Invalid file URI created from " + url);
- }
- } else {
- throw new OpenException("Unsupported source type "
- + source.getClass());
- }
-
- final WorkflowBundle workflowBundle;
- try {
- workflowBundle = openDataflowStream(inputStream);
- } finally {
- try {
- if (!(source instanceof InputStream))
- // We created the stream, we'll close it
- inputStream.close();
- } catch (IOException ex) {
- logger.warn("Could not close inputstream " + inputStream, ex);
- }
- }
- if (canonicalSource instanceof File)
- return new FileDataflowInfo(T2_FLOW_FILE_TYPE,
- (File) canonicalSource, workflowBundle);
- return new DataflowInfo(T2_FLOW_FILE_TYPE, canonicalSource,
- workflowBundle, lastModified);
- }
-
- protected WorkflowBundle openDataflowStream(InputStream workflowXMLstream)
- throws OpenException {
- WorkflowBundle workflowBundle;
- try {
- workflowBundle = workflowBundleIO.readBundle(workflowXMLstream, null);
- } catch (ReaderException e) {
- throw new OpenException("Could not read the workflow", e);
- } catch (IOException e) {
- throw new OpenException("Could not open the workflow file for parsing", e);
- } catch (Exception e) {
- throw new OpenException("Error while opening workflow", e);
- }
-
- return workflowBundle;
- }
-
- @Override
- public List<FileType> getOpenFileTypes() {
- return Arrays.<FileType> asList(new T2FlowFileType());
- }
-
- @Override
- public List<Class<?>> getOpenSourceTypes() {
- return Arrays.<Class<?>> asList(InputStream.class, URL.class,
- File.class);
- }
-
- public void setWorkflowBundleIO(WorkflowBundleIO workflowBundleIO) {
- this.workflowBundleIO = workflowBundleIO;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FileFilter.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FileFilter.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FileFilter.java
deleted file mode 100644
index 62b5892..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FileFilter.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.impl;
-
-import java.io.File;
-
-import javax.swing.filechooser.FileFilter;
-
-public class T2FileFilter extends FileFilter {
- @Override
- public boolean accept(final File file) {
- return file.getName().toLowerCase().endsWith(".t2flow");
- }
-
- @Override
- public String getDescription() {
- return "Taverna 2 workflows";
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FlowFileType.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FlowFileType.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FlowFileType.java
deleted file mode 100644
index a2774e4..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/T2FlowFileType.java
+++ /dev/null
@@ -1,42 +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.impl;
-
-import net.sf.taverna.t2.workbench.file.FileType;
-
-public class T2FlowFileType extends FileType {
- public static final String APPLICATION_VND_TAVERNA_T2FLOW_XML = "application/vnd.taverna.t2flow+xml";
-
- @Override
- public String getDescription() {
- return "Taverna 2 workflow";
- }
-
- @Override
- public String getExtension() {
- return "t2flow";
- }
-
- @Override
- public String getMimeType() {
- return APPLICATION_VND_TAVERNA_T2FLOW_XML;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileFilter.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileFilter.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileFilter.java
deleted file mode 100644
index d272b41..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileFilter.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.impl;
-
-import java.io.File;
-
-import javax.swing.filechooser.FileFilter;
-
-public class WorkflowBundleFileFilter extends FileFilter {
- @Override
- public boolean accept(final File file) {
- return file.getName().toLowerCase().endsWith(".wfbundle");
- }
-
- @Override
- public String getDescription() {
- return "Taverna 3 workflows";
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileType.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileType.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileType.java
deleted file mode 100644
index 09b30b0..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleFileType.java
+++ /dev/null
@@ -1,42 +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.impl;
-
-import net.sf.taverna.t2.workbench.file.FileType;
-
-public class WorkflowBundleFileType extends FileType {
- public static final String APPLICATION_VND_TAVERNA_SCUFL2_WORKFLOW_BUNDLE = "application/vnd.taverna.scufl2.workflow-bundle";
-
- @Override
- public String getDescription() {
- return "Taverna 3 workflow";
- }
-
- @Override
- public String getExtension() {
- return "wfbundle";
- }
-
- @Override
- public String getMimeType() {
- return APPLICATION_VND_TAVERNA_SCUFL2_WORKFLOW_BUNDLE;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleOpener.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleOpener.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleOpener.java
deleted file mode 100644
index 7c54f7e..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleOpener.java
+++ /dev/null
@@ -1,143 +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.impl;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import net.sf.taverna.t2.workbench.file.AbstractDataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.DataflowInfo;
-import net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.FileType;
-import net.sf.taverna.t2.workbench.file.exceptions.OpenException;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-import uk.org.taverna.scufl2.api.io.ReaderException;
-import uk.org.taverna.scufl2.api.io.WorkflowBundleIO;
-
-public class WorkflowBundleOpener extends AbstractDataflowPersistenceHandler
- implements DataflowPersistenceHandler {
- private static final WorkflowBundleFileType WF_BUNDLE_FILE_TYPE = new WorkflowBundleFileType();
- private static Logger logger = Logger.getLogger(WorkflowBundleOpener.class);
- private WorkflowBundleIO workflowBundleIO;
-
- @SuppressWarnings("resource")
- @Override
- public DataflowInfo openDataflow(FileType fileType, Object source)
- throws OpenException {
- if (!getOpenFileTypes().contains(fileType))
- throw new OpenException("Unsupported file type " + fileType);
- InputStream inputStream;
- Date lastModified = null;
- Object canonicalSource = source;
- if (source instanceof InputStream) {
- inputStream = (InputStream) source;
- } else if (source instanceof File) {
- try {
- inputStream = new FileInputStream((File) source);
- } catch (FileNotFoundException e) {
- throw new OpenException("Could not open file " + source + ":\n"
- + e.getLocalizedMessage(), e);
- }
- } else if (source instanceof URL) {
- URL url = ((URL) source);
- try {
- URLConnection connection = url.openConnection();
- connection.setRequestProperty("Accept", "application/zip");
- inputStream = connection.getInputStream();
- if (connection.getLastModified() != 0)
- lastModified = new Date(connection.getLastModified());
- } catch (IOException e) {
- throw new OpenException("Could not open connection to URL "
- + source + ":\n" + e.getLocalizedMessage(), e);
- }
- try {
- if (url.getProtocol().equalsIgnoreCase("file"))
- canonicalSource = new File(url.toURI());
- } catch (URISyntaxException e) {
- logger.warn("Invalid file URI created from " + url);
- }
- } else
- throw new OpenException("Unsupported source type "
- + source.getClass());
-
- final WorkflowBundle workflowBundle;
- try {
- workflowBundle = openDataflowStream(inputStream);
- } finally {
- // We created the stream, we'll close it
- try {
- if (!(source instanceof InputStream))
- inputStream.close();
- } catch (IOException ex) {
- logger.warn("Could not close inputstream " + inputStream, ex);
- }
- }
- if (canonicalSource instanceof File)
- return new FileDataflowInfo(WF_BUNDLE_FILE_TYPE,
- (File) canonicalSource, workflowBundle);
- return new DataflowInfo(WF_BUNDLE_FILE_TYPE, canonicalSource,
- workflowBundle, lastModified);
- }
-
- protected WorkflowBundle openDataflowStream(InputStream inputStream)
- throws OpenException {
- WorkflowBundle workflowBundle;
- try {
- workflowBundle = workflowBundleIO.readBundle(inputStream, null);
- } catch (ReaderException e) {
- throw new OpenException("Could not read the workflow", e);
- } catch (IOException e) {
- throw new OpenException("Could not open the workflow for parsing",
- e);
- } catch (Exception e) {
- throw new OpenException("Error while opening workflow", e);
- }
-
- return workflowBundle;
- }
-
- @Override
- public List<FileType> getOpenFileTypes() {
- return Arrays.<FileType> asList(WF_BUNDLE_FILE_TYPE);
- }
-
- @Override
- public List<Class<?>> getOpenSourceTypes() {
- return Arrays.<Class<?>> asList(InputStream.class, URL.class,
- File.class);
- }
-
- public void setWorkflowBundleIO(WorkflowBundleIO workflowBundleIO) {
- this.workflowBundleIO = workflowBundleIO;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleSaver.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleSaver.java b/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleSaver.java
deleted file mode 100644
index f6b7108..0000000
--- a/taverna-workbench-file-impl/src/main/java/net/sf/taverna/t2/workbench/file/impl/WorkflowBundleSaver.java
+++ /dev/null
@@ -1,145 +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.impl;
-
-import static net.sf.taverna.t2.workbench.file.impl.WorkflowBundleFileType.APPLICATION_VND_TAVERNA_SCUFL2_WORKFLOW_BUNDLE;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import net.sf.taverna.t2.workbench.file.AbstractDataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.DataflowInfo;
-import net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler;
-import net.sf.taverna.t2.workbench.file.FileType;
-import net.sf.taverna.t2.workbench.file.exceptions.SaveException;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.container.WorkflowBundle;
-import uk.org.taverna.scufl2.api.io.WorkflowBundleIO;
-
-public class WorkflowBundleSaver extends AbstractDataflowPersistenceHandler
- implements DataflowPersistenceHandler {
- private static final WorkflowBundleFileType WF_BUNDLE_FILE_TYPE = new WorkflowBundleFileType();
- private static Logger logger = Logger.getLogger(WorkflowBundleSaver.class);
- private WorkflowBundleIO workflowBundleIO;
-
- @Override
- public DataflowInfo saveDataflow(WorkflowBundle workflowBundle, FileType fileType,
- Object destination) throws SaveException {
- if (!getSaveFileTypes().contains(fileType))
- throw new IllegalArgumentException("Unsupported file type "
- + fileType);
- OutputStream outStream;
- if (destination instanceof File)
- try {
- outStream = new FileOutputStream((File) destination);
- } catch (FileNotFoundException e) {
- throw new SaveException("Can't create workflow file "
- + destination + ":\n" + e.getLocalizedMessage(), e);
- }
- else if (destination instanceof OutputStream)
- outStream = (OutputStream) destination;
- else
- throw new SaveException("Unsupported destination type "
- + destination.getClass());
-
- try {
- saveDataflowToStream(workflowBundle, outStream);
- } finally {
- try {
- // Only close if we opened the stream
- if (!(destination instanceof OutputStream))
- outStream.close();
- } catch (IOException e) {
- logger.warn("Could not close stream", e);
- }
- }
-
- if (destination instanceof File)
- return new FileDataflowInfo(WF_BUNDLE_FILE_TYPE, (File) destination,
- workflowBundle);
- return new DataflowInfo(WF_BUNDLE_FILE_TYPE, destination, workflowBundle);
- }
-
- protected void saveDataflowToStream(WorkflowBundle workflowBundle,
- OutputStream fileOutStream) throws SaveException {
- try {
- workflowBundleIO.writeBundle(workflowBundle, fileOutStream,
- APPLICATION_VND_TAVERNA_SCUFL2_WORKFLOW_BUNDLE);
- } catch (Exception e) {
- throw new SaveException("Can't write workflow:\n"
- + e.getLocalizedMessage(), e);
- }
- }
-
- @Override
- public List<FileType> getSaveFileTypes() {
- return Arrays.<FileType> asList(WF_BUNDLE_FILE_TYPE);
- }
-
- @Override
- public List<Class<?>> getSaveDestinationTypes() {
- return Arrays.<Class<?>> asList(File.class, OutputStream.class);
- }
-
- @Override
- public boolean wouldOverwriteDataflow(WorkflowBundle workflowBundle, FileType fileType,
- Object destination, DataflowInfo lastDataflowInfo) {
- if (!getSaveFileTypes().contains(fileType))
- throw new IllegalArgumentException("Unsupported file type "
- + fileType);
- if (!(destination instanceof File))
- return false;
-
- File file;
- try {
- file = ((File) destination).getCanonicalFile();
- } catch (IOException e) {
- return false;
- }
- if (!file.exists())
- return false;
- if (lastDataflowInfo == null)
- return true;
- Object lastDestination = lastDataflowInfo.getCanonicalSource();
- if (!(lastDestination instanceof File))
- return true;
- File lastFile = (File) lastDestination;
- if (!lastFile.getAbsoluteFile().equals(file))
- return true;
-
- Date lastModified = new Date(file.lastModified());
- if (lastModified.equals(lastDataflowInfo.getLastModified()))
- return false;
- return true;
- }
-
- public void setWorkflowBundleIO(WorkflowBundleIO workflowBundleIO) {
- this.workflowBundleIO = workflowBundleIO;
- }
-}