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;
+       }
 }

Reply via email to