ucar.nc2.util
Class TableParser

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

public class TableParser
extends 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, 0 based, exclusive, ie [start, end) type = i=integer, d=double, L=long else String field[0] goes from [0, endPos[0]) field[i] goes from [endPos[i-1] to endPos[i])

Author:
caron

Nested Class Summary
 class TableParser.DerivedField
           
 class TableParser.Field
          Describes one field in the record.
static class TableParser.Record
          A set of values for one line.
static interface TableParser.Transform
           
 
Constructor Summary
TableParser(String format)
           
 
Method Summary
 TableParser.DerivedField addDerivedField(TableParser.Field from, TableParser.Transform transform, Class type)
           
 TableParser.Field getField(int fldno)
           
 int getNumberOfFields()
           
static void main(String[] args)
           
static void main2(String[] args)
           
 List<TableParser.Record> readAllRecords(InputStream ios, int maxLines)
           
 TableParser.Record readRecord(String line)
           
static List<TableParser.Record> readTable(InputStream ios, String format, int maxLines)
          Reads an input stream, containing lines of ascii in fixed width format.
static List<TableParser.Record> readTable(String urlString, String format, int maxLines)
          Reads a URL or file in as a table.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TableParser

public TableParser(String format)
            throws IOException,
                   NumberFormatException
Throws:
IOException
NumberFormatException
Method Detail

readTable

public static List<TableParser.Record> readTable(String urlString,
                                                 String format,
                                                 int maxLines)
                                          throws IOException,
                                                 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:
IOException - on read error
NumberFormatException - on parse number error
See Also:
readTable(InputStream ios, String format, int maxLines)

readTable

public static List<TableParser.Record> readTable(InputStream ios,
                                                 String format,
                                                 int maxLines)
                                          throws IOException,
                                                 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:
IOException - on read error
NumberFormatException - on parse number error

getField

public TableParser.Field getField(int fldno)

getNumberOfFields

public int getNumberOfFields()

readAllRecords

public List<TableParser.Record> readAllRecords(InputStream ios,
                                               int maxLines)
                                        throws IOException,
                                               NumberFormatException
Throws:
IOException
NumberFormatException

readRecord

public TableParser.Record readRecord(String line)
                              throws IOException,
                                     NumberFormatException
Throws:
IOException
NumberFormatException

addDerivedField

public TableParser.DerivedField addDerivedField(TableParser.Field from,
                                                TableParser.Transform transform,
                                                Class type)

main2

public static void main2(String[] args)
                  throws IOException
Throws:
IOException

main

public static void main(String[] args)
                 throws IOException
Throws:
IOException


Copyright © 1999-2011 UCAR/Unidata. All Rights Reserved.