http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java deleted file mode 100644 index e578ef2..0000000 --- a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java +++ /dev/null @@ -1,203 +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.design.ui; - -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.NONE; -import static java.awt.GridBagConstraints.NORTHWEST; -import static java.awt.GridBagConstraints.WEST; -import static java.awt.event.ItemEvent.SELECTED; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -import javax.swing.ButtonGroup; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JSpinner; -import javax.swing.JTextField; -import javax.swing.SpinnerNumberModel; -import javax.swing.border.EmptyBorder; - -/** - * UI for creating/editing dataflow input ports. - * - * @author David Withers - */ -public class DataflowInputPortPanel extends JPanel { - private static final long serialVersionUID = 2650486705615513458L; - - private JTextField portNameField; - private JRadioButton singleValueButton; - private JRadioButton listValueButton; - private JSpinner listDepthSpinner; - - public DataflowInputPortPanel() { - super(new GridBagLayout()); - - portNameField = new JTextField(); - singleValueButton = new JRadioButton("Single value"); - listValueButton = new JRadioButton("List of depth "); - listDepthSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 100, 1)); - - setBorder(new EmptyBorder(10, 10, 10, 10)); - - GridBagConstraints constraints = new GridBagConstraints(); - - constraints.anchor = WEST; - constraints.gridx = 0; - constraints.gridy = 0; - constraints.ipadx = 10; - add(new JLabel("Name:"), constraints); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - constraints.weightx = 1d; - constraints.fill = HORIZONTAL; - add(portNameField, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - constraints.gridwidth = 1; - constraints.weightx = 0d; - constraints.fill = NONE; - constraints.ipadx = 10; - constraints.insets = new Insets(10, 0, 0, 0); - add(new JLabel("Type:"), constraints); - - ButtonGroup buttonGroup = new ButtonGroup(); - buttonGroup.add(singleValueButton); - buttonGroup.add(listValueButton); - - final JLabel helpLabel = new JLabel( - "Depth 1 is a list, 2 is a list of lists, etc."); - helpLabel.setFont(helpLabel.getFont().deriveFont(11f)); - - singleValueButton.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - boolean selected = (e.getStateChange() == SELECTED); - listDepthSpinner.setEnabled(!selected); - helpLabel.setEnabled(!selected); - } - }); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - add(singleValueButton, constraints); - constraints.gridy = 2; - constraints.gridwidth = 1; - constraints.insets = new Insets(0, 0, 0, 0); - add(listValueButton, constraints); - constraints.gridx = 2; - add(listDepthSpinner, constraints); - constraints.gridx = 1; - constraints.gridy = 3; - constraints.gridwidth = 2; - constraints.weighty = 1d; - constraints.anchor = NORTHWEST; - constraints.insets = new Insets(0, 20, 0, 0); - add(helpLabel, constraints); - } - - /** - * Returns the portNameField. - * - * @return the portNameField - */ - public JTextField getPortNameField() { - return portNameField; - } - - /** - * Returns the singleValueButton. - * - * @return the singleValueButton - */ - public JRadioButton getSingleValueButton() { - return singleValueButton; - } - - /** - * Returns the listValueButton. - * - * @return the listValueButton - */ - public JRadioButton getListValueButton() { - return listValueButton; - } - - /** - * Returns the port name. - * - * @return the port name - */ - public String getPortName() { - return portNameField.getText(); - } - - /** - * Sets the port name. - * - * @param name - * the name of the port - */ - public void setPortName(String name) { - portNameField.setText(name); - // Select the text - if (!name.isEmpty()) { - portNameField.setSelectionStart(0); - portNameField.setSelectionEnd(name.length()); - } - } - - /** - * Returns the port depth. - * - * @return the port depth - */ - public int getPortDepth() { - if (singleValueButton.isSelected()) - return 0; - return (Integer) listDepthSpinner.getValue(); - } - - /** - * Sets the port depth. - * - * @param depth - * the depth of the port - */ - public void setPortDepth(int depth) { - if (depth == 0) { - singleValueButton.setSelected(true); - } else { - listValueButton.setSelected(true); - listDepthSpinner.setValue(depth); - } - } -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java deleted file mode 100644 index 59ac0f7..0000000 --- a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java +++ /dev/null @@ -1,105 +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.design.ui; - -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.VERTICAL; -import static java.awt.GridBagConstraints.WEST; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; - -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.border.EmptyBorder; - -/** - * UI for creating/editing dataflow output ports. - * - * @author David Withers - */ -public class DataflowOutputPortPanel extends JPanel { - private static final long serialVersionUID = -2542858679939965553L; - - private JTextField portNameField; - - public DataflowOutputPortPanel() { - super(new GridBagLayout()); - - portNameField = new JTextField(); - - setBorder(new EmptyBorder(10, 10, 10, 10)); - - GridBagConstraints constraints = new GridBagConstraints(); - - constraints.anchor = WEST; - constraints.gridx = 0; - constraints.gridy = 0; - constraints.ipadx = 10; - add(new JLabel("Name:"), constraints); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - constraints.weightx = 1d; - constraints.fill = HORIZONTAL; - add(portNameField, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - constraints.fill = VERTICAL; - constraints.weighty = 1d; - add(new JPanel(), constraints); - } - - /** - * Returns the portNameField. - * - * @return the portNameField - */ - public JTextField getPortNameField() { - return portNameField; - } - - /** - * Returns the port name. - * - * @return the port name - */ - public String getPortName() { - return portNameField.getText(); - } - - /** - * Sets the port name. - * - * @param name the name of the port - */ - public void setPortName(String name) { - portNameField.setText(name); - // Select the text - if (!name.isEmpty()) { - portNameField.setSelectionStart(0); - portNameField.setSelectionEnd(name.length()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java deleted file mode 100644 index 4528727..0000000 --- a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java +++ /dev/null @@ -1,101 +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.design.ui; - -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.VERTICAL; -import static java.awt.GridBagConstraints.WEST; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; - -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.border.EmptyBorder; - -/** - * UI for editing processors. - * - * @author David Withers - */ -public class ProcessorPanel extends JPanel { - private static final long serialVersionUID = 260705376633425003L; - - private JTextField processorNameField; - - public ProcessorPanel() { - super(new GridBagLayout()); - - processorNameField = new JTextField(); - - setBorder(new EmptyBorder(10, 10, 10, 10)); - - GridBagConstraints constraints = new GridBagConstraints(); - - constraints.anchor = WEST; - constraints.gridx = 0; - constraints.gridy = 0; - constraints.ipadx = 10; - add(new JLabel("Name:"), constraints); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - constraints.weightx = 1d; - constraints.fill = HORIZONTAL; - add(processorNameField, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - constraints.fill = VERTICAL; - constraints.weighty = 1d; - add(new JPanel(), constraints); - } - - /** - * Returns the processorNameField. - * - * @return the processorNameField - */ - public JTextField getProcessorNameField() { - return processorNameField; - } - - /** - * Returns the processor name. - * - * @return the processor name - */ - public String getProcessorName() { - return processorNameField.getText(); - } - - /** - * Sets the processor name. - * - * @param name - * the name of the processor - */ - public void setProcessorName(String name) { - processorNameField.setText(name); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/pom.xml ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/pom.xml b/taverna-workbench-edits-api/pom.xml deleted file mode 100644 index 1b52630..0000000 --- a/taverna-workbench-edits-api/pom.xml +++ /dev/null @@ -1,28 +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-api</artifactId> - <version>2.0-SNAPSHOT</version> - </parent> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>edits-api</artifactId> - <packaging>bundle</packaging> - <name>Edits API</name> - <description>API for doing workflow edits and undo.</description> - <dependencies> - <dependency> - <groupId>uk.org.taverna.scufl2</groupId> - <artifactId>scufl2-api</artifactId> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.lang</groupId> - <artifactId>observer</artifactId> - </dependency> - <dependency> - <groupId>com.fasterxml.jackson.core</groupId> - <artifactId>jackson-databind</artifactId> - </dependency> - </dependencies> -</project> http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/CompoundEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/CompoundEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/CompoundEdit.java deleted file mode 100644 index 58c7add..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/CompoundEdit.java +++ /dev/null @@ -1,118 +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.edits; - -import java.util.ArrayList; -import java.util.List; - -import uk.org.taverna.scufl2.api.common.WorkflowBean; - -/** - * Implementation of Edit which contains an ordered list of child edits. Child - * edits are applied collectively and in order, any failure in any child edit - * causes an undo of previously applied children and a propogation of the edit - * exception. - * - * @author Tom Oinn - */ -public class CompoundEdit implements Edit<WorkflowBean> { - private final transient List<Edit<?>> childEdits; - private transient boolean applied = false; - - /** - * Create a new compound edit with no existing Edit objects. - * - */ - public CompoundEdit() { - this.childEdits = new ArrayList<>(); - } - - /** - * Create a new compound edit with the specified edits as children. - */ - public CompoundEdit(List<Edit<?>> edits) { - this.childEdits = edits; - } - - /** - * Get the list of edits. - * @return a live-editable list. - */ - public List<Edit<?>> getChildEdits() { - return childEdits; - } - - /** - * Attempts to call the doEdit method of all child edits. If any of those - * children throws an EditException any successful edits are rolled back and - * the exception is rethrown as the cause of a new EditException from the - * CompoundEdit - */ - @Override - public synchronized WorkflowBean doEdit() throws EditException { - if (isApplied()) - throw new EditException("Cannot apply an edit more than once!"); - List<Edit<?>> doneEdits = new ArrayList<>(); - try { - for (Edit<?> edit : childEdits) { - edit.doEdit(); - /* - * Insert the done edit at position 0 in the list so we can - * iterate over the list in the normal order if we need to - * rollback, this ensures that the most recent edit is first. - */ - doneEdits.add(0, edit); - } - applied = true; - } catch (EditException ee) { - for (Edit<?> undoMe : doneEdits) - undoMe.undo(); - applied = false; - throw new EditException("Failed child of compound edit", ee); - } - return null; - } - - /** - * There is no explicit subject for a compound edit, so this method always - * returns null. - */ - @Override - public Object getSubject() { - return null; - } - - /** - * Rolls back all child edits in reverse order - */ - @Override - public synchronized void undo() { - for (int i = childEdits.size() - 1; i >= 0; i--) - // Undo child edits in reverse order - childEdits.get(i).undo(); - applied = false; - } - - @Override - public boolean isApplied() { - return applied; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/Edit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/Edit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/Edit.java deleted file mode 100644 index fad211e..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/Edit.java +++ /dev/null @@ -1,66 +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.edits; - -import uk.org.taverna.scufl2.api.common.WorkflowBean; - -/** - * The workflow object model exposed by this API is read only. Properties of the - * model can only be changed through implementations of this interface, this - * ensures a consistant approach to grouped edits (transactions) and undo / redo - * support within the UI. It also potentially allows for capture of editing - * provenance where a workflow is repurposed or created from an aggregate of - * several others. - * - * @author Tom Oinn - */ -public interface Edit<TargetType extends WorkflowBean> { - /** - * Perform the edit - * - * @throws EditException - * if the edit fails. If an edit throws EditException it should - * try to ensure the subject is unaltered. Where this is - * impossible consider breaking edits down into a compound edit. - */ - TargetType doEdit() throws EditException; - - /** - * Undo the edit, reverting the subject to the state it was in prior to the - * edit - */ - void undo(); - - /** - * Return the object to which this edit applies - * - * @return - */ - Object getSubject(); - - /** - * Has the edit been applied yet? - * - * @return true if and only if the edit has been successfully applied to the - * subject - */ - boolean isApplied(); -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditException.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditException.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditException.java deleted file mode 100644 index 3c61d84..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditException.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.edits; - -/** - * Superclass of all exceptions thrown when altering the workflow model through - * the edit manager. - * - * @author Tom Oinn - */ -@SuppressWarnings("serial") -public class EditException extends Exception { - public EditException(String string) { - super(string); - } - - public EditException(String string, Throwable cause) { - super(string, cause); - } - - public EditException(Throwable t) { - super(t); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditManager.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditManager.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditManager.java deleted file mode 100644 index ce8b917..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/EditManager.java +++ /dev/null @@ -1,222 +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.edits; - -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import net.sf.taverna.t2.lang.observer.Observable; -import net.sf.taverna.t2.lang.observer.Observer; -import net.sf.taverna.t2.workbench.edits.EditManager.EditManagerEvent; - -/** - * Manager that can handle {@link Edit edits} for a {@link WorkflowBundle}. - * <p> - * Edits to a workflow that are to be undoable or redoable should be created by - * using {@link EditManager#getEdits()} to get an {@link Edits} object. Using - * this to create {@link Edit}s, instead of calling {@link Edit#doEdit()}, use - * {@link EditManager#doDataflowEdit(WorkflowBundle, Edit)} to associate the - * edit with the specified Dataflow. - * <p> - * It is possible to undo a series of edits done on a particular dataflow in - * this way by using {@link #undoDataflowEdit(WorkflowBundle)}. If one or more - * undoes have been performed, they can be redone step by step using - * {@link #redoDataflowEdit(WorkflowBundle)}. Note that it is no longer possible - * to call {@link #redoDataflowEdit(WorkflowBundle)} after a - * {@link #doDataflowEdit(WorkflowBundle, Edit)}. - * <p> - * The EditManager is {@link Observable}. If you - * {@linkplain Observable#addObserver(net.sf.taverna.t2.lang.observer.Observer) - * add an observer} you can be notified on {@linkplain DataflowEditEvent edits}, - * {@linkplain DataFlowUndoEvent undoes} and {@linkplain DataFlowRedoEvent - * redoes}. - * - * @author Stian Soiland-Reyes - */ -public interface EditManager extends Observable<EditManagerEvent> { - /** - * <code>true</code> if {@link #redoDataflowEdit(WorkflowBundle)} on the - * given dataflow would redo the last undone edit. If there are no previous - * edits, return <code>false</code>. - * - * @param dataflow - * {@link WorkflowBundle} which last affecting edit is to be - * undone - * @return <code>true</code if and only if - * {@link #redoDataflowEdit(WorkflowBundle)} would undo - */ - boolean canRedoDataflowEdit(WorkflowBundle dataflow); - - /** - * <code>true</code> if {@link #undoDataflowEdit(WorkflowBundle)} on the - * given dataflow would undo the last edit. If there are no previous edits, - * return <code>false</code>. - * - * @param dataflow - * {@link WorkflowBundle} which last affecting edit is to be - * undone - * @return <code>true</code if {@link #undoDataflowEdit(WorkflowBundle)} - * would undo - */ - boolean canUndoDataflowEdit(WorkflowBundle dataflow); - - /** - * Do an {@link Edit} affecting the given {@link WorkflowBundle}. - * <p> - * The edit is {@link Edit#doEdit() performed} and the edit can later be - * undone using {@link EditManager#undoDataflowEdit(WorkflowBundle)}. - * <p> - * Note that any events previously undone with - * {@link EditManager#undoDataflowEdit(WorkflowBundle)} for the given - * dataflow can no longer be - * {@link EditManager#redoDataflowEdit(WorkflowBundle) redone} after calling - * this method. - * - * @see EditManager#undoDataflowEdit(WorkflowBundle) - * @param dataflow - * {@link WorkflowBundle} this edit is affecting - * @param edit - * {@link Edit} that should be done using {@link Edit#doEdit()}. - * @throws EditException - * If {@link Edit#doEdit()} fails - */ - void doDataflowEdit(WorkflowBundle dataflow, Edit<?> edit) - throws EditException; - - /** - * Redo the last {@link Edit} that was undone using - * {@link #undoDataflowEdit(WorkflowBundle)}. - * <p> - * Note that the {@link EditManager} might only be able to redo a reasonable - * number of steps. - * <p> - * It is not possible to use {@link #redoDataflowEdit(WorkflowBundle)} after - * a {@link #doDataflowEdit(WorkflowBundle, Edit)} affecting the same - * {@link WorkflowBundle}, or if no edits have been undone yet. No action - * would be taken in these cases. - * - * @param dataflow - * {@link WorkflowBundle} which last affecting edit is to be - * redone - * @throws EditException - * If {@link Edit#doEdit()} fails - */ - void redoDataflowEdit(WorkflowBundle dataflow) throws EditException; - - /** - * Undo the last {@link Edit} affecting the given {@link WorkflowBundle}. - * <p> - * This can be called in succession until there are no more known undoes. - * Note that the {@link EditManager} might only be able to undo a reasonable - * number of steps. - * <p> - * The last edit must have been performed using - * {@link EditManager#doDataflowEdit(WorkflowBundle, Edit)} or - * {@link EditManager#redoDataflowEdit(WorkflowBundle)}. The undo is done - * using {@link Edit#undo()}. If no edits have been performed for the - * dataflow yet, no action is taken. - * <p> - * Undoes can be redone using {@link #redoDataflowEdit(WorkflowBundle)}. - * - * @param dataflow - * {@link WorkflowBundle} which last affecting edit is to be - * undone - */ - void undoDataflowEdit(WorkflowBundle dataflow); - - /** - * An event about an {@link Edit} on a {@link WorkflowBundle}, accessible - * through {@link AbstractDataflowEditEvent#getEdit()} and - * {@link AbstractDataflowEditEvent#getDataFlow()}. - */ - public static abstract class AbstractDataflowEditEvent implements - EditManagerEvent { - private final WorkflowBundle dataFlow; - private final Edit<?> edit; - - public AbstractDataflowEditEvent(WorkflowBundle dataFlow, Edit<?> edit) { - if (dataFlow == null || edit == null) - throw new NullPointerException( - "Dataflow and/or Edit can't be null"); - this.dataFlow = dataFlow; - this.edit = edit; - } - - /** - * The {@link WorkflowBundle} this event affected. - * - * @return A {@link WorkflowBundle} - */ - public WorkflowBundle getDataFlow() { - return dataFlow; - } - - /** - * The {@link Edit} that was performed, undoed or redone on the - * {@link #getDataFlow() dataflow}. - * - * @return An {@link Edit} - */ - @Override - public Edit<?> getEdit() { - return edit; - } - } - - /** - * An event sent when an {@link Edit} has been performed on a - * {@link WorkflowBundle}. - * - */ - public static class DataflowEditEvent extends AbstractDataflowEditEvent { - public DataflowEditEvent(WorkflowBundle dataFlow, Edit<?> edit) { - super(dataFlow, edit); - } - } - - /** - * An event sent when a previously undone {@link Edit} has been redone on a - * {@link WorkflowBundle}. - * - */ - public static class DataFlowRedoEvent extends AbstractDataflowEditEvent { - public DataFlowRedoEvent(WorkflowBundle dataFlow, Edit<?> edit) { - super(dataFlow, edit); - } - } - - /** - * An event sent when an {@link Edit} has been undone on a - * {@link WorkflowBundle}. - * - */ - public static class DataFlowUndoEvent extends AbstractDataflowEditEvent { - public DataFlowUndoEvent(WorkflowBundle dataFlow, Edit<?> edit) { - super(dataFlow, edit); - } - } - - /** - * An event given to {@link Observer}s registered with - * {@link Observable#addObserver(Observer)}. - */ - public interface EditManagerEvent { - public Edit<?> getEdit(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/package-info.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/package-info.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/package-info.java deleted file mode 100644 index c1df7c9..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workbench/edits/package-info.java +++ /dev/null @@ -1,48 +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 - ******************************************************************************/ -/** - * A {@link net.sf.taverna.t2.workbench.edits.EditManager} that can manage - * {@link net.sf.taverna.t2.workflowmodel.Edit}s performed from the UI. - * <p> - * To perform an edit that is to be undoable, use - * {@link EditManager#doDataflowEdit(net.sf.taverna.t2.workflowmodel.Dataflow, net.sf.taverna.t2.workflowmodel.Edit)} - * instead of {@link net.sf.taverna.t2.workflowmodel.Edit#doEdit()}. Such edits - * can be - * {@link EditManager#undoDataflowEdit(net.sf.taverna.t2.workflowmodel.Dataflow) undone} - * and - * {@link EditManager#redoDataflowEdit(net.sf.taverna.t2.workflowmodel.Dataflow) redone}. - * </p> - * <p> - * Edits are organised by {@link net.sf.taverna.t2.workflowmodel.Dataflow} so - * that if a user changes the active workflow in the Workbench and does "Undo" - - * that would undo the last undo done related to that workflow. - * </p> - * <p> - * The {@link net.sf.taverna.t2.workbench.edits.impl} implementation of the - * EditManager is discovered by {@link net.sf.taverna.t2.workbench.edits.EditManager#getInstance()}. The - * implementation also includes {@link net.sf.taverna.t2.ui.menu.MenuComponent}s - * for Undo and Redo. - * </p> - * - * @author Stian Soiland-Reyes - * - */ -package net.sf.taverna.t2.workbench.edits; http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AbstractEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AbstractEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AbstractEdit.java deleted file mode 100644 index e6c8e68..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AbstractEdit.java +++ /dev/null @@ -1,119 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007-2008 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.workflow.edits; - -import net.sf.taverna.t2.workbench.edits.Edit; -import net.sf.taverna.t2.workbench.edits.EditException; -import uk.org.taverna.scufl2.api.common.Scufl2Tools; -import uk.org.taverna.scufl2.api.common.WorkflowBean; - -/** - * An abstract {@link Edit} implementation that checks if an edit has been - * applied or not. - * - * @author Stian Soiland-Reyes - * - * @param <Subject> - * Subject of this edit - */ -public abstract class AbstractEdit<Subject extends WorkflowBean> implements - Edit<Subject> { - private boolean applied = false; - private final Subject subject; - protected final Scufl2Tools scufl2Tools = new Scufl2Tools(); - - /** - * Construct an AbstractEdit. - * - * @param subjectType - * The expected implementation type of the subject. The edit will - * not go through unless the subject is an instance of this type. - * If the edit don't care about the implementation type, provide - * the official SubjectInterface instead. - * @param subject - * The subject of this edit - */ - public AbstractEdit(Subject subject) { - if (subject == null && !isNullSubjectAllowed()) - throw new IllegalArgumentException( - "Cannot construct an edit with null subject"); - this.subject = subject; - } - - protected boolean isNullSubjectAllowed() { - return false; - } - - @Override - public final Subject doEdit() throws EditException { - if (applied) - throw new EditException("Edit has already been applied!"); - try { - synchronized (subject) { - doEditAction(subject); - applied = true; - return this.subject; - } - } catch (EditException ee) { - applied = false; - throw ee; - } - } - - /** - * Do the actual edit here - * - * @param subject - * The instance to which the edit applies - * @throws EditException - */ - protected abstract void doEditAction(Subject subject) - throws EditException; - - /** - * Undo any edit effects here - * - * @param subject - * The instance to which the edit applies - */ - protected abstract void undoEditAction(Subject subject); - - @Override - public final Subject getSubject() { - return subject; - } - - @Override - public final boolean isApplied() { - return applied; - } - - @Override - public final void undo() { - if (!applied) - throw new RuntimeException( - "Attempt to undo edit that was never applied"); - synchronized (subject) { - undoEditAction(subject); - applied = false; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityEdit.java deleted file mode 100644 index c6ffa7c..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityEdit.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2012 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.workflow.edits; - -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.profiles.ProcessorBinding; - -/** - * Creates a ProcessorBinding binding for the Activity and Processor and adds the binding to the - * Profile containing the Activity. - * - * @author David Withers - */ -public class AddActivityEdit extends AbstractEdit<Processor> { - private Activity activity; - private ProcessorBinding addedProcessorBinding; - - public AddActivityEdit(Processor processor, Activity activity) { - super(processor); - this.activity = activity; - } - - @Override - protected void doEditAction(Processor processor) { - ProcessorBinding binding = new ProcessorBinding(); - binding.setBoundProcessor(processor); - binding.setBoundActivity(activity); - binding.setParent(activity.getParent()); - addedProcessorBinding = binding; - } - - @Override - protected void undoEditAction(Processor processor) { - addedProcessorBinding.setParent(null); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityInputPortMappingEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityInputPortMappingEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityInputPortMappingEdit.java deleted file mode 100644 index 9a7e8b7..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityInputPortMappingEdit.java +++ /dev/null @@ -1,59 +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.workflow.edits; - -import java.util.ArrayList; -import java.util.List; - -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.port.InputActivityPort; -import uk.org.taverna.scufl2.api.port.InputProcessorPort; -import uk.org.taverna.scufl2.api.profiles.ProcessorBinding; -import uk.org.taverna.scufl2.api.profiles.ProcessorInputPortBinding; - -public class AddActivityInputPortMappingEdit extends AbstractEdit<Activity> { - private final InputProcessorPort inputProcessorPort; - private final InputActivityPort inputActivityPort; - private List<ProcessorInputPortBinding> portBindings; - - public AddActivityInputPortMappingEdit(Activity activity, - InputProcessorPort inputProcessorPort, - InputActivityPort inputActivityPort) { - super(activity); - this.inputProcessorPort = inputProcessorPort; - this.inputActivityPort = inputActivityPort; - } - - @Override - protected void doEditAction(Activity activity) { - portBindings = new ArrayList<>(); - for (ProcessorBinding binding : scufl2Tools - .processorBindingsToActivity(activity)) - portBindings.add(new ProcessorInputPortBinding(binding, - inputProcessorPort, inputActivityPort)); - } - - @Override - protected void undoEditAction(Activity activity) { - for (ProcessorInputPortBinding binding : portBindings) - binding.setParent(null); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityOutputPortMappingEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityOutputPortMappingEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityOutputPortMappingEdit.java deleted file mode 100644 index edafe8e..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddActivityOutputPortMappingEdit.java +++ /dev/null @@ -1,59 +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.workflow.edits; - -import java.util.ArrayList; -import java.util.List; - -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.port.OutputActivityPort; -import uk.org.taverna.scufl2.api.port.OutputProcessorPort; -import uk.org.taverna.scufl2.api.profiles.ProcessorBinding; -import uk.org.taverna.scufl2.api.profiles.ProcessorOutputPortBinding; - -public class AddActivityOutputPortMappingEdit extends AbstractEdit<Activity> { - private final OutputProcessorPort outputProcessorPort; - private final OutputActivityPort outputActivityPort; - private List<ProcessorOutputPortBinding> portBindings; - - public AddActivityOutputPortMappingEdit(Activity activity, - OutputProcessorPort outputProcessorPort, - OutputActivityPort outputActivityPort) { - super(activity); - this.outputProcessorPort = outputProcessorPort; - this.outputActivityPort = outputActivityPort; - } - - @Override - protected void doEditAction(Activity activity) { - portBindings = new ArrayList<>(); - for (ProcessorBinding binding : scufl2Tools - .processorBindingsToActivity(activity)) - portBindings.add(new ProcessorOutputPortBinding(binding, - outputActivityPort, outputProcessorPort)); - } - - @Override - protected void undoEditAction(Activity activity) { - for (ProcessorOutputPortBinding binding : portBindings) - binding.setParent(null); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddChildEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddChildEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddChildEdit.java deleted file mode 100644 index abd8d9f..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddChildEdit.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2012 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.workflow.edits; - -import uk.org.taverna.scufl2.api.common.Child; -import uk.org.taverna.scufl2.api.common.WorkflowBean; - -/** - * Adds a child to a parent. - * - * @author David Withers - */ -public class AddChildEdit<T extends WorkflowBean> extends AbstractEdit<T> { - private Child<T> child; - - public AddChildEdit(T parent, Child<T> child) { - super(parent); - this.child = child; - } - - @Override - protected void doEditAction(T parent) { - child.setParent(parent); - } - - @Override - protected void undoEditAction(T parent) { - child.setParent(null); - } - - public Child<T> getChild() { - return child; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddDataLinkEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddDataLinkEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddDataLinkEdit.java deleted file mode 100644 index 10ff290..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddDataLinkEdit.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2012 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.workflow.edits; - -import java.util.List; - -import uk.org.taverna.scufl2.api.core.DataLink; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.iterationstrategy.CrossProduct; -import uk.org.taverna.scufl2.api.iterationstrategy.DotProduct; -import uk.org.taverna.scufl2.api.iterationstrategy.IterationStrategyParent; -import uk.org.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode; -import uk.org.taverna.scufl2.api.iterationstrategy.PortNode; -import uk.org.taverna.scufl2.api.port.InputProcessorPort; -import uk.org.taverna.scufl2.api.port.ReceiverPort; - -/** - * Adds a DataLink to a Workflow. - * <p> - * Handles setting the merge position of all dataLinks with the same receiver port. - * <p> - * Modifies the processor's iteration strategy or when the first DataLink is added. - * - * @author David Withers - */ -public class AddDataLinkEdit extends AbstractEdit<Workflow> { - private DataLink dataLink; - private PortNode portNode; - - public AddDataLinkEdit(Workflow workflow, DataLink dataLink) { - super(workflow); - this.dataLink = dataLink; - } - - @Override - protected void doEditAction(Workflow workflow) { - ReceiverPort sink = dataLink.getSendsTo(); - List<DataLink> datalinksTo = scufl2Tools.datalinksTo(sink); - if (datalinksTo.size() > 0) { - if (datalinksTo.size() == 1) - datalinksTo.get(0).setMergePosition(0); - dataLink.setMergePosition(datalinksTo.size()); - } else { - dataLink.setMergePosition(null); - if (sink instanceof InputProcessorPort) { - InputProcessorPort inputProcessorPort = (InputProcessorPort) sink; - for (IterationStrategyTopNode node : inputProcessorPort.getParent().getIterationStrategyStack()) { - portNode = new PortNode(node, inputProcessorPort); - portNode.setDesiredDepth(inputProcessorPort.getDepth()); - break; - } - } - } - dataLink.setParent(workflow); - } - - @Override - protected void undoEditAction(Workflow workflow) { - dataLink.setParent(null); - ReceiverPort sink = dataLink.getSendsTo(); - List<DataLink> datalinksTo = scufl2Tools.datalinksTo(sink); - if (datalinksTo.size() == 1) - datalinksTo.get(0).setMergePosition(null); - else if (datalinksTo.isEmpty()&&portNode != null) { - IterationStrategyParent parent = portNode.getParent(); - if (parent instanceof DotProduct) - ((DotProduct) parent).remove(portNode); - else if (parent instanceof CrossProduct) - ((CrossProduct) parent).remove(portNode); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyEdit.java deleted file mode 100644 index 8677352..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyEdit.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2011 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.workflow.edits; - -import uk.org.taverna.scufl2.api.iterationstrategy.IterationStrategyStack; -import uk.org.taverna.scufl2.api.iterationstrategy.IterationStrategyTopNode; - -/** - * Adds an IterationStrategyTopNode to an IterationStrategyStack. - * - * @author David Withers - */ -public class AddIterationStrategyEdit extends AbstractEdit<IterationStrategyStack> { - private final IterationStrategyTopNode iterationStrategyTopNode; - - public AddIterationStrategyEdit(IterationStrategyStack iterationStrategyStack, - IterationStrategyTopNode iterationStrategyTopNode) { - super(iterationStrategyStack); - this.iterationStrategyTopNode = iterationStrategyTopNode; - } - - @Override - public void doEditAction(IterationStrategyStack iterationStrategyStack) { - iterationStrategyStack.add(iterationStrategyTopNode); - } - - @Override - public void undoEditAction(IterationStrategyStack iterationStrategyStack) { - iterationStrategyStack.remove(iterationStrategyTopNode); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyInputPortEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyInputPortEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyInputPortEdit.java deleted file mode 100644 index bb51fc6..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddIterationStrategyInputPortEdit.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2011 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.workflow.edits; - -import uk.org.taverna.scufl2.api.iterationstrategy.IterationStrategyStack; -import uk.org.taverna.scufl2.api.iterationstrategy.PortNode; - -/** - * Adds an iteration strategy input port node to an iteration strategy. - * - * @author David Withers - */ -public class AddIterationStrategyInputPortEdit extends - AbstractEdit<IterationStrategyStack> { - private final PortNode portNode; - - public AddIterationStrategyInputPortEdit( - IterationStrategyStack iterationStrategy, PortNode portNode) { - super(iterationStrategy); - this.portNode = portNode; - } - - @Override - public void doEditAction(IterationStrategyStack iterationStrategy) { - portNode.setParent(iterationStrategy.get(0)); - } - - @Override - public void undoEditAction(IterationStrategyStack iterationStrategy) { - portNode.setParent(null); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorEdit.java deleted file mode 100644 index 04cf73b..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorEdit.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.workflow.edits; - -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.core.Workflow; - -/** - * Adds a Processor to a Workflow. - * - * @author Stuart Owen - * @author David Withers - */ -public class AddProcessorEdit extends AddChildEdit<Workflow> { - private Processor processor; - - public AddProcessorEdit(Workflow workflow, Processor processor) { - super(workflow, processor); - this.processor = processor; - } - - @Override - protected void doEditAction(Workflow workflow) { - getSubject().getProcessors().addWithUniqueName(processor); - super.doEditAction(workflow); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorInputPortEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorInputPortEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorInputPortEdit.java deleted file mode 100644 index f722ddc..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorInputPortEdit.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.workflow.edits; - -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.port.InputProcessorPort; - -/** - * Adds an input port to a processor. - * - * @author Tom Oinn - * @author David Withers - */ -public class AddProcessorInputPortEdit extends AddChildEdit<Processor> { - private final InputProcessorPort port; - - public AddProcessorInputPortEdit(Processor processor, InputProcessorPort port) { - super(processor, port); - this.port = port; - } - - @Override - protected void doEditAction(Processor processor) { - processor.getInputPorts().addWithUniqueName(port); - super.doEditAction(processor); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorOutputPortEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorOutputPortEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorOutputPortEdit.java deleted file mode 100644 index eec51b1..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddProcessorOutputPortEdit.java +++ /dev/null @@ -1,46 +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.workflow.edits; - -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.port.OutputProcessorPort; - -/** - * Adds an output port to a processor. - * - * @author Tom Oinn - * @author David Withers - */ -public class AddProcessorOutputPortEdit extends AddChildEdit<Processor> { - private final OutputProcessorPort port; - - public AddProcessorOutputPortEdit(Processor processor, - OutputProcessorPort port) { - super(processor, port); - this.port = port; - } - - @Override - protected void doEditAction(Processor processor) { - processor.getOutputPorts().addWithUniqueName(port); - super.doEditAction(processor); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowInputPortEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowInputPortEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowInputPortEdit.java deleted file mode 100644 index 91a9153..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowInputPortEdit.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2013 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.workflow.edits; - -import static uk.org.taverna.scufl2.api.common.Scufl2Tools.NESTED_WORKFLOW; - -import java.util.List; - -import net.sf.taverna.t2.workbench.edits.CompoundEdit; -import net.sf.taverna.t2.workbench.edits.Edit; -import net.sf.taverna.t2.workbench.edits.EditException; -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.configurations.Configuration; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.port.InputActivityPort; -import uk.org.taverna.scufl2.api.port.InputProcessorPort; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import uk.org.taverna.scufl2.api.profiles.ProcessorBinding; -import uk.org.taverna.scufl2.api.profiles.ProcessorInputPortBinding; -import uk.org.taverna.scufl2.api.profiles.Profile; - -import com.fasterxml.jackson.databind.JsonNode; - -/** - * Adds an input port to a workflow. - * - * @author David Withers - */ -public class AddWorkflowInputPortEdit extends AbstractEdit<Workflow> { - private final InputWorkflowPort port; - private final CompoundEdit nestedPortEdit = new CompoundEdit(); - - public AddWorkflowInputPortEdit(Workflow workflow, InputWorkflowPort port) { - super(workflow); - this.port = port; - WorkflowBundle workflowBundle = workflow.getParent(); - if (workflowBundle != null) - for (Profile profile : workflowBundle.getProfiles()) - for (Activity activity : profile.getActivities()) - if (activity.getType().equals(NESTED_WORKFLOW)) - for (Configuration c : scufl2Tools.configurationsFor( - activity, profile)) - defineEditsForOneConfiguration(workflow, port, - workflowBundle, activity, c); - } - - private void defineEditsForOneConfiguration(Workflow workflow, - InputWorkflowPort port, WorkflowBundle workflowBundle, - Activity activity, Configuration c) { - List<Edit<?>> edits = nestedPortEdit.getChildEdits(); - JsonNode nested = c.getJson().get("nestedWorkflow"); - Workflow nestedWorkflow = workflowBundle.getWorkflows().getByName( - nested.asText()); - - if (nestedWorkflow == workflow) { - InputActivityPort activityPort = new InputActivityPort(); - activityPort.setName(port.getName()); - activityPort.setDepth(port.getDepth()); - edits.add(new AddChildEdit<>(activity, activityPort)); - - for (ProcessorBinding binding : scufl2Tools - .processorBindingsToActivity(activity)) { - Processor processor = binding.getBoundProcessor(); - InputProcessorPort processorPort = new InputProcessorPort(); - processorPort.setName(port.getName()); - processorPort.setDepth(port.getDepth()); - edits.add(new AddProcessorInputPortEdit(processor, - processorPort)); - - ProcessorInputPortBinding portBinding = new ProcessorInputPortBinding(); - portBinding.setBoundProcessorPort(processorPort); - portBinding.setBoundActivityPort(activityPort); - edits.add(new AddChildEdit<>(binding, portBinding)); - } - } - } - - @Override - protected void doEditAction(Workflow workflow) throws EditException { - workflow.getInputPorts().addWithUniqueName(port); - port.setParent(workflow); - nestedPortEdit.doEdit(); - } - - @Override - protected void undoEditAction(Workflow workflow) { - port.setParent(null); - nestedPortEdit.undo(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowOutputPortEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowOutputPortEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowOutputPortEdit.java deleted file mode 100644 index 7e505f1..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/AddWorkflowOutputPortEdit.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2013 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.workflow.edits; - -import static uk.org.taverna.scufl2.api.common.Scufl2Tools.NESTED_WORKFLOW; - -import java.util.List; - -import net.sf.taverna.t2.workbench.edits.CompoundEdit; -import net.sf.taverna.t2.workbench.edits.Edit; -import net.sf.taverna.t2.workbench.edits.EditException; -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.configurations.Configuration; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.port.OutputActivityPort; -import uk.org.taverna.scufl2.api.port.OutputProcessorPort; -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; -import uk.org.taverna.scufl2.api.profiles.ProcessorBinding; -import uk.org.taverna.scufl2.api.profiles.ProcessorOutputPortBinding; -import uk.org.taverna.scufl2.api.profiles.Profile; - -import com.fasterxml.jackson.databind.JsonNode; - -/** - * Adds an output port to a workflow. - * - * @author David Withers - */ -public class AddWorkflowOutputPortEdit extends AbstractEdit<Workflow> { - private final OutputWorkflowPort port; - private final CompoundEdit nestedPortEdit = new CompoundEdit(); - - public AddWorkflowOutputPortEdit(Workflow workflow, OutputWorkflowPort port) { - super(workflow); - this.port = port; - WorkflowBundle workflowBundle = workflow.getParent(); - if (workflowBundle != null) - for (Profile profile : workflowBundle.getProfiles()) - for (Activity activity : profile.getActivities()) - if (activity.getType().equals(NESTED_WORKFLOW)) - for (Configuration c : scufl2Tools.configurationsFor( - activity, profile)) - defineEditsForOneConfiguration(workflow, port, - workflowBundle, activity, c); - } - - private void defineEditsForOneConfiguration(Workflow workflow, - OutputWorkflowPort port, WorkflowBundle workflowBundle, - Activity activity, Configuration c) { - List<Edit<?>> edits = nestedPortEdit.getChildEdits(); - JsonNode nested = c.getJson().get("nestedWorkflow"); - Workflow nestedWorkflow = workflowBundle.getWorkflows().getByName( - nested.asText()); - if (nestedWorkflow == workflow) { - OutputActivityPort activityPort = new OutputActivityPort(); - activityPort.setName(port.getName()); - activityPort.setDepth(0); - activityPort.setGranularDepth(0); - edits.add(new AddChildEdit<>(activity, activityPort)); - - for (ProcessorBinding binding : scufl2Tools - .processorBindingsToActivity(activity)) { - Processor processor = binding.getBoundProcessor(); - OutputProcessorPort processorPort = new OutputProcessorPort(); - processorPort.setName(port.getName()); - processorPort.setDepth(0); - processorPort.setGranularDepth(0); - edits.add(new AddProcessorOutputPortEdit(processor, - processorPort)); - - ProcessorOutputPortBinding portBinding = new ProcessorOutputPortBinding(); - portBinding.setBoundProcessorPort(processorPort); - portBinding.setBoundActivityPort(activityPort); - edits.add(new AddChildEdit<>(binding, portBinding)); - } - } - } - - @Override - protected void doEditAction(Workflow workflow) throws EditException { - workflow.getOutputPorts().addWithUniqueName(port); - port.setParent(workflow); - nestedPortEdit.doEdit(); - } - - @Override - protected void undoEditAction(Workflow workflow) { - port.setParent(null); - nestedPortEdit.undo(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeDepthEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeDepthEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeDepthEdit.java deleted file mode 100644 index 071b653..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeDepthEdit.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2012 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.workflow.edits; - -import static uk.org.taverna.scufl2.api.common.Scufl2Tools.NESTED_WORKFLOW; -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.configurations.Configuration; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.port.ActivityPort; -import uk.org.taverna.scufl2.api.port.DepthPort; -import uk.org.taverna.scufl2.api.port.InputProcessorPort; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import uk.org.taverna.scufl2.api.profiles.ProcessorBinding; -import uk.org.taverna.scufl2.api.profiles.ProcessorInputPortBinding; -import uk.org.taverna.scufl2.api.profiles.Profile; - -import com.fasterxml.jackson.databind.JsonNode; - -/** - * Changes the depth of a port. - * - * @author David Withers - */ -public class ChangeDepthEdit<T extends DepthPort> extends AbstractEdit<T> { - private Integer newDepth, oldDepth; - - public ChangeDepthEdit(T depthPort, Integer newDepth) { - super(depthPort); - this.newDepth = newDepth; - oldDepth = depthPort.getDepth(); - } - - @Override - protected void doEditAction(T depthPort) { - depthPort.setDepth(newDepth); - if (depthPort instanceof InputWorkflowPort) - checkNestedPortDepths((InputWorkflowPort) depthPort, newDepth); - } - - @Override - protected void undoEditAction(T depthPort) { - depthPort.setDepth(oldDepth); - if (depthPort instanceof InputWorkflowPort) - checkNestedPortDepths((InputWorkflowPort) depthPort, oldDepth); - } - - private void checkNestedPortDepths(InputWorkflowPort workflowPort, - Integer depth) { - Workflow workflow = workflowPort.getParent(); - if (workflow != null) { - WorkflowBundle workflowBundle = workflow.getParent(); - if (workflowBundle != null) - for (Profile profile : workflowBundle.getProfiles()) - for (Activity activity : profile.getActivities()) - if (activity.getType().equals(NESTED_WORKFLOW)) - for (Configuration c : scufl2Tools - .configurationsFor(activity, profile)) - checkOneConfiguration(workflowPort, depth, - workflow, workflowBundle, activity, c); - } - } - - private void checkOneConfiguration(InputWorkflowPort workflowPort, - Integer depth, Workflow workflow, WorkflowBundle workflowBundle, - Activity activity, Configuration c) { - JsonNode nested = c.getJson().get("nestedWorkflow"); - Workflow nestedWorkflow = workflowBundle.getWorkflows().getByName( - nested.asText()); - if (nestedWorkflow != workflow) - return; - - ActivityPort activityPort = activity.getInputPorts().getByName( - workflowPort.getName()); - activityPort.setDepth(depth); - for (ProcessorBinding binding : scufl2Tools - .processorBindingsToActivity(activity)) - for (ProcessorInputPortBinding portBinding : binding - .getInputPortBindings()) - if (portBinding.getBoundActivityPort() == activityPort) { - InputProcessorPort processorPort = portBinding - .getBoundProcessorPort(); - processorPort.setDepth(depth); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeGranularDepthEdit.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeGranularDepthEdit.java b/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeGranularDepthEdit.java deleted file mode 100644 index e9f1b54..0000000 --- a/taverna-workbench-edits-api/src/main/java/net/sf/taverna/t2/workflow/edits/ChangeGranularDepthEdit.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2012 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.workflow.edits; - -import uk.org.taverna.scufl2.api.port.GranularDepthPort; - -/** - * Changes the granular depth of a port. - * - * @author David Withers - */ -public class ChangeGranularDepthEdit<T extends GranularDepthPort> extends - AbstractEdit<T> { - private Integer newGranularDepth, oldGranularDepth; - - public ChangeGranularDepthEdit(T granularDepthPort, Integer newGranularDepth) { - super(granularDepthPort); - this.newGranularDepth = newGranularDepth; - oldGranularDepth = granularDepthPort.getGranularDepth(); - } - - @Override - protected void doEditAction(T granularDepthPort) { - granularDepthPort.setGranularDepth(newGranularDepth); - } - - @Override - protected void undoEditAction(T granularDepthPort) { - granularDepthPort.setGranularDepth(oldGranularDepth); - } -}
