1 package org.sapia.regis.util; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 import java.util.StringTokenizer ; 6 7 public class ResourceFinderFactory { 8 9 static final String GROUP_START_DELIM = "("; 10 static final String GROUP_END_DELIM = ")"; 11 static final String RESOURCE_DELIM = ","; 12 13 static final String DELIMS = "(),"; 14 15 static ResourceFinder parse(String list){ 16 ResourceFinder finder = new ResourceFinder(list); 17 StringTokenizer tokenizer = 18 new StringTokenizer (list, DELIMS, true); 19 20 List group = null; 21 while(tokenizer.hasMoreTokens()){ 22 String token = tokenizer.nextToken(); 23 if(isGroupStart(token)){ 24 if(group != null){ 25 finder.addResources(group); 26 } 27 group = new ArrayList (); 28 } 29 else if(isGroupEnd(token)){ 30 if(group != null){ 31 if(group.size() > 0){ 32 finder.addResources(group); 33 } 34 group = null; 35 } 36 } 37 else if(isResourceDelim(token)){ 38 } 40 else{ 41 if(group != null){ 42 group.add(token.trim()); 43 } 44 else{ 45 finder.addResource(token.trim()); 46 } 47 } 48 } 49 if(group != null){ 50 finder.addResources(group); 51 } 52 return finder; 53 } 54 55 private static boolean isGroupStart(String token){ 56 return token.length() == 1 && token.equals(GROUP_START_DELIM); 57 } 58 59 private static boolean isGroupEnd(String token){ 60 return token.length() == 1 && token.equals(GROUP_END_DELIM); 61 } 62 63 private static boolean isResourceDelim(String token){ 64 return token.length() == 1 && token.equals(RESOURCE_DELIM); 65 } 66 } 67 | Popular Tags |