KickJava   Java API By Example, From Geeks To Geeks.

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


1 package prefuse.data.io;
2
3 import java.io.BufferedOutputStream JavaDoc;
4 import java.io.OutputStream JavaDoc;
5 import java.io.PrintStream JavaDoc;
6
7 import prefuse.data.Table;
8 import prefuse.util.collections.IntIterator;
9
10 /**
11  * TableWriter that writes out a delimited text table, using a designated
12  * character string to demarcate data columns. By default, a header row
13  * containing the column names is included in the output.
14  *
15  * @author <a HREF="http://jheer.org">jeffrey heer</a>
16  */

17 public class DelimitedTextTableWriter extends AbstractTableWriter {
18
19     private String JavaDoc m_delim;
20     private boolean m_printHeader;
21     
22     /**
23      * Create a new DelimitedTextTableWriter that writes tab-delimited
24      * text files.
25      */

26     public DelimitedTextTableWriter() {
27         this("\t");
28     }
29     
30     /**
31      * Create a new DelimitedTextTableWriter.
32      * @param delimiter the delimiter string to use between columns
33      */

34     public DelimitedTextTableWriter(String JavaDoc delimiter) {
35         this(delimiter, true);
36     }
37     
38     /**
39      * Create a new DelimitedTextTableWriter.
40      * @param delimiter the delimiter string to use between columns
41      * @param printHeader indicates if a header row should be printed
42      */

43     public DelimitedTextTableWriter(String JavaDoc delimiter, boolean printHeader) {
44         m_delim = delimiter;
45         m_printHeader = printHeader;
46     }
47
48     // ------------------------------------------------------------------------
49

50     /**
51      * Get the delimiter used to separate data fields.
52      * @return the delimiter string
53      */

54     public String JavaDoc getDelimiter() {
55         return m_delim;
56     }
57
58     /**
59      * Set the delimiter used to separate data fields.
60      * @param delimiter the delimiter string
61      */

62     public void setDelimeter(String JavaDoc delimiter) {
63         m_delim = delimiter;
64     }
65
66     /**
67      * Indicates if this writer will write a header row with the column names.
68      * @return true if a header row will be printed, false otherwise
69      */

70     public boolean isPrintHeader() {
71         return m_printHeader;
72     }
73
74     /**
75      * Sets if this writer will write a header row with the column names.
76      * @param printHeader true to print a header row, false otherwise
77      */

78     public void setPrintHeader(boolean printHeader) {
79         m_printHeader = printHeader;
80     }
81     
82     // ------------------------------------------------------------------------
83

84     /**
85      * @see prefuse.data.io.TableWriter#writeTable(prefuse.data.Table, java.io.OutputStream)
86      */

87     public void writeTable(Table table, OutputStream JavaDoc os) throws DataIOException {
88         try {
89             // get print stream
90
PrintStream JavaDoc out = new PrintStream JavaDoc(new BufferedOutputStream JavaDoc(os));
91             
92             // write out header row
93
if ( m_printHeader ) {
94                 for ( int i=0; i<table.getColumnCount(); ++i ) {
95                     if ( i>0 ) out.print(m_delim);
96                     out.print(table.getColumnName(i));
97                 }
98                 out.println();
99             }
100             
101             // write out data
102
for ( IntIterator rows = table.rows(); rows.hasNext(); ) {
103                 int row = rows.nextInt();
104                 for ( int i=0; i<table.getColumnCount(); ++i ) {
105                     if ( i>0 ) out.print(m_delim);
106                     out.print(table.getString(row, table.getColumnName(i)));
107                 }
108                 out.println();
109             }
110             
111             // finish up
112
out.flush();
113         } catch ( Exception JavaDoc e ) {
114             throw new DataIOException(e);
115         }
116     }
117
118 } // end of class DelimitedTextTableWriter
119
Popular Tags