ucar.nc2.util
Class TableParser
java.lang.Object
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
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
TableParser
public TableParser(String format)
throws IOException,
NumberFormatException
- Throws:
IOException
NumberFormatException
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 streamformat
- 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.