CharacterSet.java
01 package gate.creole.morph;
02 
03 import java.util.Arrays;
04 
05 /**
06  <p>Title: </p>
07  <p>Description: </p>
08  <p>Copyright: Copyright (c) 2003</p>
09  <p>Company: </p>
10  @author not attributable
11  @version 1.0
12  */
13 
14 public class CharacterSet extends Variable {
15 
16   private char [] varChars;
17   /**
18    * Constructor
19    */
20   public CharacterSet() {
21 
22   }
23 
24   /**
25    * Tells if any value available which can be retrieved
26    @return true if value available, false otherwise
27    */
28   public boolean hasNext() {
29     if(pointer<varChars.length) {
30       return true;
31     else {
32       return false;
33     }
34   }
35 
36   /**
37    * Returns the next available value for this variable
38    @return value of the variable in the String format
39    */
40   public String next() {
41     if(pointer<varChars.length) {
42       pointer++;
43       return ""+varChars[pointer-1];
44     else {
45       return null;
46     }
47   }
48 
49   /**
50    * Process the provided value and stores in the underlying data structure
51    @param varName name of the variable
52    @param varValue String that contains possible different values
53    @return true if successfully stored, false otherwise
54    */
55   public boolean set(String varName, String varValue) {
56     this.varName = varName;
57     this.varValue = varValue;
58     // here the varValue would be in the following format
59     // [abcdefg] // we need to sort it, so that while searching it will be
60     // easier and faster to perform the binary search
61     varValue = varValue.substring(1,varValue.length()-1);
62     this.varChars = varValue.toCharArray();
63     Arrays.sort(this.varChars);
64     return true;
65   }
66 
67   /**
68    * A method that tells if the characters of the provided value are
69    * from the characterSet only
70    @param value String of which the characters to be searched in the
71    * characterSet
72    @return true if all characters of value string are from the
73    * specified characterSet, false otherwise
74    */
75   public boolean contains(String value) {
76     for(int i=0;i<value.length();i++) {
77       if(Arrays.binarySearch(this.varChars,value.charAt(i))<0) {
78         return false;
79       }
80     }
81     return true;
82   }
83 }