package org.zstack.utils; import java.util.*; /** */ public class TagUtils { public static Map<String, String> parse(String fmt, String tag) { List<String> origins = new ArrayList<String>(); Collections.addAll(origins, tag.split("::")); List<String> t = new ArrayList<String>(); Collections.addAll(t, fmt.split("::")); Map<String, String> ret = new HashMap(); for (int i=0;i<t.size(); i++) { String key = t.get(i); if (!key.startsWith("{") || !key.endsWith("}")) { continue; } key = key.replaceAll("\\{", "").replaceAll("\\}", ""); if (i < origins.size()) { ret.put(key, origins.get(i)); } } return ret; } public static boolean isMatch(String fmt, String tag) { List<String> origins = new ArrayList<String>(); Collections.addAll(origins, tag.split("::")); List<String> t = new ArrayList<String>(); Collections.addAll(t, fmt.split("::")); if (fmt.indexOf("::") == -1) { return fmt.equals(tag); } if (origins.size() != t.size()) { return false; } for (int i=0; i<t.size(); i++) { String fmtKey = t.get(i); if (fmtKey.startsWith("{") && fmtKey.endsWith("}")) { continue; } String originKey = origins.get(i); if (!originKey.equals(fmtKey)) { return false; } } return true; } public static Map<String, String> parseIfMatch(String fmt, String tag) { if (!isMatch(fmt, tag)) { return null; } return parse(fmt, tag); } public static String tagPatternToSqlPattern(Enum tag) { return tagPatternToSqlPattern(tag.toString()); } public static String tagPatternToSqlPattern(String tag) { return tag.replaceAll("\\{(.+?)\\}", "%"); } }