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