1 package org.apache.turbine.util.parser;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.Reader;
23 import java.io.StreamTokenizer;
24 import java.util.List;
25
26 /***
27 * TSVParser is used to parse a stream with tab-separated values and
28 * generate ParameterParser objects which can be used to
29 * extract the values in the desired type.
30 *
31 * <p>The class extends the abstract class DataStreamParser and implements
32 * initTokenizer with suitable values for TSV files to provide this
33 * functionality.
34 *
35 * <p>The class (indirectly through DataStreamParser) implements the
36 * java.util.Iterator interface for convenience.
37 * This allows simple use in a Velocity template for example:
38 *
39 * <pre>
40 * #foreach ($row in $tsvfile)
41 * Name: $row.Name
42 * Description: $row.Description
43 * #end
44 * </pre>
45 *
46 * @author <a href="mailto:sean@informage.net">Sean Legassick</a>
47 * @author <a href="mailto:martin@mvdb.net">Martin van den Bemt</a>
48 * @version $Id: TSVParser.java 534527 2007-05-02 16:10:59Z tv $
49 */
50 public class TSVParser extends DataStreamParser
51 {
52 /***
53 * Create a new TSVParser instance. Requires a Reader to read the
54 * tab-separated values from. The column headers must be set
55 * independently either explicitly, or by reading the first line
56 * of the TSV values.
57 *
58 * @param in the input reader.
59 */
60 public TSVParser(Reader in)
61 {
62 super(in, null, null);
63 }
64
65 /***
66 * Create a new TSVParser instance. Requires a Reader to read the
67 * tab-separated values from, and a list of column names.
68 *
69 * @param in the input reader.
70 * @param columnNames a list of column names.
71 */
72 public TSVParser(Reader in, List columnNames)
73 {
74 super(in, columnNames, null);
75 }
76
77 /***
78 * Create a new TSVParser instance. Requires a Reader to read the
79 * tab-separated values from, a list of column names and a
80 * character encoding.
81 *
82 * @param in the input reader.
83 * @param columnNames a list of column names.
84 * @param characterEncoding the character encoding of the input.
85 */
86 public TSVParser(Reader in, List columnNames, String characterEncoding)
87 {
88 super(in, columnNames, characterEncoding);
89 }
90
91 /***
92 * Initialize the StreamTokenizer instance used to read the lines
93 * from the input reader.
94 * It is now only needed to set the fieldSeparator
95 */
96 protected void initTokenizer(StreamTokenizer tokenizer)
97 {
98 super.initTokenizer(tokenizer);
99
100 super.setFieldSeparator('\t');
101 }
102 }