package net.codjo.dataprocess.common.model; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; /** * */ public class ArgModelHelper { private ArgModelHelper() { } public static boolean isGlobalValue(String val) { return val.trim().startsWith("$") && val.endsWith("$"); } public static boolean isLocalValue(String val) { return val.trim().startsWith("#") && val.endsWith("#"); } public static boolean isFunctionValue(String val) { return val.contains("(") && val.contains(")"); } public static String getGlobalValue(String val) { if (isGlobalValue(val)) { return val.trim().substring(1, val.length() - 1); } else { return null; } } public static String getLocalValue(String val) { if (isLocalValue(val)) { return val.trim().substring(1, val.length() - 1); } else { return null; } } public static List<String> getFunctionParams(String val) { if (isFunctionValue(val)) { List<String> params = new ArrayList<String>(); String paramStr = val.substring(val.indexOf('(') + 1, val.length() - 1); List<String> rawParameters = getParameters(paramStr); for (String parameter : rawParameters) { params.add(parameter.trim()); } return params; } else { return null; } } public static List<String> getParameters(String str) { List<String> parameters = new ArrayList<String>(); if (str == null || str.length() == 0) { return parameters; } StringBuilder partToken = new StringBuilder(); StringTokenizer listTokenizer = new StringTokenizer(str, ","); while (listTokenizer.hasMoreTokens()) { String token = listTokenizer.nextToken(); if (proceedPartTok(parameters, partToken.toString())) { partToken = new StringBuilder(); } if (token.trim().startsWith("'") && token.trim().endsWith("'")) { token = removeQuote(token.trim()); parameters.add(token); } else { partToken.append(token); if (!partToken.toString().trim().endsWith("'")) { partToken.append(","); } } } proceedPartTok(parameters, partToken.toString()); return parameters; } private static boolean proceedPartTok(List<String> parameters, String partToken) { if (partToken.length() != 0) { if (partToken.trim().startsWith("'") && partToken.trim().endsWith("'")) { partToken = removeQuote(partToken.trim()); parameters.add(partToken); return true; } } return false; } private static String removeQuote(String str) { return str.substring(1, str.length() - 1); } }