01: package org.apache.turbine.util.parser;
02:
03: /*
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "License"); you may not use this file except in compliance
10: * with the License. You may obtain a copy of the License at
11: *
12: * http://www.apache.org/licenses/LICENSE-2.0
13: *
14: * Unless required by applicable law or agreed to in writing,
15: * software distributed under the License is distributed on an
16: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17: * KIND, either express or implied. See the License for the
18: * specific language governing permissions and limitations
19: * under the License.
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: * Create a new TSVParser instance. Requires a Reader to read the
53: * tab-separated values from. The column headers must be set
54: * independently either explicitly, or by reading the first line
55: * of the TSV values.
56: *
57: * @param in the input reader.
58: */
59: public TSVParser(Reader in) {
60: super (in, null, null);
61: }
62:
63: /**
64: * Create a new TSVParser instance. Requires a Reader to read the
65: * tab-separated values from, and a list of column names.
66: *
67: * @param in the input reader.
68: * @param columnNames a list of column names.
69: */
70: public TSVParser(Reader in, List columnNames) {
71: super (in, columnNames, null);
72: }
73:
74: /**
75: * Create a new TSVParser instance. Requires a Reader to read the
76: * tab-separated values from, a list of column names and a
77: * character encoding.
78: *
79: * @param in the input reader.
80: * @param columnNames a list of column names.
81: * @param characterEncoding the character encoding of the input.
82: */
83: public TSVParser(Reader in, List columnNames,
84: String characterEncoding) {
85: super (in, columnNames, characterEncoding);
86: }
87:
88: /**
89: * Initialize the StreamTokenizer instance used to read the lines
90: * from the input reader.
91: * It is now only needed to set the fieldSeparator
92: */
93: protected void initTokenizer(StreamTokenizer tokenizer) {
94: super .initTokenizer(tokenizer);
95: // set the field separator to tabs.
96: super .setFieldSeparator('\t');
97: }
98: }
|