1 23 24 package org.infoglue.deliver.applications.filters; 25 26 import java.util.ArrayList ; 27 import java.util.List ; 28 import java.util.regex.Pattern ; 29 import java.util.regex.PatternSyntaxException ; 30 31 38 39 public class URIMatcher 40 { 41 private Pattern [] patterns = new Pattern [0]; 42 43 45 private URIMatcher() 46 { 47 } 48 49 public URIMatcher(Pattern [] patterns) 50 { 51 this.patterns = patterns; 52 } 53 54 56 public static URIMatcher compilePatterns(String [] strings, boolean caseSensitive) throws PatternSyntaxException  57 { 58 URIMatcher uriMatcher = new URIMatcher(); 59 List patterns = new ArrayList (); 60 if (strings != null && strings.length > 0) 61 { 62 for (int i=0;i<strings.length;i++) 63 { 64 String str = strings[i]; 65 if (str != null) 66 { 67 str = str.trim(); 68 if (str.length() > 0) 69 { 70 String patternStr = patternize(str); 71 72 Pattern pattern = null; 73 if(caseSensitive) 74 pattern = Pattern.compile(patternStr); 75 else 76 pattern = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE); 77 78 patterns.add(pattern); 79 } 80 } 81 } 82 } 83 uriMatcher.setPatterns((Pattern [])patterns.toArray(new Pattern [0])); 84 return uriMatcher; 85 } 86 87 public boolean matches(String URI) 88 { 89 if (URI != null && patterns != null && patterns.length > 0) 90 { 91 for (int i=0;i<patterns.length;i++) 92 { 93 if (patterns[i].matcher(URI).matches()) 94 return true; 95 } 96 } 97 return false; 98 } 99 100 102 private static String patternize(String str) 103 { 104 str = str.replaceAll("\\.", "\\\\."); 105 str = str.replaceAll("\\:", "\\\\:"); 106 str = str.replaceAll("\\*", ".*"); 107 return str; 108 } 109 110 private void setPatterns(Pattern [] patterns) 111 { 112 this.patterns = patterns; 113 } 114 115 } | Popular Tags |