Internationalization Java

/*
Java Internationalization
By Andy Deitsch, David Czarnecki
ISBN: 0-596-00019-7
O'Reilly
*/
import java.text.*;
public class JavaSearch {
  public static int indexOf(String source, String pattern) {
    // Obtain a collator
    RuleBasedCollator rbc=(RuleBasedCollator)Collator.getInstance();
    rbc.setStrength(Collator.SECONDARY);
    CollationElementIterator textCEI;
    CollationElementIterator patCEI;
    textCEI = rbc.getCollationElementIterator(source);
    patCEI = rbc.getCollationElementIterator(pattern);
    // e1 will contain the collation element for the source
    // e2 will contain the collation element for the pattern
    int e1, e2;
    int startMatch = -1;
    // initialize e2 with the first collation element in the pattern
    e2 = patCEI.next();
    while ((e1 = textCEI.next())!=CollationElementIterator.NULLORDER) {
      if (e1 == e2) { // if the elements match
        if (startMatch == -1) startMatch = textCEI.getOffset();
        e2 = patCEI.next(); // increment to the next element
        if (e2 == CollationElementIterator.NULLORDER)
          break;
      } else { // elements do not match
        if (startMatch != -1) {
          patCEI.reset();
          e2 = patCEI.next();
          startMatch = -1;
        }
      }
    }
    return startMatch;
  }
  public static void main(String [] args) {
    String text = "Wie hei\u00DFen Sie?"; // Wie heiBen Sie?
    String pattern = "heissen";
    int index = indexOf(text, pattern);
    if (index != -1)
      System.out.println("Found a match at: " + index);
    else
      System.out.println("No match found!");
  }
}