new array type
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/6a9f9f01 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/6a9f9f01 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/6a9f9f01 Branch: refs/heads/cwl-browse Commit: 6a9f9f0185d0f6d13ad673891a242e72db3520f0 Parents: f3df1af Author: ThilinaManamgoda <maanafun...@gmail.com> Authored: Mon Aug 1 20:30:05 2016 +0530 Committer: ThilinaManamgoda <maanafun...@gmail.com> Committed: Mon Aug 1 20:30:05 2016 +0530 ---------------------------------------------------------------------- .../apache/taverna/cwl/utilities/CWLUtil.java | 28 +++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/6a9f9f01/taverna-cwl-utilities/src/main/java/org/apache/taverna/cwl/utilities/CWLUtil.java ---------------------------------------------------------------------- diff --git a/taverna-cwl-utilities/src/main/java/org/apache/taverna/cwl/utilities/CWLUtil.java b/taverna-cwl-utilities/src/main/java/org/apache/taverna/cwl/utilities/CWLUtil.java index 86379eb..5ff2d2f 100644 --- a/taverna-cwl-utilities/src/main/java/org/apache/taverna/cwl/utilities/CWLUtil.java +++ b/taverna-cwl-utilities/src/main/java/org/apache/taverna/cwl/utilities/CWLUtil.java @@ -17,17 +17,23 @@ package org.apache.taverna.cwl.utilities; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.TextNode; public class CWLUtil { + public static final String ARRAY_SPLIT_BRACKETS = "\\[\\]"; + public static final String ARRAY_SIGNATURE_BRACKETS = "\\[\\]$"; private static final String INPUTS = "inputs"; private static final String OUTPUTS = "outputs"; private static final String ID = "id"; @@ -113,7 +119,9 @@ public class CWLUtil { typeConfigurations = input.get(TYPE); // if type :single argument if (typeConfigurations.getClass() == TextNode.class) { - + if(isValidArrayType(typeConfigurations.asText())) + result.put(currentInputId, DEPTH_1); + else result.put(currentInputId, DEPTH_0); // type : defined as another map which contains type: } else if (typeConfigurations.getClass() == ObjectNode.class) { @@ -292,4 +300,22 @@ public class CWLUtil { } return true; } + + /** + * + * This method is for figure out whether the parameter is an array or not. + * As from CWL document v1.0, array can be defined as "TYPE[]". For Example : int[] + * This method will look for "[]" sequence of characters in the end of the type and is provided type is a valid CWL TYPE or not + * @param type type of the CWL parameter + * @return + */ + public boolean isValidArrayType(String type){ + Pattern pattern= Pattern.compile(ARRAY_SIGNATURE_BRACKETS); + Matcher matcher = pattern.matcher(type); + ObjectMapper mapper = new ObjectMapper(); + ArrayNode node =mapper.createArrayNode(); + node.add(type.split(ARRAY_SPLIT_BRACKETS)[0]); + if(matcher.find() && isValidDataType(node))return true; + else return false; + } }