visad.data.text
Class TextAdapter

java.lang.Object
  extended by visad.data.text.TextAdapter

public class TextAdapter
extends Object

this is an VisAD file adapter for comma-, tab- and blank-separated ASCII text file data. It will attempt to create a FlatField from the data and descriptions given in the file and/or the constructor. The text files contained delimited data. The delimiter is determined as follows: if the file has a well-known extension (.csv, .tsv, .bsv) then the delimiter is implied by the extension. In all other cases, the delimiter for the data (and for the "column labels") is determined by reading the first line and looking, in order, for a tab, comma, or blank. Which ever one is found first is taken as the delimiter. Two extra pieces of information are needed: the VisAD "MathType" which is specified as a string (e.g., (x,y)->(temperature)) and may either be the first line of the file or passed in through one of the constructors. The second item are the "column labels" which contain the names of each field in the data. The names of all range components specified in the "MathType" must appear. The names of domain components are optional. The values in this string are separated by the delimiter, as defined above. See visad.data.text.README.text for more details.

Author:
Tom Whittaker

Nested Class Summary
static interface TextAdapter.DateParser
          used to allow applications to define their own date parsing
static interface TextAdapter.StreamProcessor
           
 
Constructor Summary
TextAdapter(InputStream inputStream, String delimiter, String map, String params)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(InputStream inputStream, String delimiter, String map, String params, boolean onlyReadOneLine)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(InputStream inputStream, String delimiter, String map, String params, Hashtable properties, boolean onlyReadOneLine)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(InputStream inputStream, String delimiter, String map, String params, Hashtable properties, boolean onlyReadOneLine, String skipPatternString)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(InputStream inputStream, String delimiter, String map, String params, Hashtable properties, boolean onlyReadOneLine, String skipPatternString, TextAdapter.StreamProcessor streamProcessor)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(String filename)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(String filename, String map, String params)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(URL url)
          Create a VisAD FlatField from a remote Text (comma-, tab- or blank-separated values) ASCII file
TextAdapter(URL url, String map, String params)
          Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file
 
Method Summary
static void addDateParser(TextAdapter.DateParser dateParser)
          used to allow applications to define their own date parsing
static double decodeLatLon(String latlon)
          A cut-and-paste from the IDV Misc method Decodes a string representation of a latitude or longitude and returns a double version (in degrees).
 Field getData()
          get the data
static String getDelimiter(String filename)
           
static boolean isComment(String line)
          Is the given text line a comment
static void main(String[] args)
           
static Data processFile(String file)
          Read in the given file and return the processed data
static String readLine(BufferedReader bis)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TextAdapter

public TextAdapter(String filename)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
filename - name of local file.
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(String filename,
                   String map,
                   String params)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
filename - name of local file.
map - the VisAD "MathType" as a string defining the FlatField
params - the list of parameters used to define what columns of the text file correspond to what MathType parameters.
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(URL url)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a remote Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
url - File URL.
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(URL url,
                   String map,
                   String params)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
url - File URL.
map - the VisAD "MathType" as a string defining the FlatField
params - the list of parameters used to define what columns of the text file correspond to what MathType parameters.
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(InputStream inputStream,
                   String delimiter,
                   String map,
                   String params)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
inputStream - The input stream to read from
delimiter - the delimiter
map - the VisAD "MathType" as a string defining the FlatField
params - the list of parameters used to define what columns of the text file correspond to what MathType parameters.
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(InputStream inputStream,
                   String delimiter,
                   String map,
                   String params,
                   boolean onlyReadOneLine)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
inputStream - The input stream to read from
delimiter - the delimiter
map - the VisAD "MathType" as a string defining the FlatField
params - the list of parameters used to define what columns of the text file correspond to what MathType parameters.
onlyReadOneLine - If true then only read one line of data. This is used so client code can read the meta data.
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(InputStream inputStream,
                   String delimiter,
                   String map,
                   String params,
                   Hashtable properties,
                   boolean onlyReadOneLine)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
inputStream - The input stream to read from
delimiter - the delimiter
map - the VisAD "MathType" as a string defining the FlatField
params - the list of parameters used to define what columns of the text file correspond to what MathType parameters.
properties - properties
onlyReadOneLine - If true then only read one line of data. This is used so client code can read the meta data.
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(InputStream inputStream,
                   String delimiter,
                   String map,
                   String params,
                   Hashtable properties,
                   boolean onlyReadOneLine,
                   String skipPatternString)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
inputStream - The input stream to read from
delimiter - the delimiter
map - the VisAD "MathType" as a string defining the FlatField
params - the list of parameters used to define what columns of the text file correspond to what MathType parameters.
properties - properties
onlyReadOneLine - If true then only read one line of data. This is used so client code can read the meta data.
skipPatternString - if non-null then skip any line that matches this pattern
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.

TextAdapter

public TextAdapter(InputStream inputStream,
                   String delimiter,
                   String map,
                   String params,
                   Hashtable properties,
                   boolean onlyReadOneLine,
                   String skipPatternString,
                   TextAdapter.StreamProcessor streamProcessor)
            throws IOException,
                   VisADException
Create a VisAD FlatField from a local Text (comma-, tab- or blank-separated values) ASCII file

Parameters:
inputStream - The input stream to read from
delimiter - the delimiter
map - the VisAD "MathType" as a string defining the FlatField
params - the list of parameters used to define what columns of the text file correspond to what MathType parameters.
properties - properties
onlyReadOneLine - If true then only read one line of data. This is used so client code can read the meta data.
skipPatternString - if non-null then skip any line that matches this pattern
streamProcessor - Optional processor of the Tuple stream for point obs
Throws:
IOException - if there was a problem reading the file.
VisADException - if an unexpected problem occurs.
Method Detail

getDelimiter

public static String getDelimiter(String filename)

isComment

public static boolean isComment(String line)
Is the given text line a comment

Returns:
is it a comment line

readLine

public static String readLine(BufferedReader bis)
                       throws IOException
Throws:
IOException

addDateParser

public static void addDateParser(TextAdapter.DateParser dateParser)
used to allow applications to define their own date parsing


getData

public Field getData()
get the data

Returns:
a Field of the data read from the file

processFile

public static Data processFile(String file)
                        throws Exception
Read in the given file and return the processed data

Parameters:
file - The file to read in
Returns:
the data
Throws:
Exception

main

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

decodeLatLon

public static double decodeLatLon(String latlon)
A cut-and-paste from the IDV Misc method Decodes a string representation of a latitude or longitude and returns a double version (in degrees). Acceptible formats are:
 +/-  ddd:mm, ddd:mm:, ddd:mm:ss, ddd::ss, ddd.fffff ===>   [+/-] ddd.fffff
 +/-  ddd, ddd:, ddd::                               ===>   [+/-] ddd
 +/-  :mm, :mm:, :mm:ss, ::ss, .fffff                ===>   [+/-] .fffff
 +/-  :, ::                                          ===>       0.0
 Any of the above with N,S,E,W appended
 

Parameters:
latlon - string representation of lat or lon
Returns:
the decoded value in degrees