1 36 package org.columba.ristretto.imap.parser; 37 38 import java.util.regex.Matcher ; 39 import java.util.regex.Pattern ; 40 41 import org.columba.ristretto.imap.SequenceEntry; 42 import org.columba.ristretto.imap.SequenceSet; 43 import org.columba.ristretto.parser.ParserException; 44 45 51 public class SequenceSetParser { 52 53 private static final Pattern SequenceSetPattern = Pattern.compile("(\\d+|\\*)" + "(:(\\d+|\\*))?"); 56 63 public static SequenceSet parse(CharSequence in) throws ParserException { 64 SequenceSet result = new SequenceSet(); 65 66 Matcher matcher = SequenceSetPattern.matcher(in); 67 while(matcher.find()) { 68 if( matcher.group(3) == null ) { if( matcher.group(1).equals("*")) { 70 result.add(SequenceEntry.STAR); 71 } else { 72 result.add(Integer.parseInt(matcher.group(1))); 73 } 74 } else { if( matcher.group(1).equals("*")) { 76 if( matcher.group(3).equals("*")) { 77 result.add(SequenceEntry.STAR); 78 } else { 79 result.addOpenRange(Integer.parseInt(matcher.group(3))); 80 } 81 } else { 82 if( matcher.group(3).equals("*")){ 83 result.addOpenRange(Integer.parseInt(matcher.group(1))); 84 } else { 85 result.add(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(3))); 86 } 87 } 88 89 } 90 } 91 92 return result; 93 } 94 95 } 96 | Popular Tags |