Log in Help
Print
HomegatepluginsLang_Welshsrcwnltmorph 〉 CharacterSet.java
 
package wnlt.morph;

import java.util.Arrays;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class CharacterSet extends Variable {

  private char [] varChars;
  /**
   * Constructor
   */
  public CharacterSet() {

  }

  /**
   * Tells if any value available which can be retrieved
   * @return true if value available, false otherwise
   */
  @Override
  public boolean hasNext() {
    if(pointer<varChars.length) {
      return true;
    } else {
      return false;
    }
  }

  /**
   * Returns the next available value for this variable
   * @return value of the variable in the String format
   */
  @Override
  public String next() {
    if(pointer<varChars.length) {
      pointer++;
      return ""+varChars[pointer-1];
    } else {
      return null;
    }
  }

  /**
   * Process the provided value and stores in the underlying data structure
   * @param varName name of the variable
   * @param varValue String that contains possible different values
   * @return true if successfully stored, false otherwise
   */
  @Override
  public boolean set(String varName, String varValue) {
    this.varName = varName;
    this.varValue = varValue;
    // here the varValue would be in the following format
    // [abcdefg] // we need to sort it, so that while searching it will be
    // easier and faster to perform the binary search
    varValue = varValue.substring(1,varValue.length()-1);
    this.varChars = varValue.toCharArray();
    Arrays.sort(this.varChars);
    return true;
  }

  /**
   * A method that tells if the characters of the provided value are
   * from the characterSet only
   * @param value String of which the characters to be searched in the
   * characterSet
   * @return true if all characters of value string are from the
   * specified characterSet, false otherwise
   */
  @Override
  public boolean contains(String value) {
    for(int i=0;i<value.length();i++) {
      if(Arrays.binarySearch(this.varChars,value.charAt(i))<0) {
        return false;
      }
    }
    return true;
  }
}