package postgresql.util; import java.sql.*; import java.util.*; /** * This class is used to tokenize the text output of postgres. * *
It's mainly used by the geometric classes, but is useful in parsing any * output from custom data types output from postgresql. * * @see postgresql.geometric.PGbox * @see postgresql.geometric.PGcircle * @see postgresql.geometric.PGlseg * @see postgresql.geometric.PGpath * @see postgresql.geometric.PGpoint * @see postgresql.geometric.PGpolygon */ public class PGtokenizer { // Our tokens protected Vector tokens; /** * Create a tokeniser. * *
We could have used StringTokenizer to do this, however, we needed to
   * handle nesting of '(' ')' '[' ']' '<' and '>' as these are used
   * by the geometric data types.
   *
   * @param string containing tokens
   * @param delim single character to split the tokens
   */
  public PGtokenizer(String string,char delim)
  {
    tokenize(string,delim);
  }
  
  /**
   * This resets this tokenizer with a new string and/or delimiter.
   *
   * @param string containing tokens
   * @param delim single character to split the tokens
   */
  public int tokenize(String string,char delim)
  {
    tokens = new Vector();
    
    // nest holds how many levels we are in the current token.
    // if this is > 0 then we don't split a token when delim is matched.
    //
    // The Geometric datatypes use this, because often a type may have others
    // (usualls PGpoint) imbedded within a token.
    //
    // Peter 1998 Jan 6 - Added < and > to the nesting rules
    int nest=0,p,s;
    
    for(p=0,s=0;p