ucar.nc2.util
Class TableParser

java.lang.Object
  extended by ucar.nc2.util.TableParser

public class TableParser
extends java.lang.Object

Utility class to read and parse a fixed length table. Each line of the table becomes a "Record". Each Record has a set of Fields described by the format string.

    List recs = TableParser.readTable(is, "3,15,46,54,60d,67d,73d", 50000);
    for (TableParser.Record record : recs) {
      Station s = new Station();
      s.id = "K" + record.get(0);
      s.name = record.get(2) + " " + record.get(3);
      s.lat = (Double) record.get(4) * .01;
      s.lon = (Double) record.get(5) * .01;
      s.elev = (Double) record.get(6);

      stationTableHash.put(s.id, s);
      if (showStations) System.out.println(" station= " + s);
    }

Example Table:
TLX      000001 OKLAHOMA_CITY/Norman             OK US  3532  -9727   370  0 NWS
AMA      000313 AMARILLO/Amarillo                TX US  3523 -10170  1093  0 NWS
HGX      000378 HOUSTON/GALVESTON/Dickinson      TX US  2947  -9507     5  0 NWS
MLB      000302 MELBOURNE/Melbourne              FL US  2810  -8065    11  0 NWS

 format:
 "3,15,54,60d,67d,73d"

 grammer:
  format = {field,}
  field = endPos type
  endPos = ending pos in the line
  type = i=integer, d=double else String
  field[0] goes from 0 to endPos[0]
  field[i] goes from endPos[i-1]+1 to endPos[i]

Author:
caron

Nested Class Summary
static class TableParser.Record
          A set of values for one line.
 
Constructor Summary
TableParser()
           
 
Method Summary
static void main(java.lang.String[] args)
           
static java.util.List<TableParser.Record> readTable(java.io.InputStream ios, java.lang.String format, int maxLines)
          Reads an input stream, containing lines of ascii in fixed width format.
static java.util.List<TableParser.Record> readTable(java.lang.String urlString, java.lang.String format, int maxLines)
          Reads a URL or file in as a table.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TableParser

public TableParser()
Method Detail

readTable

public static java.util.List<TableParser.Record> readTable(java.lang.String urlString,
                                                           java.lang.String format,
                                                           int maxLines)
                                                    throws java.io.IOException,
                                                           java.lang.NumberFormatException
Reads a URL or file in as a table.

Parameters:
urlString - starts with http, read URL contenets, else read file.
format - describe format of each line.
maxLines - maximum number of lines to parse, set to < 0 to read all
Returns:
List of TableParser.Record
Throws:
java.io.IOException - on read error
java.lang.NumberFormatException - on parse number error
See Also:
readTable(InputStream ios, String format, int maxLines)

readTable

public static java.util.List<TableParser.Record> readTable(java.io.InputStream ios,
                                                           java.lang.String format,
                                                           int maxLines)
                                                    throws java.io.IOException,
                                                           java.lang.NumberFormatException
Reads an input stream, containing lines of ascii in fixed width format. Breaks each line into a set of Fields (space or comma delimited) which may be String, integer or double.

Parameters:
ios - the input stream
format - describe format of each line.
maxLines - maximum number of lines to parse, set to < 0 to read all
Returns:
List of TableParser.Record
Throws:
java.io.IOException - on read error
java.lang.NumberFormatException - on parse number error

main

public static void main(java.lang.String[] args)
                 throws java.io.IOException
Throws:
java.io.IOException