TAVERNA-963 package taverna.externaltool.*

Project: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/commit/98468d30
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/98468d30
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/98468d30

Branch: refs/heads/docker
Commit: 98468d304f297b53fc73e80befba8787adabdf53
Parents: 142667c
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Wed May 4 00:53:18 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Wed May 4 01:00:29 2016 +0100

----------------------------------------------------------------------
 .../inb/knowarc/gui/AskUserForPwPopup.java      |  74 --
 .../inb/knowarc/gui/PleaseWaitDialog.java       |  73 --
 .../knowarc/usecases/RuntimeEnvironment.java    | 251 ------
 .../usecases/RuntimeEnvironmentConstraint.java  | 160 ----
 .../inb/knowarc/usecases/ScriptInput.java       | 134 ---
 .../inb/knowarc/usecases/ScriptInputStatic.java |  73 --
 .../inb/knowarc/usecases/ScriptInputUser.java   |  99 --
 .../inb/knowarc/usecases/ScriptOutput.java      |  88 --
 .../knowarc/usecases/UseCaseDescription.java    | 897 -------------------
 .../knowarc/usecases/UseCaseEnumeration.java    | 111 ---
 .../usecases/invocation/AskUserForPw.java       |  32 -
 .../invocation/InvocationException.java         |  36 -
 .../usecases/invocation/UseCaseInvocation.java  | 322 -------
 .../local/LocalUseCaseInvocation.java           | 561 ------------
 .../ssh/SshAutoLoginTrustEveryone.java          |  70 --
 .../usecases/invocation/ssh/SshNode.java        | 157 ----
 .../usecases/invocation/ssh/SshNodeFactory.java |  66 --
 .../usecases/invocation/ssh/SshPool.java        | 158 ----
 .../usecases/invocation/ssh/SshReference.java   | 222 -----
 .../knowarc/usecases/invocation/ssh/SshUrl.java | 163 ----
 .../invocation/ssh/SshUrlToSshReference.java    |  54 --
 .../invocation/ssh/SshUseCaseInvocation.java    | 561 ------------
 .../externaltool/ExternalToolActivity.java      |  13 +-
 .../ExternalToolActivityConfigurationBean.java  |   2 +-
 .../ExternalToolActivityMimeTypeChecker.java    |   5 +-
 .../externaltool/InvocationCreator.java         |   5 +-
 .../externaltool/RetrieveLoginFromTaverna.java  |   2 +-
 .../externaltool/desc/RuntimeEnvironment.java   | 251 ++++++
 .../desc/RuntimeEnvironmentConstraint.java      | 160 ++++
 .../externaltool/desc/ScriptInput.java          | 134 +++
 .../externaltool/desc/ScriptInputStatic.java    |  73 ++
 .../externaltool/desc/ScriptInputUser.java      |  99 ++
 .../externaltool/desc/ScriptOutput.java         |  88 ++
 .../externaltool/desc/UseCaseDescription.java   | 897 +++++++++++++++++++
 .../externaltool/desc/UseCaseEnumeration.java   | 111 +++
 .../externaltool/gui/AskUserForPwPopup.java     |  74 ++
 .../externaltool/gui/PleaseWaitDialog.java      |  73 ++
 .../externaltool/invocation/AskUserForPw.java   |  32 +
 .../invocation/InvocationException.java         |  36 +
 .../invocation/UseCaseInvocation.java           | 321 +++++++
 .../ExternalToolLocalInvocationMechanism.java   |   2 -
 .../local/LocalInvocationCreator.java           |   6 +-
 .../local/LocalInvocationPersister.java         |   2 -
 .../local/LocalMechanismCreator.java            |   2 -
 .../local/LocalUseCaseInvocation.java           | 560 ++++++++++++
 .../ssh/ExternalToolSshInvocationMechanism.java |   5 -
 .../ssh/SshAutoLoginTrustEveryone.java          |  69 ++
 .../externaltool/ssh/SshInvocationCreator.java  |  11 +-
 .../ssh/SshInvocationPersister.java             |   4 +-
 .../externaltool/ssh/SshMechanismCreator.java   |   4 -
 .../activities/externaltool/ssh/SshNode.java    | 157 ++++
 .../externaltool/ssh/SshNodeFactory.java        |  66 ++
 .../activities/externaltool/ssh/SshPool.java    | 157 ++++
 .../externaltool/ssh/SshReference.java          | 222 +++++
 .../activities/externaltool/ssh/SshUrl.java     | 163 ++++
 .../externaltool/ssh/SshUrlToSshReference.java  |  54 ++
 .../externaltool/ssh/SshUseCaseInvocation.java  | 560 ++++++++++++
 ...pache.taverna.reference.ExternalReferenceSPI |   2 +-
 ...verna.reference.ValueToReferenceConverterSPI |   2 +-
 .../spring/external-tool-activity-context.xml   |   4 +-
 .../invocation/ssh/SshReference.hbm.xml         |   2 +-
 61 files changed, 4379 insertions(+), 4413 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/AskUserForPwPopup.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/AskUserForPwPopup.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/AskUserForPwPopup.java
deleted file mode 100644
index 0ce0460..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/AskUserForPwPopup.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package de.uni_luebeck.inb.knowarc.gui;
-
-import javax.swing.JOptionPane;
-
-import de.uni_luebeck.inb.knowarc.usecases.invocation.AskUserForPw;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
-
-public final class AskUserForPwPopup implements AskUserForPw {
-       private SshNode ret;
-       private String pw, pp, kf, us;
-
-       public static String ask(String message, String title) {
-               return (String) JOptionPane.showInputDialog(null, message, 
title, JOptionPane.QUESTION_MESSAGE, null, null, "");
-       }
-
-       public static boolean askYN(String message, String title) {
-               return JOptionPane.showConfirmDialog(null, message, title, 
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 
JOptionPane.YES_OPTION;
-       }
-
-       public String getPassword() {
-               getUsername();
-               if (pw != null)
-                       return pw;
-               pw = ask("Please enter your password for " + us + " @ " + 
ret.getHost(), us + " @ " + ret.getHost());
-               return pw;
-       }
-
-       public String getPassphrase() {
-               getUsername();
-               if (pp != null)
-                       return pp;
-               pp = ask("Please enter your passphrase for " + kf + " used for 
" + us + " @ " + ret.getHost(), us + " @ " + ret.getHost());
-               return pp;
-       }
-
-       public String getKeyfile() {
-               getUsername();
-               if (kf != null)
-                       return kf;
-               kf = ask("Please enter the keyfile for " + us + " @ " + 
ret.getHost(), us + " @ " + ret.getHost());
-               return kf;
-       }
-
-       public String getUsername() {
-               if (us != null)
-                       return us;
-               us = ask("Please enter the username for " + ret.getHost(), 
"Username for " + ret.getHost());
-               return us;
-       }
-
-       public void setSshNode(SshNode sshNode) {
-               this.ret = sshNode;
-       }
-
-       public void authenticationSucceeded() {
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/PleaseWaitDialog.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/PleaseWaitDialog.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/PleaseWaitDialog.java
deleted file mode 100755
index 2a643eb..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/gui/PleaseWaitDialog.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.gui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-
-public class PleaseWaitDialog extends JDialog {
-       private static final long serialVersionUID = 1L;
-
-       static PleaseWaitDialog instance = new PleaseWaitDialog();
-
-       public class WaitMessage{
-               public WaitMessage() {
-               }
-               
-               String str;
-               public void set(String newstr) {
-                       synchronized (PleaseWaitDialog.instance) {
-                               if(this.str != null && this.str.equals(newstr)) 
return;
-                               if(this.str != null) messages.remove(this.str);
-                               this.str = newstr;
-                               if(this.str != null) messages.add(this.str);
-                       }
-                       updateDialog();
-               }
-               public void done() {
-                       set(null);
-               }
-       }
-
-       private void updateDialog() {
-               synchronized (PleaseWaitDialog.instance) {
-                       if(messages.size() > 0) this.setVisible(true);
-                       else this.setVisible(false);
-                       String t = "";
-                       for (String  cur : messages) {
-                               t += cur + "<br>";
-                       }
-                       l.setText("<html>"+t+"</html>");
-               }
-       }
-       
-       List<String> messages = new ArrayList<String>();
-       
-       JLabel l;
-       private PleaseWaitDialog() {
-               this.setAlwaysOnTop(true);
-               this.setTitle("Please wait");
-               l = new JLabel("");
-               this.add(l);
-               this.setSize(400, 100);
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironment.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironment.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironment.java
deleted file mode 100644
index c7fd889..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironment.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-/**
- * Representation of information about a single runtime environment. It is used
- * to decide if one runtime environment is possibly compatible with another one
- * for the selection of queues to commit to.
- * 
- * To experiment/test these functions, run the following java -cp
- * target/taverna-knowarc-processor-0.1.7.jar
- * de.uni_luebeck.janitor.ldap.RuntimeEnvironment compare bla-1 foo-1 java -cp
- * target/taverna-knowarc-processor-0.1.7.jar
- * de.uni_luebeck.janitor.ldap.RuntimeEnvironment compare bla-1 bla-2 java -cp
- * target/taverna-knowarc-processor-0.1.7.jar
- * de.uni_luebeck.janitor.ldap.RuntimeEnvironment compare bla-1.2 bla-1
- * 
- * @author Steffen Moeller
- */
-@SuppressWarnings("unchecked")
-public class RuntimeEnvironment implements Comparable {
-       
-       private static Logger logger = 
Logger.getLogger(RuntimeEnvironment.class);
-
-
-       /**
-        * Unique identification of the runtime environment - the full name
-        */
-       protected String id;
-
-       /**
-        * Accessor function for the complete identifier of the runtime 
environment
-        */
-       public String getID() {
-               return id;
-       }
-
-       protected String name;
-
-       /**
-        * Accessor function for the RE's name
-        */
-       public String getName() {
-               return name;
-       }
-
-       protected String version;
-
-       /**
-        * Accessfor function for the version
-        */
-       public String getVersion() {
-               return version;
-       }
-
-       /**
-        * for those busy fellows who don't have the time to convert the String 
into
-        * a RuntimeEnvironment object.
-        * 
-        * @author Steffen Moeller
-        */
-       public boolean atLeastAsCapableAs(String s) {
-               RuntimeEnvironment tmpRE = new RuntimeEnvironment(s);
-               return this.atLeastAsCapableAs(tmpRE);
-       }
-
-       /**
-        * Indicates if a runtime environment has the same name, and if so, if 
the
-        * given RE has the same or a later version.
-        * 
-        * @author Steffen Moeller
-        */
-       public boolean atLeastAsCapableAs(RuntimeEnvironment re) {
-               if (!name.equals(re.name))
-                       return false;
-               int c = compareVersions(getVersion(), re.getVersion());
-               if (c >= 0) {
-                       return true;
-               } else {
-                       return false;
-               }
-       }
-
-       /**
-        * Indicates if this runtimeEnvironment is the same version or later as 
any
-        * in that list.
-        * 
-        * @author Steffen Moeller
-        */
-       public boolean atLeastAsCapableAsAnyOf(Iterable<RuntimeEnvironment> 
res) {
-               boolean compatibleOneFound = false;
-               Iterator<RuntimeEnvironment> i = res.iterator();
-               while (i.hasNext() && !compatibleOneFound) {
-                       RuntimeEnvironment r = i.next();
-                       compatibleOneFound = atLeastAsCapableAs(r);
-               }
-               return compatibleOneFound;
-       }
-
-       /**
-        * Indicates if any of the runtime environments listed is the same 
version
-        * as this or later.
-        * 
-        * @author Steffen Moeller
-        */
-       public boolean isInferiorToAtLeastOneIn(Iterable<RuntimeEnvironment> 
res) {
-               boolean compatibleOneFound = false;
-               Iterator<RuntimeEnvironment> i = res.iterator();
-               while (i.hasNext() && !compatibleOneFound) {
-                       RuntimeEnvironment r = i.next();
-                       compatibleOneFound = r.atLeastAsCapableAs(this);
-               }
-               return compatibleOneFound;
-       }
-
-       /**
-        * Parses a string as commonly presented by the infosystem
-        * 
-        * @author Steffen Moeller
-        */
-       public RuntimeEnvironment(String raw) {
-               id = raw;
-               int dashpos = raw.indexOf("-");
-               if (-1 == dashpos) {
-                       version = "";
-                       name = raw;
-               } else {
-                       name = raw.substring(0, dashpos);
-                       if (dashpos + 1 <= raw.length()) {
-                               version = raw.substring(dashpos + 1, 
raw.length());
-                       } else {
-                               version = "";
-                       }
-               }
-       }
-
-       /**
-        * to make it behave like a string at time, as it was originally 
implemented
-        */
-       @Override
-       public String toString() {
-               return id;
-       }
-
-       /**
-        * Implementation of Comparable interface. It comes handy albeit this
-        * function says nothing about the compatibility of two runtime 
environments
-        * unless their names are identical and the relation of the constraint 
was
-        * taken into account. It just sorts them in lists.
-        */
-       public int compareTo(Object o) throws ClassCastException {
-               RuntimeEnvironment r = (RuntimeEnvironment) o;
-               if (getName().equals(r.getName())) {
-                       return RuntimeEnvironment.compareVersions(getVersion(), 
r.getVersion());
-               } else {
-                       return id.compareTo(r.getID());
-               }
-       }
-
-       /**
-        * FIXME: For the sake of simplicity, this implementation makes an 
error in
-        * treating . and - in the versions equally. Versions, if numerical, are
-        * treated numerically. Otherwise it is lexicographical, which is error
-        * prone, though. Should the 'Scanner' class should be tapped into?
-        * 
-        * @author Steffen Moeller
-        */
-       public static int compareVersions(String a, String b) {
-
-               // null pointer exceptions are not risked .. we are nice
-               if (null == a)
-                       a = "";
-               if (null == b)
-                       b = "";
-
-               // catching the dumb case first
-               if (a.equals(b))
-                       return 0;
-
-               List as = Arrays.asList(a.split("[.-]"));
-               List bs = Arrays.asList(b.split("[.-]"));
-
-               // both lists have the empty element as members at least
-               Iterator aIterator = as.iterator();
-               Iterator bIterator = bs.iterator();
-
-               while (aIterator.hasNext()) {
-                       String aa = (String) aIterator.next();
-                       if (!bIterator.hasNext()) {
-                               // a is longer while equal so far
-                               return 1; // a > b
-                       }
-                       String bb = (String) bIterator.next();
-                       if (!aa.equals(bb)) {
-                               // a and b differ
-                               try {
-                                       Integer aInt = Integer.parseInt(aa);
-                                       Integer bInt = Integer.parseInt(bb);
-                                       return aInt.compareTo(bInt);
-                               } catch (Exception e) {
-                                       return aa.compareTo(bb);
-                               }
-                       }
-               }
-               if (bIterator.hasNext()) {
-                       // b is longer while equal so far
-                       return -1; // a < b
-               }
-               return 0; // a == b
-       }
-
-       /**
-        * For testing purposes
-        */
-       public static void main(String argv[]) {
-               if ("compare".equals(argv[0])) {
-                       RuntimeEnvironment r1 = new RuntimeEnvironment(argv[1]);
-                       RuntimeEnvironment r2 = new RuntimeEnvironment(argv[2]);
-                       logger.info("r1.getName(): " + r1.getName());
-                       logger.info("r1.getVersion(): " + r1.getVersion());
-                       logger.info("r2.getName(): " + r2.getName());
-                       logger.info("r2.getVersion(): " + r2.getVersion());
-                       logger.info("r1.atLeastAsCapableAs(r2): " + 
String.valueOf(r1.atLeastAsCapableAs(r2)));
-               } else {
-                       logger.info("Don't know how to '" + argv[0] + "'");
-               }
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironmentConstraint.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironmentConstraint.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironmentConstraint.java
deleted file mode 100644
index ce7e055..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/RuntimeEnvironmentConstraint.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
- 
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.log4j.Logger;
-
-
-/**
- * When use cases present a runtime environment, then they don't want to 
express
- * that these would provide such, but that these request such, i.e. they 
constrain
- * lists of potentially eligible queues. 
- * @author Steffen Moeller
- * @since 2008
- */
-public class RuntimeEnvironmentConstraint extends RuntimeEnvironment {
-       
-       private static Logger logger = 
Logger.getLogger(RuntimeEnvironmentConstraint.class);
-
-       private static String[] ACCEPTED_RELATIONS = new String[] {"=", ">=", 
"<=", ">", "<"};
-       /**
-        * If there is no relation specified, presume >=
-        */
-       private static String DEFAULT_RELATION = ">=";
-       
-       public static String[] getAcceptedRelations() {
-               return ACCEPTED_RELATIONS;
-       }
-
-       public static String getDefaultRelation() {
-               return DEFAULT_RELATION;
-       }
-
-       /**
-        *  Identifies the relation between runtime environments to be tested
-        */
-       protected String relation;
-       
-       /**
-        * Accessor function for relation
-        */
-       public String getRelation() {
-               return this.relation;
-       }
-       
-       /**
-        * Tests of a relation is supported
-        * @param relation
-        * @return true iff in <, > , <=, >=, =
-        */
-       public static boolean acceptedRelation(String relation) {
-               if ((null == relation) || relation.equals("")) {
-                       return false;
-               }
-               return 
relation.equals("=")||relation.equals(">=")||relation.equals("<=")||relation.equals(">")||relation.equals("<");
-       }
-       
-       /**
-        * Constructor
-        * @param id - expects the name of the runtime environment together 
with the version to which the
-        * @param relation - relates to (">","<","=",">=","<=")
-        */
-       public RuntimeEnvironmentConstraint(String id, String relation) {
-               super(id);
-               if (null == relation || relation.equals("")) {
-                       
relation=RuntimeEnvironmentConstraint.getDefaultRelation();
-               }
-               if (relation.equals("==")) {
-                       relation="=";
-               }
-               else if (relation.equals("=<")) {
-                       relation="<=";
-               }
-               else if 
(!RuntimeEnvironmentConstraint.acceptedRelation(relation)) {
-                       logger.warn("Unknown relation '"+relation+"', presuming 
'"+RuntimeEnvironmentConstraint.getDefaultRelation()+"'");
-                       
relation=RuntimeEnvironmentConstraint.getDefaultRelation();
-               }
-               this.relation=relation;
-       }
-       
-       /**
-        * Perfoms test if the RuntimeEnvironment (RE) passed as argument 
fulfills the requirements set by the constraint.
-        * @param re - RE to test
-        * @return true iff the RE fulfills this REconstraint.
-        */
-       public boolean isFulfilledBy(RuntimeEnvironment re) {
-               logger.info(re.getID()+" " + this.getRelation() + " 
"+this.getID() + " ?");
-               if (this.getRelation().equals("=")) {
-                       logger.info("=");
-                       return re.getID().equals(this.getID());
-               }
-               if (!re.getName().equals(this.getName())) {
-                       logger.warn("Name match failed");
-                       return false;
-               }
-               int c = 
RuntimeEnvironment.compareVersions(re.getVersion(),this.getVersion());
-               logger.info("c="+c);
-               if (this.getRelation().equals(">")) return c>0;
-               if (this.getRelation().equals(">=")) return c>=0;
-               if (this.getRelation().equals("<=")) return c<=0;
-               if (this.getRelation().equals("<")) return c<0;
-               throw new RuntimeException("Unknown/untreated releation 
'"+this.getRelation()+"'");
-       }
-       
-       /**
-        * Iterates over all the RuntimeEnvironments passed as argument.
-        * @param REs - list of RuntimeEnvironments, mostly those offered at a 
particular queue
-        * @return true iff any RE among the REs passed as argument are 
fulfilling the constraint
-        */
-       public boolean isFulfilledByAtLeastOneIn(Collection<RuntimeEnvironment> 
REs) {
-               boolean fulfilled = false;
-               Iterator<RuntimeEnvironment> i = REs.iterator();
-               while(i.hasNext() && !fulfilled) {
-                       RuntimeEnvironment r = i.next();
-                       fulfilled = this.isFulfilledBy(r);
-               }
-               return fulfilled;
-       }
-       /**
-        * For testing purposes
-        */
-       public static void main(String argv[]) {
-               try {
-                       if (argv[0].equals("--help") || argv.length != 3) {
-                               logger.error("Expecting arguments (<|>|=|<=|>=) 
runtime1-version runtime2-version");
-                       }
-                       else {
-                               RuntimeEnvironmentConstraint r1 = new 
RuntimeEnvironmentConstraint(argv[1], argv[0]);
-                               RuntimeEnvironment r2 = new 
RuntimeEnvironment(argv[2]);
-                               logger.info("r1.getName(): "+r1.getName());
-                               logger.info("r1.getVersion(): 
"+r1.getVersion());
-                               logger.info("r1.getRelation(): 
"+r1.getRelation());
-                               logger.info("r2.getName(): "+r2.getName());
-                               logger.info("r2.getVersion(): 
"+r2.getVersion());
-                               logger.info("r1.isFulfilledBy(r2): 
"+String.valueOf(r1.isFulfilledBy(r2)));
-                       }
-               }
-               catch (Exception e) {
-                       logger.error(e);
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInput.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInput.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInput.java
deleted file mode 100644
index 50747b5..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInput.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
-
-import java.nio.charset.Charset;
-
-import org.apache.taverna.activities.externaltool.ExternalToolActivity;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationBean;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationProperty;
-
-/**
- * Integrates inputs to the grid that come from the use case descriptions
- * with those that are fed through the workflow.
- *
- * this class controls name and data storage of one input,
- * no matter where the data comes from
- */
-@ConfigurationBean(uri = ExternalToolActivity.URI + "#AbstractScriptInput")
-public abstract class ScriptInput {
-       /**
-        * This input can be referenced under the name 'tag'.
-        */
-       private String tag = null;
-       /**
-        * In most cases, the data will be stored under a specific
-        * filename.
-        */
-       private boolean file = false;
-       /**
-        * Set, if the name of the file to be executed is not
-        * explicitly set but prepared by some automatism and referenced
-        * via the tagging principle.
-        */
-       private boolean tempFile = false;
-       /**
-        * True if (!) the data is binary. (Text otherwise)
-        */
-       private boolean binary = false;
-
-       private String charsetName = Charset.defaultCharset().name();
-       private boolean forceCopy = false;
-
-       /**
-        * @return the tag
-        */
-       public final String getTag() {
-               return tag;
-       }
-       /**
-        * @param tag the tag to set
-        */
-       @ConfigurationProperty(name = "tag", label = "Tag")
-       public final void setTag(String tag) {
-               this.tag = tag;
-       }
-       /**
-        * @return the file
-        */
-       public final boolean isFile() {
-               return file;
-       }
-       /**
-        * @param file the file to set
-        */
-       @ConfigurationProperty(name = "file", label = "File")
-       public final void setFile(boolean file) {
-               this.file = file;
-       }
-       /**
-        * @return the tempFile
-        */
-       public final boolean isTempFile() {
-               return tempFile;
-       }
-       /**
-        * @param tempFile the tempFile to set
-        */
-       @ConfigurationProperty(name = "tempFile", label = "Temporary File")
-       public final void setTempFile(boolean tempFile) {
-               this.tempFile = tempFile;
-       }
-       /**
-        * @return the binary
-        */
-       public final boolean isBinary() {
-               return binary;
-       }
-       /**
-        * @param binary the binary to set
-        */
-       @ConfigurationProperty(name = "binary", label = "Binary")
-       public final void setBinary(boolean binary) {
-               this.binary = binary;
-       }
-
-       public String getCharsetName() {
-               return this.charsetName;
-       }
-       /**
-        * @param charsetName the charsetName to set
-        */
-       @ConfigurationProperty(name = "charsetName", label = "Chararter Set")
-       public void setCharsetName(String charsetName) {
-               this.charsetName = charsetName;
-       }
-
-       @ConfigurationProperty(name = "forceCopy", label = "Force Copy")
-       public final void setForceCopy(boolean forceCopy) {
-               this.forceCopy = forceCopy;
-
-       }
-       /**
-        * @return the forceCopy
-        */
-       public boolean isForceCopy() {
-               return forceCopy;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputStatic.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputStatic.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputStatic.java
deleted file mode 100644
index 749e104..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputStatic.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
-
-import org.apache.taverna.activities.externaltool.ExternalToolActivity;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationBean;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationProperty;
-
-/**
- * This subclass of script input is used to manage static content
- * which is embedded into the use case description.
- */
-@ConfigurationBean(uri = ExternalToolActivity.URI + "#ScriptInputStatic")
-public class ScriptInputStatic extends ScriptInput {
-
-       public ScriptInputStatic() {
-       }
-
-       private String url = null;  //if this is set, load content from remote 
URL
-       private String content = null;
-
-       @Override
-       public String toString() {
-               return "InputStatic[tag: " +
-                       getTag() + (isFile() ? ", file" : "") + (isTempFile() ? 
", tempfile" : "") + (isBinary() ? ", binary" : "") + ", content: " + content + 
"]";
-       }
-
-       /**
-        * @return the url
-        */
-       public final String getUrl() {
-               return url;
-       }
-
-       /**
-        * @param url the url to set
-        */
-       @ConfigurationProperty(name = "url", label = "URL", required=false)
-       public final void setUrl(String url) {
-               this.url = url;
-       }
-
-       /**
-        * @return the content
-        */
-       public final String getContent() {
-               return content;
-       }
-
-       /**
-        * @param content the content to set
-        */
-       @ConfigurationProperty(name = "content", label = "Content", 
required=false)
-       public final void setContent(String content) {
-               this.content = content;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputUser.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputUser.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputUser.java
deleted file mode 100644
index 715c13e..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptInputUser.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
-import java.util.ArrayList;
-
-import org.apache.taverna.activities.externaltool.ExternalToolActivity;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationBean;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationProperty;
-
-/**
- * Internal description of output
- */
-@ConfigurationBean(uri = ExternalToolActivity.URI + "#ScriptInput")
-public class ScriptInputUser extends ScriptInput {
-
-       /**
-        * This input may be fed from multiple ouputs.
-        */
-       private boolean list = false;
-       /**
-        * True if the data from a list input in taverna is concatenated into 
one single input file.
-        */
-       private boolean concatenate = false;
-
-       private ArrayList<String> mime = new ArrayList<String>();
-
-       @Override
-       public String toString() {
-               return "Input[tag: " + getTag() + (isFile() ? ", file" : "")
-                               + (isTempFile() ? ", tempfile" : "")
-                               + (isBinary() ? ", binary" : "") + (list ? ", 
list" : "")
-                               + (concatenate ? ", concatenate" : "")
-                               + " mime: " + mime.toString() + "]";
-       }
-
-       /**
-        * @return the list
-        */
-       public final boolean isList() {
-               return list;
-       }
-
-       /**
-        * @param list the list to set
-        */
-       @ConfigurationProperty(name = "list", label = "List")
-       public final void setList(boolean list) {
-               this.list = list;
-       }
-
-       /**
-        * @return the concatenate
-        */
-       public final boolean isConcatenate() {
-               return concatenate;
-       }
-
-       /**
-        * @param concatenate the concatenate to set
-        */
-       @ConfigurationProperty(name = "concatenate", label = "Concatenate")
-       public final void setConcatenate(boolean concatenate) {
-               this.concatenate = concatenate;
-       }
-
-       /**
-        * @return the mime
-        */
-       public final ArrayList<String> getMime() {
-               if (mime == null) {
-                       mime = new ArrayList<String>();
-               }
-               return mime;
-       }
-
-       /**
-        * @param mime the mime to set
-        */
-       @ConfigurationProperty(name = "mime", label = "Mime Types", 
required=false)
-       public final void setMime(ArrayList<String> mime) {
-               this.mime = mime;
-       }
-};

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptOutput.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptOutput.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptOutput.java
deleted file mode 100644
index d824ad4..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/ScriptOutput.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
-import java.util.ArrayList;
-
-import org.apache.taverna.activities.externaltool.ExternalToolActivity;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationBean;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationProperty;
-
-/**
- * Internal description of input
- */
-@ConfigurationBean(uri = ExternalToolActivity.URI + "#ScriptOutput")
-public class ScriptOutput {
-       private String path;
-       private boolean binary;
-       private ArrayList<String> mime = new ArrayList<String>();
-
-       @Override
-       public String toString() {
-               return "Output[path: " + path + (binary ? ", binary" : "")
-                               + " mime: " + mime.toString() + "]";
-       }
-
-       /**
-        * @return the path
-        */
-       public final String getPath() {
-               return path;
-       }
-
-       /**
-        * @param path the path to set
-        */
-       @ConfigurationProperty(name = "path", label = "Path")
-       public final void setPath(String path) {
-               this.path = path;
-       }
-
-       /**
-        * @return the binary
-        */
-       public final boolean isBinary() {
-               return binary;
-       }
-
-       /**
-        * @param binary the binary to set
-        */
-       @ConfigurationProperty(name = "binary", label = "Binary")
-       public final void setBinary(boolean binary) {
-               this.binary = binary;
-       }
-
-       /**
-        * @return the mime
-        */
-       public final ArrayList<String> getMime() {
-               if (mime == null) {
-                       mime = new ArrayList<String>();
-               }
-               return mime;
-       }
-
-       /**
-        * @param mime the mime to set
-        */
-       @ConfigurationProperty(name = "mime", label = "Mime Types", 
required=false)
-       public final void setMime(ArrayList<String> mime) {
-               this.mime = mime;
-       }
-};

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseDescription.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseDescription.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseDescription.java
deleted file mode 100644
index 1c5914e..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseDescription.java
+++ /dev/null
@@ -1,897 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import javax.swing.ImageIcon;
-
-import org.apache.taverna.activities.externaltool.ExternalToolActivity;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationBean;
-import org.apache.taverna.workflowmodel.processor.config.ConfigurationProperty;
-import 
org.apache.taverna.workflowmodel.processor.config.ConfigurationProperty.OrderPolicy;
-import org.apache.taverna.workflowmodel.serialization.DeserializationException;
-import org.apache.taverna.workflowmodel.utils.Tools;
-
-import org.apache.log4j.Logger;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-
-import org.apache.commons.lang.StringUtils;
-
-/**
- * Class representation of XML-description of UseCases
- */
-@ConfigurationBean(uri = ExternalToolActivity.URI + "#ToolDescription")
-public class UseCaseDescription {
-
-       private static Logger logger = 
Logger.getLogger(UseCaseDescription.class);
-
-       /**
-        * Identifier for the retrieval of this UseCase in the sharedRepository
-        * database, respectively its XML export.
-        */
-       private String usecaseid = "";
-       /**
-        * Workflow Elements now can get a group identifier. There may be 
subgroups
-        * divided by :
-        */
-       private String group = "";
-       /**
-        * Textual description of the use case itself. This description is very
-        * short to fit on the single line that is prepared for such 
descriptions in
-        * the Taverna workflow element list.
-        */
-       private String description = "";
-       /**
-        * What is actually executed on the shell.
-        */
-       private String command = "";
-
-       /**
-        * Accessor function of command
-        *
-        * @return shell-executable series of commands
-        */
-       public String getCommand() {
-               if (null == command) {
-                       // FIXME: Is this possible?
-                       return "";
-               } else {
-                       return command;
-               }
-       }
-
-       /**
-        * Routine that may be executed as a first check if the program is 
indeed
-        * installed.
-        */
-       private String test_local = null;
-
-       /**
-        * URL of an icon that would help users to recognise the use case
-        */
-       private String icon_url = null;
-
-       private int preparingTimeoutInSeconds = 20 * 60; // 20 minutes
-       private int executionTimeoutInSeconds = 30 * 60; // 30 minutes
-
-       private List<String> tags = new ArrayList<String>();
-       private List<RuntimeEnvironmentConstraint> REs = new 
ArrayList<RuntimeEnvironmentConstraint>();
-       private ArrayList<String> queue_preferred = new ArrayList<String>();
-       private ArrayList<String> queue_deny = new ArrayList<String>();
-
-       private List<ScriptInputStatic> static_inputs = new 
ArrayList<ScriptInputStatic>();
-       private Map<String, ScriptInput> inputs = new HashMap<String, 
ScriptInput>();
-       private Map<String, ScriptOutput> outputs = new HashMap<String, 
ScriptOutput>();
-
-       private boolean includeStdIn = false;
-       private boolean includeStdOut = true;
-       private boolean includeStdErr = true;
-
-       private List<Integer> validReturnCodes = new ArrayList<Integer>();
-       
-       /**
-        * Default constructor to make xstream happy
-        */
-       public UseCaseDescription() {
-               
-       }
-
-       /**
-        * Constructor, for special purpose usecases.
-        *
-        * @param usecaseid
-        */
-       public UseCaseDescription(String usecaseid) {
-               this.setUsecaseid(usecaseid);
-       }
-
-       /**
-        * Constructor, expects an input stream containing the xml. for 
example, use
-        * getClass().getClassLoader().getResourceAsStream("..") to load a 
usecase
-        * from your program jar
-        */
-       public UseCaseDescription(InputStream programAsStream) throws 
DeserializationException {
-               SAXBuilder builder = new SAXBuilder();
-               Document doc;
-               try {
-                       doc = builder.build(programAsStream);
-                       programAsStream.close();
-               } catch (JDOMException e) {
-                       throw new DeserializationException("Error deserializing 
usecase", e);
-               } catch (IOException e) {
-                       throw new DeserializationException("Error deserializing 
usecase", e);
-               }
-               readFromXmlElement(doc.getRootElement());
-       }
-
-       /**
-        * Constructor, expects an XML-root to dissect.
-        */
-       public UseCaseDescription(Element programNode) throws 
DeserializationException {
-               readFromXmlElement(programNode);
-       }
-
-/**
- * Produce an XML description of the UseCaseDescription
- */
-       public Element writeToXMLElement() {
-               Element programNode = new Element("program");
-               programNode.setAttribute("name", getUsecaseid());
-               programNode.setAttribute("description", getDescription());
-               // Always use element version of command
-//             programNode.setAttribute("command", getCommand());
-               Element commandNode = new Element("command");
-               commandNode.addContent(getCommand());
-               programNode.addContent(commandNode);
-               programNode.setAttribute("timeout", 
Integer.toString(getExecutionTimeoutInSeconds()));
-               programNode.setAttribute("preparing_timeout", 
Integer.toString(getPreparingTimeoutInSeconds()));
-               programNode.setAttribute("includeStdIn", 
Boolean.toString(isIncludeStdIn()));
-               programNode.setAttribute("includeStdOut", 
Boolean.toString(isIncludeStdOut()));
-               programNode.setAttribute("includeStdErr", 
Boolean.toString(isIncludeStdErr()));
-               for (ScriptInputStatic si : getStatic_inputs()) {
-                       Element staticNode = new Element("static");
-                       if (si.isBinary()) {
-                               staticNode.setAttribute("binary", "true");
-                       }
-                       if (si.isForceCopy()) {
-                               staticNode.setAttribute("forceCopy", "true");
-                       }
-                       if (si.isFile()) {
-                               Element fileNode = new Element("file");
-                               fileNode.setAttribute("path", si.getTag());
-                               staticNode.addContent(fileNode);
-                       } else if (si.isTempFile()) {
-                               Element tempfileNode = new Element("tempfile");
-                               tempfileNode.setAttribute("tag", si.getTag());
-                               staticNode.addContent(tempfileNode);
-                       } else {
-                               Element replaceNode = new Element("replace");
-                               replaceNode.setAttribute("tag", si.getTag());
-                               staticNode.addContent(replaceNode);
-                       }
-                       if (si.getUrl() != null) {
-                               Element contentNode = new Element("content");
-                               contentNode.setAttribute("url", si.getUrl());
-                               staticNode.addContent(contentNode);
-                       } else {
-                               Element contentNode = new Element("content");
-                               contentNode.addContent((String) 
si.getContent());
-                               staticNode.addContent(contentNode);
-                       }
-                       programNode.addContent(staticNode);
-               }
-               for (Entry<String, ScriptInput> entry : getInputs().entrySet()) 
{
-                       String name = entry.getKey();
-                       ScriptInputUser si = (ScriptInputUser) entry.getValue();
-                       Element inputNode = new Element("input");
-                       inputNode.setAttribute("name", name);
-                       if (si.isBinary()) {
-                               inputNode.setAttribute("binary", "true");
-                       }
-                       if (si.isForceCopy()) {
-                               inputNode.setAttribute("forceCopy", "true");
-                       }
-                       if (si.isConcatenate()) {
-                               inputNode.setAttribute("concatenate", "true");
-                       }
-                       if (si.isList()) {
-                               inputNode.setAttribute("list", "true");
-                       }
-                       if (si.isFile()) {
-                               Element fileNode = new Element("file");
-                               fileNode.setAttribute("path", si.getTag());
-                               inputNode.addContent(fileNode);
-                       } else if (si.isTempFile()) {
-                               Element tempfileNode = new Element("tempfile");
-                               tempfileNode.setAttribute("tag", si.getTag());
-                               inputNode.addContent(tempfileNode);
-                       } else {
-                               Element replaceNode = new Element("replace");
-                               replaceNode.setAttribute("tag", si.getTag());
-                               inputNode.addContent(replaceNode);
-                       }
-                       for (String mime : si.getMime()) {
-                               Element mimeNode = new Element("mime");
-                               mimeNode.setAttribute("type", mime);
-                               inputNode.addContent(mimeNode);
-                       }
-                       programNode.addContent(inputNode);
-               }
-               for (Entry<String, ScriptOutput> entry : 
getOutputs().entrySet()) {
-                       String name = entry.getKey();
-                       ScriptOutput so = entry.getValue();
-                       Element outputNode = new Element("output");
-                       outputNode.setAttribute("name", name);
-                       if (so.isBinary()) {
-                               outputNode.setAttribute("binary", "true");
-                       }
-                       Element fromfileNode = new Element("fromfile");
-                       fromfileNode.setAttribute("path", so.getPath());
-                       outputNode.addContent(fromfileNode);
-                       for (String mime : so.getMime()) {
-                               Element mimeNode = new Element("mime");
-                               mimeNode.setAttribute("type", mime);
-                               outputNode.addContent(mimeNode);
-                       }
-                       programNode.addContent(outputNode);
-               }
-               for (RuntimeEnvironmentConstraint rec : getREs()) {
-                       Element rteNode = new Element("rte");
-                       rteNode.setAttribute("name", rec.getID());
-                       rteNode.setAttribute("relation", rec.getRelation());
-                       programNode.addContent(rteNode);
-               }
-               if ((group != null) && !group.isEmpty()) {
-                       Element groupNode = new Element("group");
-                       groupNode.setAttribute("name", group);
-                       programNode.addContent(groupNode);
-               }
-               if ((test_local != null) && !test_local.isEmpty()) {
-                       Element testNode = new Element("test");
-                       testNode.setAttribute("local", test_local);
-                       programNode.addContent(testNode);
-               }
-               if ((icon_url != null) && !icon_url.isEmpty()) {
-                       Element iconNode = new Element("icon");
-                       iconNode.setAttribute("url", icon_url);
-                       programNode.addContent(iconNode);
-               }
-               if (!getQueue_preferred().isEmpty() || 
!getQueue_deny().isEmpty()) {
-                       Element queueNode = new Element("queue");
-                       for (String url : getQueue_preferred()) {
-                               Element preferredNode = new Element("prefer");
-                               preferredNode.setAttribute("url", url);
-                               queueNode.addContent(preferredNode);
-                       }
-                       for (String url : getQueue_deny()) {
-                               Element denyNode = new Element("deny");
-                               denyNode.setAttribute("url", url);
-                               queueNode.addContent(denyNode);
-                       }
-                       programNode.addContent(queueNode);
-               }
-                       Element validReturnCodesNode = new 
Element("validReturnCodes");
-                       validReturnCodesNode.setAttribute("codes", 
getReturnCodesAsText());
-                       programNode.addContent(validReturnCodesNode);
-
-               return programNode;
-       }
-       /**
-        * Specifies the UseCaseDescription from the root of an XML description
-        * which is accessible online.
-        *
-        * @param programNode
-        * @throws DeserializationException
-        */
-       private void readFromXmlElement(Element programNode) throws 
DeserializationException {
-               if (programNode.getName().compareToIgnoreCase("program") != 0)
-                       throw new DeserializationException("Expected <program>, 
read '" + programNode.getName() + "'");
-
-               setUsecaseid(programNode.getAttributeValue("name"));
-               setDescription(programNode.getAttributeValue("description"));
-               setCommand(programNode.getAttributeValue("command"));
-               String timeoutStr = programNode.getAttributeValue("timeout");
-               if (timeoutStr != null)
-                       
setExecutionTimeoutInSeconds(Integer.parseInt(timeoutStr));
-               timeoutStr = programNode.getAttributeValue("preparing_timeout");
-               if (timeoutStr != null)
-                       
setPreparingTimeoutInSeconds(Integer.parseInt(timeoutStr));
-
-               String includeStdInStr = 
programNode.getAttributeValue("includeStdIn");
-               if (includeStdInStr != null && !includeStdInStr.isEmpty()) {
-                       setIncludeStdIn(includeStdInStr.equals("true"));
-               }
-
-               String includeStdOutStr = 
programNode.getAttributeValue("includeStdOut");
-               if (includeStdOutStr != null && !includeStdOutStr.isEmpty()) {
-                       setIncludeStdOut(includeStdOutStr.equals("true"));
-               }
-
-               String includeStdErrStr = 
programNode.getAttributeValue("includeStdErr");
-               if (includeStdErrStr != null && !includeStdErrStr.isEmpty()) {
-                       setIncludeStdErr(includeStdErrStr.equals("true"));
-               }
-
-               for (Object cur_ob : programNode.getChildren()) {
-                       Element cur = (Element) cur_ob;
-
-                       String name = cur.getAttributeValue("name");
-
-                       String type = cur.getName();
-                       boolean binary = false;
-                       if (null != cur.getAttributeValue("binary") && 
cur.getAttributeValue("binary").equalsIgnoreCase("true")) {
-                               binary = true;
-                       }
-                       boolean list = false;
-                       if (null != cur.getAttributeValue("list") && 
cur.getAttributeValue("list").equalsIgnoreCase("true")) {
-                               list = true;
-                       }
-                       boolean concatenate = false;
-                       if (null != cur.getAttributeValue("concatenate") && 
cur.getAttributeValue("concatenate").equalsIgnoreCase("true")) {
-                               concatenate = true;
-                       }
-                       boolean forceCopy = false;
-                       if (null != cur.getAttributeValue("forceCopy") && 
cur.getAttributeValue("forceCopy").equalsIgnoreCase("true")) {
-                               forceCopy = true;
-                       }
-
-                       Element inner = null;
-                       String innerType = null, tag = null, path = null;
-                       if (cur.getChildren().size() > 0) {
-                               inner = (Element) cur.getChildren().get(0);
-                               innerType = inner.getName();
-                               tag = inner.getAttributeValue("tag");
-                               path = inner.getAttributeValue("path");
-                       }
-                       // build mime type declaration list
-                       ArrayList<String> mime = new ArrayList<String>();
-                       for (Object child : cur.getChildren()) {
-                               Element curChild = (Element) child;
-                               if 
(curChild.getName().equalsIgnoreCase("mime")) {
-                                       
mime.add(curChild.getAttributeValue("type"));
-                               }
-                       }
-                       if (type.equalsIgnoreCase("static")) {
-                               ScriptInputStatic si = new ScriptInputStatic();
-                               Element content = cur.getChild("content");
-                               if (content == null)
-                                       throw new 
DeserializationException("FIXME: script tag without embedded content tag");
-                               si.setUrl(content.getAttributeValue("url"));
-                               if (si.getUrl() == null)
-                                       si.setContent(content.getText());
-                               fillInputDescription(si, binary, forceCopy, 
innerType, tag, path);
-                               getStatic_inputs().add(si);
-                       } else if (type.equalsIgnoreCase("input")) {
-                               ScriptInputUser indesc = new ScriptInputUser();
-                               indesc.setList(list);
-                               indesc.setMime(mime);
-                               indesc.setConcatenate(concatenate);
-                               fillInputDescription(indesc, binary, forceCopy, 
innerType, tag, path);
-                               getInputs().put(Tools.sanitiseName(name), 
indesc);
-                       } else if (type.equalsIgnoreCase("output")) {
-                               ScriptOutput outdesc = new ScriptOutput();
-                               outdesc.setMime(mime);
-
-                               boolean ok = true;
-                               if (null == innerType) {
-                                       // don't know what to do
-                                       throw new 
DeserializationException("FIXME: Found null == innerType for output, is this 
the bug?");
-                               } else if 
(innerType.equalsIgnoreCase("fromfile")) {
-                                       outdesc.setPath(path);
-                                       outdesc.setBinary(binary);
-                               } else {
-                                       throw new 
DeserializationException("Problem reading output port: unknown innerType '" + 
innerType + "'");
-                               }
-                               if (ok) {
-                                       
getOutputs().put(Tools.sanitiseName(name), outdesc);
-                               }
-                       } else if (type.equalsIgnoreCase("rte") || 
type.equalsIgnoreCase("re")) {
-                               getREs().add(new 
RuntimeEnvironmentConstraint(name, cur.getAttributeValue("relation")));
-                       } else if (type.equalsIgnoreCase("group")) {
-                               group = name;
-                       } else if (type.equalsIgnoreCase("test")) {
-                               test_local = cur.getAttributeValue("local");
-                       } else if (type.equalsIgnoreCase("icon")) {
-                               icon_url = cur.getAttributeValue("url");
-                       } else if (type.equalsIgnoreCase("queue")) {
-                               for (Object child_ob : cur.getChildren()) {
-                                       Element child = (Element) child_ob;
-                                       if 
(child.getName().equalsIgnoreCase("prefer"))
-                                               
getQueue_preferred().add(child.getAttributeValue("url"));
-                                       else if 
(child.getName().equalsIgnoreCase("deny"))
-                                               
getQueue_deny().add(child.getAttributeValue("url"));
-                                       else
-                                               throw new 
DeserializationException("Error while reading usecase " + this.getUsecaseid() + 
": invalid queue entry");
-                               }
-                       } else if (type.equalsIgnoreCase("command")) {
-                               // i like to have the ability to inject 
complete shell script
-                               // fragments into the use case,
-                               // so this should be replace and should allow 
multiple lines
-                               if ((getCommand() != null) && 
!getCommand().isEmpty()) {
-                                       throw new DeserializationException("You 
have specified both command attribute and command tag.");
-                               }
-                               setCommand(cur.getText());
-                       } else if (type.equalsIgnoreCase("validReturnCodes")) {
-                                       String codeString = 
cur.getAttributeValue("codes");
-                                       if (codeString != null) {
-                                               
setReturnCodesAsText(codeString);
-                                       }
-                       }
-                       else {
-                               throw new DeserializationException("Unexpected 
and uninterpreted attribute " + type);
-                       }
-               }
-       }
-
-       private void fillInputDescription(ScriptInput fillMe, boolean binary, 
boolean forceCopy, String innerType, String tag, String path) throws 
DeserializationException {
-               fillMe.setBinary(binary);
-               fillMe.setForceCopy(forceCopy);
-               if (null == innerType) {
-                       // don't know what to do
-                       throw new DeserializationException("FIXME: Found null 
== innerType for input, is this the bug?");
-               } else if (innerType.equalsIgnoreCase("replace")) {
-                       fillMe.setTag(tag);
-                       fillMe.setTempFile(false);
-                       fillMe.setFile(false);
-                       getTags().add(tag);
-               } else if (innerType.equalsIgnoreCase("tempfile")) {
-                       fillMe.setTag(tag);
-                       fillMe.setTempFile(true);
-                       fillMe.setFile(false);
-                       getTags().add(tag);
-               } else if (innerType.equalsIgnoreCase("file")) {
-                       fillMe.setTag(path);
-                       fillMe.setTempFile(false);
-                       fillMe.setFile(true);
-               } else {
-                       throw new DeserializationException("Problem reading 
input port: unknown innerType '" + innerType + "'");
-               }
-       }
-
-       /**
-        * returns icon that is referenced in use case description
-        */
-       public ImageIcon getImageIcon() {
-               if (null == icon_url) return null;
-               try {
-                       URL u = new URL(icon_url);
-                       return new ImageIcon(u, getUsecaseid());
-               } catch (Exception e) {
-                       logger.error(e);
-                       return null;
-               }
-       }
-
-       /**
-        * String representation of the use case. It also contains interesting
-        * information on the availability of resources in the grid to actually
-        * execute that workflow element.
-        *
-        * @return String
-        */
-       @Override
-       public String toString() {
-               List<String> hlp = new ArrayList<String>();
-               hlp.add("usecaseid: " + getUsecaseid());
-               hlp.add("description: " + getDescription());
-               hlp.add("group: " + group);
-               hlp.add("test: " + test_local);
-               hlp.add("tags: " + getTags());
-               for (Map.Entry<String, ScriptInput> cur : 
getInputs().entrySet()) {
-                       hlp.add(">" + cur.getKey() + ">: " + 
cur.getValue().toString());
-               }
-               for (Map.Entry<String, ScriptOutput> cur : 
getOutputs().entrySet()) {
-                       hlp.add("<" + cur.getKey() + "<: " + 
cur.getValue().toString());
-               }
-               hlp.add("RE: " + getREs().toString());
-               hlp.add("preferred queues: " + getQueue_preferred());
-               hlp.add("denied queues: " + getQueue_deny());
-               String tos = super.toString() + "[";
-               for (int i = 0; i < hlp.size(); i++) {
-                       if (i != 0)
-                               tos += ", ";
-                       tos += hlp.get(i);
-               }
-               return tos + " ]";
-       }
-
-       /**
-        * hajo's test just pass an url or file url to an xml file
-        *
-        * @throws IOException
-        * @throws MalformedURLException
-        * @throws DeserializationException
-        */
-       public static void main(String[] argv) throws MalformedURLException, 
IOException, DeserializationException {
-               UseCaseDescription d = new UseCaseDescription(new 
URL(argv[0]).openStream());
-               logger.info(d.getCommand());
-       }
-
-       /**
-        * @param command the command to set
-        */
-       @ConfigurationProperty(name = "command", label = "Command", 
description="What is actually executed on the shell")
-       public void setCommand(String command) {
-               this.command = command;
-       }
-
-       /**
-        * @param description the description to set
-        */
-       @ConfigurationProperty(name = "description", label = "Description", 
description="Textual description of the tool", required=false, 
uri="http://purl.org/dc/elements/1.1/description";)
-       public void setDescription(String description) {
-               this.description = description;
-       }
-
-       /**
-        * @return the description
-        */
-       public String getDescription() {
-               return description;
-       }
-
-       /**
-        * @param executionTimeoutInSeconds the executionTimeoutInSeconds to set
-        */
-       @ConfigurationProperty(name = "executionTimeoutInSeconds", label = 
"Execution Timeout In Seconds")
-       public void setExecutionTimeoutInSeconds(int executionTimeoutInSeconds) 
{
-               this.executionTimeoutInSeconds = executionTimeoutInSeconds;
-       }
-
-       /**
-        * @return the executionTimeoutInSeconds
-        */
-       public int getExecutionTimeoutInSeconds() {
-               return executionTimeoutInSeconds;
-       }
-
-       /**
-        * @param inputs the inputs to set
-        */
-       public void setInputs(Map<String, ScriptInput> inputs) {
-               this.inputs = inputs;
-       }
-
-       @ConfigurationProperty(name = "inputs", label = "Inputs", 
required=false)
-       public void setInputs(Set<InputMap> inputs) {
-               if (inputs != null) {
-                       this.inputs = new HashMap<String, ScriptInput>();
-                       for (InputMap inputMap : inputs) {
-                               this.inputs.put(inputMap.getPort(), 
inputMap.getInput());
-                       }
-               } else {
-                       this.inputs = null;
-               }
-       }
-
-       /**
-        * @return the inputs
-        */
-       public Map<String, ScriptInput> getInputs() {
-               if (inputs == null) {
-                       inputs = new HashMap<String, ScriptInput>();
-               }
-               return inputs;
-       }
-
-       /**
-        * @param outputs the outputs to set
-        */
-       public void setOutputs(Map<String, ScriptOutput> outputs) {
-               this.outputs = outputs;
-       }
-
-       @ConfigurationProperty(name = "outputs", label = "Outputs", 
required=false)
-       public void setOutputs(Set<OutputMap> outputs) {
-               if (outputs != null) {
-                       this.outputs = new HashMap<String, ScriptOutput>();
-                       for (OutputMap outputMap : outputs) {
-                               this.outputs.put(outputMap.getPort(), 
outputMap.getOutput());
-                       }
-               } else {
-                       this.outputs = null;
-               }
-       }
-
-       /**
-        * @return the outputs
-        */
-       public Map<String, ScriptOutput> getOutputs() {
-               if (outputs == null) {
-                       outputs = new HashMap<String, ScriptOutput>();
-               }
-               return outputs;
-       }
-
-       /**
-        * @param preparingTimeoutInSeconds the preparingTimeoutInSeconds to set
-        */
-       @ConfigurationProperty(name = "preparingTimeoutInSeconds", label = 
"Preparing Timeout In Seconds")
-       public void setPreparingTimeoutInSeconds(int preparingTimeoutInSeconds) 
{
-               this.preparingTimeoutInSeconds = preparingTimeoutInSeconds;
-       }
-
-       /**
-        * @return the preparingTimeoutInSeconds
-        */
-       public int getPreparingTimeoutInSeconds() {
-               return preparingTimeoutInSeconds;
-       }
-
-       /**
-        * @param queue_deny the queue_deny to set
-        */
-       public void setQueue_deny(ArrayList<String> queue_deny) {
-               this.queue_deny = queue_deny;
-       }
-
-       /**
-        * @return the queue_deny
-        */
-       public ArrayList<String> getQueue_deny() {
-               if (queue_deny == null) {
-                       queue_deny = new ArrayList<String>();
-               }
-               return queue_deny;
-       }
-
-       /**
-        * @param queue_preferred the queue_preferred to set
-        */
-       public void setQueue_preferred(ArrayList<String> queue_preferred) {
-               this.queue_preferred = queue_preferred;
-       }
-
-       /**
-        * @return the queue_preferred
-        */
-       public ArrayList<String> getQueue_preferred() {
-               if (queue_preferred == null) {
-                       queue_preferred = new ArrayList<String>();
-               }
-               return queue_preferred;
-       }
-
-       /**
-        * @param rEs the rEs to set
-        */
-       public void setREs(List<RuntimeEnvironmentConstraint> rEs) {
-               REs = rEs;
-       }
-
-       /**
-        * @return the rEs
-        */
-       public List<RuntimeEnvironmentConstraint> getREs() {
-               if (REs == null) {
-                       REs = new ArrayList<RuntimeEnvironmentConstraint>();
-               }
-               return REs;
-       }
-
-       /**
-        * @param static_inputs the static_inputs to set
-        */
-       @ConfigurationProperty(name = "staticInputs", label = "Static Inputs", 
ordering=OrderPolicy.NON_ORDERED, required=false)
-       public void setStatic_inputs(List<ScriptInputStatic> static_inputs) {
-               this.static_inputs = static_inputs;
-       }
-
-       /**
-        * @return the static_inputs
-        */
-       public List<ScriptInputStatic> getStatic_inputs() {
-               if (static_inputs == null) {
-                       static_inputs = new ArrayList<ScriptInputStatic>();
-               }
-               return static_inputs;
-       }
-
-       /**
-        * @param tags the tags to set
-        */
-       public void setTags(List<String> tags) {
-               this.tags = tags;
-       }
-
-       /**
-        * @return the tags
-        */
-       public List<String> getTags() {
-               if (tags == null) {
-                       tags = new ArrayList<String>();
-               }
-               return tags;
-       }
-
-       /**
-        * @param usecaseid the usecaseid to set
-        */
-       @ConfigurationProperty(name = "usecaseid", label = "Title", 
uri="http://purl.org/dc/elements/1.1/title";, required=false)
-       public void setUsecaseid(String usecaseid) {
-               this.usecaseid = usecaseid;
-       }
-
-       /**
-        * @return the usecaseid
-        */
-       public String getUsecaseid() {
-               return usecaseid;
-       }
-
-       public boolean isIncludeStdIn() {
-               return includeStdIn;
-       }
-
-       @ConfigurationProperty(name = "includeStdIn", label = "Include STDIN")
-       public void setIncludeStdIn(boolean includeStdIn) {
-               this.includeStdIn = includeStdIn;
-       }
-
-       public boolean isIncludeStdOut() {
-               return includeStdOut;
-       }
-
-       @ConfigurationProperty(name = "includeStdOut", label = "Include STDOUT")
-       public void setIncludeStdOut(boolean includeStdOut) {
-               this.includeStdOut = includeStdOut;
-       }
-
-       public boolean isIncludeStdErr() {
-               return includeStdErr;
-       }
-
-       @ConfigurationProperty(name = "includeStdErr", label = "Include STDERR")
-       public void setIncludeStdErr(boolean includeStdErr) {
-               this.includeStdErr = includeStdErr;
-       }
-
-       /**
-        * @return the validReturnCodes
-        */
-       public List<Integer> getValidReturnCodes() {
-               if (validReturnCodes == null) {
-                       validReturnCodes = new ArrayList<Integer>();
-               }
-               if (validReturnCodes.isEmpty()) {
-                       validReturnCodes.add(0);
-               }
-               return validReturnCodes;
-       }
-
-       /**
-        * @param validReturnCodes the validReturnCodes to set
-        */
-       public void setValidReturnCodes(List<Integer> validReturnCodes) {
-               this.validReturnCodes = validReturnCodes;
-       }
-
-       public String getReturnCodesAsText() {
-               return StringUtils.join(getValidReturnCodes(), ",");
-       }
-
-       public void setReturnCodesAsText(String text) {
-               if (getValidReturnCodes() == null) {
-                       validReturnCodes = new ArrayList<Integer>();
-               }
-               validReturnCodes.clear();
-               String[] codes = text.split(",");
-               for (String code : codes) {
-                       try {
-                               Integer codeInt = new Integer(code);
-                               if (!validReturnCodes.contains(codeInt)) {
-                                       validReturnCodes.add(codeInt);
-                               }
-                       }
-                       catch (NumberFormatException e) {
-                               logger.error(e);
-                       }
-               }
-               if (validReturnCodes.isEmpty()) {
-                       validReturnCodes.add(0);
-               }
-               Collections.sort(validReturnCodes);
-       }
-
-       /**
-        * @return the group
-        */
-       public String getGroup() {
-               return group;
-       }
-
-       /**
-        * @param group the group to set
-        */
-       public void setGroup(String group) {
-               this.group = group;
-       }
-
-       /**
-        * @return the icon_url
-        */
-       public String getIcon_url() {
-               return icon_url;
-       }
-
-       @ConfigurationBean(uri = ExternalToolActivity.URI + "#OutputMap")
-       public static class OutputMap {
-               private String port;
-
-               private ScriptOutput output;
-
-               public String getPort() {
-                       return port;
-               }
-
-               @ConfigurationProperty(name = "port", label = "Port")
-               public void setPort(String port) {
-                       this.port = port;
-               }
-
-               public ScriptOutput getOutput() {
-                       return output;
-               }
-
-               @ConfigurationProperty(name = "output", label = "Output")
-               public void setOutput(ScriptOutput output) {
-                       this.output = output;
-               }
-       }
-
-       @ConfigurationBean(uri = ExternalToolActivity.URI + "#InputMap")
-       public static class InputMap {
-               private String port;
-
-               private ScriptInputUser input;
-
-               public String getPort() {
-                       return port;
-               }
-
-               @ConfigurationProperty(name = "port", label = "Port")
-               public void setPort(String port) {
-                       this.port = port;
-               }
-
-               public ScriptInputUser getInput() {
-                       return input;
-               }
-
-               @ConfigurationProperty(name = "input", label = "Input")
-               public void setInput(ScriptInputUser input) {
-                       this.input = input;
-               }
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseEnumeration.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseEnumeration.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseEnumeration.java
deleted file mode 100644
index d5c5d2c..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/UseCaseEnumeration.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.taverna.workflowmodel.serialization.DeserializationException;
-
-import org.apache.log4j.Logger;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-
-public class UseCaseEnumeration {
-
-       private static Logger logger = 
Logger.getLogger(UseCaseEnumeration.class);
-
-       public static List<UseCaseDescription> readDescriptionsFromUrl(String 
xmlFileUrl) throws IOException {
-
-               List<UseCaseDescription> ret = new 
ArrayList<UseCaseDescription>();
-               URLConnection con = null;
-               try {
-                       URL url = new URL(xmlFileUrl);
-
-                       con = url.openConnection();
-                       con.setConnectTimeout(4000);
-                       ret = readDescriptionsFromStream(con.getInputStream());
-                       
-               } catch (IOException ioe) {
-                       logger.error("Problem retrieving from " + xmlFileUrl);
-                       logger.error(ioe);
-                       throw ioe;
-               }
-               finally {
-
-               }
-
-               return ret;
-
-       }
-       
-       public static List<UseCaseDescription> 
readDescriptionsFromStream(InputStream is) {
-               
-               List<UseCaseDescription> ret = new 
ArrayList<UseCaseDescription>();
-
-               SAXBuilder builder = new SAXBuilder();
-               Document doc = null;
-               try {
-                       doc = builder.build(is);
-                       is.close();
-               } catch (JDOMException e1) {
-                       logger.error(e1);
-                       return ret;
-               } catch (IOException e1) {
-                       logger.error(e1);
-                       return ret;
-               } finally {
-                       try {
-                               is.close();
-                       } catch (IOException e) {
-                               logger.error(e);
-                       }
-               }
-
-               Element usecases = doc.getRootElement();
-               for (Object ochild : usecases.getChildren()) {
-                       Element child = (Element) ochild;
-                       if (child.getName().equalsIgnoreCase("program")) {
-                                       try {
-                                               ret.add(new 
UseCaseDescription(child));
-                                       } catch (DeserializationException e) {
-                                               logger.error(e);
-                                       }
-                       }
-               }
-               return ret;
-       }
-
-       public static UseCaseDescription readDescriptionFromUrl(
-                       String repositoryUrl, String id) throws IOException {
-               List<UseCaseDescription> descriptions = 
readDescriptionsFromUrl(repositoryUrl);
-               for (UseCaseDescription usecase : descriptions) {
-                       if (usecase.getUsecaseid().equals(id)) {
-                               return usecase;
-                       }
-               }
-               return null;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java
deleted file mode 100644
index e912db1..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases.invocation;
-
-public interface AskUserForPw {
-
-       // we will try keyfile first
-       public String getKeyfile();
-       public String getPassphrase();
-
-       // then username+password
-       public String getUsername();
-       public String getPassword();
-
-       public void authenticationSucceeded();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java
deleted file mode 100644
index 2f4485f..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases.invocation;
-
-public class InvocationException extends Exception {
-
-       /**
-        * 
-        */
-       private static final long serialVersionUID = 437316164959631591L;
-
-       public InvocationException(String string) {
-               super(string);
-       }
-       
-       public InvocationException(Exception e) {
-               super(e);
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/98468d30/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/UseCaseInvocation.java
----------------------------------------------------------------------
diff --git 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/UseCaseInvocation.java
 
b/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/UseCaseInvocation.java
deleted file mode 100644
index d6b2502..0000000
--- 
a/taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/UseCaseInvocation.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package de.uni_luebeck.inb.knowarc.usecases.invocation;
-
-import java.io.BufferedWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.io.IOUtils;
-
-import org.apache.taverna.invocation.InvocationContext;
-import org.apache.taverna.reference.ExternalReferenceSPI;
-import org.apache.taverna.reference.Identified;
-import org.apache.taverna.reference.IdentifiedList;
-import org.apache.taverna.reference.ReferenceService;
-import org.apache.taverna.reference.ReferenceServiceException;
-import org.apache.taverna.reference.ReferenceSet;
-import org.apache.taverna.reference.T2Reference;
-import 
org.apache.taverna.reference.impl.external.object.InlineByteArrayReferenceBuilder;
-import 
org.apache.taverna.reference.impl.external.object.InlineStringReferenceBuilder;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputStatic;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-
-/**
- * An abstraction of various forms to bring job using the software that is
- * referenced as a use case towards their execution.
- * 
- * @author Hajo Nils Krabbenhoeft with some contribution by
- * @author Steffen Moeller
- */
-public abstract class UseCaseInvocation {
-       
-       private String runId;
-       
-       
-       protected static String getActualOsCommand(String osCommand, String 
pathToOriginal,
-                       String targetName, String pathTarget) {
-                               String actualOsCommand = osCommand;
-                               actualOsCommand = 
actualOsCommand.replace("%%PATH_TO_ORIGINAL%%", pathToOriginal);
-                               actualOsCommand = 
actualOsCommand.replace("%%TARGET_NAME%%", targetName);
-                               actualOsCommand = 
actualOsCommand.replace("%%PATH_TO_TARGET%%", pathTarget);
-                               return actualOsCommand;
-                       }
-
-       protected UseCaseDescription usecase;
-       protected final HashMap<String, String> tags = new HashMap<String, 
String>();
-       protected int nTempFiles = 0;
-       private static int submissionID = 0;
-       protected static InlineByteArrayReferenceBuilder 
inlineByteArrayReferenceBuilder = new InlineByteArrayReferenceBuilder();
-       protected static InlineStringReferenceBuilder 
inlineStringReferenceBuilder = new InlineStringReferenceBuilder();
-       private InvocationContext invocationContext;
-       private boolean retrieveData;
-       
-       /*
-        * get the class of the data we expect for a given input
-        */
-       @SuppressWarnings("unchecked")
-       public Class getType(String inputName) {
-               if (!usecase.getInputs().containsKey(inputName))
-                       return null;
-               ScriptInputUser input = (ScriptInputUser) 
usecase.getInputs().get(inputName);
-               if (input.isList()) {
-                       if (input.isBinary())
-                               return List.class;
-                       else
-                               return List.class;
-               } else {
-                       if (input.isBinary())
-                               return byte[].class;
-                       else
-                               return String.class;
-               }
-       }
-
-       /*
-        * get a list of all the input port names
-        */
-       public Set<String> getInputs() {
-               return usecase.getInputs().keySet();
-       }
-
-
-       /*
-        * get a id, incremented with each job. thus, this should be thread-wide
-        * unique
-        */
-       public synchronized int getSubmissionID() {
-               return submissionID++;
-       }
-
-       /*
-        * set the data for the input port with given name
-        */
-       @SuppressWarnings("unchecked")
-       public void setInput(String inputName, ReferenceService 
referenceService, T2Reference t2Reference) throws InvocationException {
-               if (t2Reference == null) {
-                       throw new InvocationException("No input specified for " 
+ inputName);
-               }
-               ScriptInputUser input = (ScriptInputUser) 
usecase.getInputs().get(inputName);
-               if (input.isList()) {
-                       IdentifiedList<T2Reference> listOfReferences = 
(IdentifiedList<T2Reference>) referenceService
-                                       .getListService().getList(t2Reference);
-
-                       if (!input.isConcatenate()) {
-                               // this is a list input (not concatenated)
-                               // so write every element to its own temporary 
file
-                               // and create a filelist file
-
-                               // we need to write the list elements to 
temporary files
-                               ScriptInputUser listElementTemp = new 
ScriptInputUser();
-                               listElementTemp.setBinary(input.isBinary());
-                               listElementTemp.setTempFile(true);
-
-                               String lineEndChar = "\n";
-                               if (!input.isFile() && !input.isTempFile()) {
-                                       lineEndChar = " ";
-                               }
-
-                               String listFileContent = "";
-                               String filenamesFileContent = "";
-                               // create a list of all temp file names
-                               for (T2Reference cur : listOfReferences) {
-                                       String tmp = 
setOneInput(referenceService, cur,
-                                                       listElementTemp);
-                                       listFileContent += tmp + lineEndChar;
-                                       int ind = tmp.lastIndexOf('/');
-                                       if (ind == -1) {
-                                               ind = tmp.lastIndexOf('\\');
-                                       }
-                                       if (ind != -1) {
-                                               tmp = tmp.substring(ind + 1);
-                                       }
-                                       filenamesFileContent += tmp + 
lineEndChar;
-                               }
-
-                               // how do we want the listfile to be stored?
-                               ScriptInputUser listFile = new 
ScriptInputUser();
-                               listFile.setBinary(false); // since its a list 
file
-                               listFile.setFile(input.isFile());
-                               listFile.setTempFile(input.isTempFile());
-                               listFile.setTag(input.getTag());
-                               T2Reference listFileContentReference = 
referenceService
-                                               .register(listFileContent, 0, 
true, invocationContext);
-
-                               tags.put(listFile.getTag(), 
setOneInput(referenceService,
-                                               listFileContentReference, 
listFile));
-
-                               listFile.setTag(input.getTag() + "_NAMES");
-                               T2Reference filenamesFileContentReference = 
referenceService
-                                               .register(filenamesFileContent, 
0, true, null);
-                               tags.put(listFile.getTag(), 
setOneInput(referenceService,
-                                               filenamesFileContentReference, 
listFile));
-                       } else {
-                               try {
-                                       // first, concatenate all data
-                                       if (input.isBinary()) {
-                                               ByteArrayOutputStream 
outputStream = new ByteArrayOutputStream();
-                                               BufferedWriter outputWriter = 
new BufferedWriter(
-                                                               new 
OutputStreamWriter(outputStream));
-                                               for (T2Reference cur : 
listOfReferences) {
-                                                       InputStreamReader 
inputReader = new InputStreamReader(
-                                                                       
getAsStream(referenceService, cur));
-                                                       
IOUtils.copyLarge(inputReader, outputWriter);
-                                                       inputReader.close();
-                                               }
-                                               outputWriter.close();
-                                               T2Reference binaryReference = 
referenceService
-                                                               
.register(outputStream.toByteArray(), 0, true,
-                                                                               
invocationContext);
-                                               tags.put(input.getTag(), 
setOneInput(referenceService,
-                                                               
binaryReference, input));
-                                       } else {
-                                               ByteArrayOutputStream 
outputStream = new ByteArrayOutputStream();
-                                               BufferedWriter outputWriter = 
new BufferedWriter(
-                                                               new 
OutputStreamWriter(outputStream));
-                                               for (T2Reference cur : 
listOfReferences) {
-                                                       InputStreamReader 
inputReader = new InputStreamReader(
-                                                                       
getAsStream(referenceService, cur));
-                                                       
IOUtils.copyLarge(inputReader, outputWriter);
-                                                       outputWriter.write(" ");
-                                                       inputReader.close();
-                                               }
-                                               outputWriter.close();
-                                               T2Reference binaryReference = 
referenceService
-                                                               
.register(outputStream.toByteArray(), 0, true,
-                                                                               
invocationContext);
-                                               tags.put(input.getTag(), 
setOneInput(referenceService,
-                                                               
binaryReference, input));
-                                       }
-                               } catch (IOException e) {
-                                       throw new InvocationException(e);
-                               }
-                       }
-               } else {
-                       tags.put(input.getTag(), setOneInput(referenceService, 
t2Reference,
-                                       input));
-               }
-       }
-
-       /*
-        * submit a grid job and wait for it to finish, then get the result as
-        * on-demand downloads or directly as data (in case of local execution)
-        */
-       public HashMap<String, Object> Submit(ReferenceService 
referenceService) throws InvocationException {
-               submit_generate_job(referenceService);
-               return submit_wait_fetch_results(referenceService);
-       }
-
-       /*
-        * just submit the job. useful if you want to wait for it to finish 
later on
-        * 
-        * Can the statics be made more static?
-        */
-       public void submit_generate_job(ReferenceService referenceService) 
throws InvocationException {
-               for (ScriptInputStatic input : usecase.getStatic_inputs()) {
-                       T2Reference ref;
-                       if (input.getUrl() != null) {
-                               // Does this work OK with binary
-                               try {
-                                       ref = referenceService.register(new 
URL(input.getUrl()), 0, true, null);
-                               } catch (ReferenceServiceException e) {
-                                       throw new InvocationException(e);
-                               } catch (MalformedURLException e) {
-                                       throw new InvocationException(e);
-                               }
-                       } else {
-                               ref = referenceService.register((String) 
input.getContent(), 0, true, null);
-                       }
-                               tags.put(input.getTag(), 
setOneInput(referenceService, ref, input));
-                       
-               }
-               submit_generate_job_inner();
-       }
-
-       protected abstract void submit_generate_job_inner() throws 
InvocationException;
-
-       /*
-        * wait for a submitted job to finish and fetch the results
-        */
-       public abstract HashMap<String, Object> 
submit_wait_fetch_results(ReferenceService referenceService) throws 
InvocationException;
-
-       public abstract String setOneInput(ReferenceService referenceService, 
T2Reference t2Reference, ScriptInput input) throws InvocationException;
-
-       protected InputStream getAsStream(ReferenceService referenceService, 
T2Reference t2Reference) {
-               Identified identified = 
referenceService.resolveIdentifier(t2Reference, null, null);
-               if (identified instanceof ReferenceSet) {
-                       ExternalReferenceSPI ref = ((ReferenceSet) 
identified).getExternalReferences().iterator().next();
-                       return ref.openStream(invocationContext);
-               }
-               return null;
-       }
-
-       public void setContext(InvocationContext context) {
-               this.invocationContext = context;
-               
-       }
-       
-       public InvocationContext getContext() {
-               return this.invocationContext;
-       }
-
-       public abstract void setStdIn(ReferenceService referenceService,
-                       T2Reference t2Reference);
-
-       public abstract void rememberRun(String runId);
-
-       /**
-        * @return the runId
-        */
-       protected String getRunId() {
-               return runId;
-       }
-
-       /**
-        * @param runId the runId to set
-        */
-       protected void setRunId(String runId) {
-               this.runId = runId;
-       }
-
-       /**
-        * @return the retrieveData
-        */
-       protected boolean isRetrieveData() {
-               return retrieveData;
-       }
-
-       /**
-        * @param retrieveData the retrieveData to set
-        */
-       protected void setRetrieveData(boolean retrieveData) {
-               this.retrieveData = retrieveData;
-       }
-       
-
-}

Reply via email to