KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > prefuse > data > io > DelimitedTextTableReader


1 package prefuse.data.io;
2
3 import java.io.BufferedReader JavaDoc;
4 import java.io.IOException JavaDoc;
5 import java.io.InputStream JavaDoc;
6 import java.io.InputStreamReader JavaDoc;
7
8 import prefuse.data.parser.DataParseException;
9 import prefuse.data.parser.ParserFactory;
10
11 /**
12  * TableReader for delimited text files, such as tab-delimited or
13  * pipe-delimited text files. Such files typically list one row of table
14  * data per line of the file, using a designated character such as a tab
15  * (\t) or pipe (|) to demarcate different data columns. This class
16  * allows you to select any regular expression as the column
17  * delimiter.
18  *
19  * @author <a HREF="http://jheer.org">jeffrey heer</a>
20  */

21 public class DelimitedTextTableReader extends AbstractTextTableReader {
22
23     private String JavaDoc m_delim;
24    
25     /**
26      * Create a new DelimitedTextTableReader for reading tab-delimited files
27      * using a default parser factory.
28      */

29     public DelimitedTextTableReader() {
30         this("\t");
31     }
32     
33     /**
34      * Create a new DelimitedTextTableReader for reading tab-delimited files.
35      * @param parserFactory the ParserFactory to use for parsing text strings
36      * into table values.
37      */

38     public DelimitedTextTableReader(ParserFactory parserFactory) {
39         this("\t", parserFactory);
40     }
41     
42     /**
43      * Create a new DelimitedTextTableReader using a default parser factory.
44      * @param delimiterRegex a regular expression string indicating the
45      * delimiter to use to separate column values
46      */

47     public DelimitedTextTableReader(String JavaDoc delimiterRegex) {
48         m_delim = delimiterRegex;
49     }
50     
51     /**
52      * Create a new DelimitedTextTableReader.
53      * @param delimiterRegex a regular expression string indicating the
54      * delimiter to use to separate column values
55      * @param pf the ParserFactory to use for parsing text strings
56      * into table values.
57      */

58     public DelimitedTextTableReader(String JavaDoc delimiterRegex, ParserFactory pf) {
59         super(pf);
60         m_delim = delimiterRegex;
61     }
62     
63     // ------------------------------------------------------------------------
64

65     /**
66      * @see prefuse.data.io.AbstractTextTableReader#read(java.io.InputStream, prefuse.data.io.TableReadListener)
67      */

68     protected void read(InputStream JavaDoc is, TableReadListener trl)
69             throws IOException JavaDoc, DataParseException
70     {
71         String JavaDoc line;
72         int lineno = 0;
73         
74         BufferedReader JavaDoc br = new BufferedReader JavaDoc(new InputStreamReader JavaDoc(is));
75         while ( (line=br.readLine()) != null ) {
76             // increment the line number
77
++lineno;
78             
79             // split on tab character
80
String JavaDoc[] cols = line.split(m_delim);
81             for ( int i=0; i<cols.length; ++i ) {
82                 trl.readValue(lineno, i+1, cols[i]);
83             }
84         }
85     }
86
87 } // end of class DelimitedTextTableReader
88
Popular Tags