home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / aplic / jbuilder / jsamples.z / PersistString.java < prev    next >
Text File  |  1997-07-03  |  2KB  |  62 lines

  1. package borland.samples.apps.chess.client;
  2. import java.io.*;
  3. import java.util.Vector;
  4.  
  5. /**re-invent the wheel: Concatenate an array of Strings in such a way that they can hold any data
  6. * and be parsed back into the array of strings they were created from
  7. * Simplifies passing multiparameter messages between client and server
  8. */
  9. public class PersistString {
  10.   static public String concat(String[] data ) {
  11.     String retVal = "";
  12.     for (int i=0;i < data.length && data[i] != null ;i++)
  13.        retVal = retVal + i + "\"" + PersistString.padQuotes(data[i])+ "\"" ;
  14.     return  retVal;
  15.   }
  16.   
  17.   static public String [] parse(String infoData) {
  18.     Vector output = new Vector(10);
  19.     StringReader stream = new StringReader(infoData);
  20.     //StringBufferInputStream stream  = new StringBufferInputStream(infoData);
  21.     //StreamTokenizer st = new StreamTokenizer(new BufferedInputStream(stream, 1000));
  22.     StreamTokenizer st = new StreamTokenizer(stream);
  23.  
  24.     try {
  25.       st.nextToken();
  26.       while(true) {
  27.         String data = null;
  28.         while (st.nextToken() == '"') {
  29.           if (data == null)
  30.             data = st.sval;
  31.           else
  32.             data = data + "\"" + st.sval;
  33.         }
  34.         output.addElement(data);
  35.         if (st.ttype == StreamTokenizer.TT_EOF)
  36.           break;
  37.       }
  38.     }
  39.     catch (Exception e) {
  40.       System.out.println("PersistStream error " + e);
  41.     }
  42.     String [] outputArray = new String [output.size()];
  43.     for (int i=0;i<output.size();i++)
  44.       outputArray[i] = (String) output.elementAt(i);
  45.     return outputArray;
  46.   }
  47.  
  48.   static String padQuotes(String data) {
  49.     int index = 0 ;
  50.     int oldIndex = 0;
  51.     while (index >= 0) {
  52.       index = data.indexOf('\"',oldIndex);
  53.       if (index > 0) {
  54.         data = data.substring(0,index) + "\"" + data.substring(index );
  55.         //System.out.println ("Found a quote in the data " + data);
  56.         oldIndex = index + 2;
  57.       }
  58.     }
  59.     return data;
  60.   }
  61. }
  62.