View Javadoc
1 package jsdsi; 2 3 import java.util.Iterator; 4 5 import jsdsi.sexp.Sexp; 6 import jsdsi.sexp.SexpParseException; 7 import jsdsi.sexp.SexpUtil; 8 9 /*** 10 * A tag that matches all strings with a given prefix. 11 * 12 * @author Sameer Ajmani 13 * @author Sean Radford 14 * @version $Revision: 1.5.2.1 $ $Date: 2005/11/08 03:12:52 $ 15 */ 16 public class PrefixTag extends ExprTag { 17 18 private static final long serialVersionUID = 4409242379275402071L; 19 20 /*** 21 * The Prefix. 22 */ 23 private transient final String prefix; 24 25 /*** 26 * Creates a new <code>PrefixTag</code> wit ha given prefix string. 27 * 28 * @param p the prefix string. 29 */ 30 public PrefixTag(String p) { 31 assert(p != null) : "null prefix"; 32 prefix = p; 33 } 34 35 /*** 36 * @see jsdsi.Tag#intersect(Tag) 37 */ 38 public Tag intersect(Tag that) 39 { 40 if (that instanceof PrefixTag) { 41 return intersect((PrefixTag)that); 42 } 43 if (that instanceof StringTag) { 44 return intersect((StringTag)that); 45 } 46 if (that instanceof ReversePrefixTag) { 47 return that.intersect(this); 48 } 49 if (that instanceof SetTag) { 50 return that.intersect(this); 51 } 52 return Tag.NULL_TAG; 53 } 54 55 /*** 56 * @see jsdsi.Tag#intersect(Tag) 57 */ 58 public Tag intersect(PrefixTag that) 59 { 60 if (this.prefix.startsWith(that.prefix)) { 61 return this; 62 } 63 if (that.prefix.startsWith(this.prefix)) { 64 return that; 65 } 66 return Tag.NULL_TAG; 67 } 68 69 /*** 70 * @see jsdsi.Tag#intersect(Tag) 71 */ 72 public Tag intersect(StringTag that) 73 { 74 if (that.getValue().startsWith(this.prefix)) { 75 return that; 76 } 77 return Tag.NULL_TAG; 78 } 79 80 /*** 81 * @see java.lang.Object#equals(Object) 82 */ 83 public boolean equals(Object that) { 84 return (that instanceof PrefixTag) 85 && this.prefix.equals(((PrefixTag) that).prefix); 86 } 87 88 /*** 89 * @see java.lang.Object#hashCode() 90 */ 91 public int hashCode() { 92 return prefix.hashCode(); 93 } 94 95 /*** 96 * Returns the prefix of this tag. 97 * 98 * @return the prefix of this tag. 99 */ 100 public String getPrefix() { 101 return prefix; 102 } 103 104 public Sexp toTagSexp() { 105 Sexp[] ss = new Sexp[2]; 106 ss[0] = SexpUtil.toSexp("prefix"); 107 ss[1] = SexpUtil.toSexp(getPrefix()); 108 return SexpUtil.toSexp("*", ss); 109 } 110 111 static PrefixTag parsePrefixTag(Iterator tbody) throws SexpParseException { 112 String p = SexpUtil.getNextString(tbody, "prefix tag"); 113 SexpUtil.checkDone(tbody, "prefix tag"); 114 return new PrefixTag(p); 115 } 116 }

This page was automatically generated by Maven