KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > archive > cumulus > ImportFile


1 /*
2  * Created on Aug 15, 2005
3  */

4 package com.openedit.archive.cumulus;
5
6 import java.io.BufferedReader JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.io.Reader JavaDoc;
9 import java.util.List JavaDoc;
10
11 import com.openedit.util.FileUtils;
12
13 public class ImportFile
14 {
15     protected List JavaDoc fieldRows;
16     protected Header fieldHeader;
17     protected BufferedReader JavaDoc fieldReader;
18     protected Parser fieldParser;
19     
20     public ImportFile()
21     {
22     }
23     public void load(Reader JavaDoc inFile) throws Exception JavaDoc
24     {
25         //read in tabs or whatever into header object.
26
//foreach row add a row object
27
BufferedReader JavaDoc reader = new BufferedReader JavaDoc(inFile);
28         setReader(reader);
29         
30         String JavaDoc line = reader.readLine();
31         while( line != null)
32         {
33             if( line.startsWith("%Fieldnames"))
34             {
35                 String JavaDoc row = reader.readLine(); //header
36
List JavaDoc cells = getParser().parse(row);
37                 setHeader(new Header());
38                 getHeader().setHeaders((String JavaDoc[])cells.toArray(new String JavaDoc[cells.size()]));
39             }
40             else if( line.startsWith("%Data"))
41             {
42                 break;
43             }
44             line = reader.readLine();
45         }
46
47
48     }
49     
50     public Row getNextRow() throws IOException JavaDoc
51     {
52         String JavaDoc line = getReader().readLine();
53         if ( line == null)
54         {
55             FileUtils.safeClose(getReader());
56             return null;
57         }
58         //line = line.replace('\u001e',','); //get rid of junk chars
59
/*
60         line = line.replace('',' '); //get rid of junk chars
61         line = line.replace('',' '); //get rid of junk chars
62         line = line.replace('',' '); //get rid of junk chars
63         line = line.replace('',' '); //get rid of junk chars
64         line = line.replace('',' '); //get rid of junk chars
65         */

66         line = line.replaceAll("\u001e"," , ");
67
68         //Only keep valid ASCII text
69
StringBuffer JavaDoc escapedSource = new StringBuffer JavaDoc(line.length());
70         //String zeros = "000000";
71
for ( int n = 0; n < line.length(); n++ )
72         {
73             char c = line.charAt( n );
74             if ( c > 31 && c < 127 )
75             {
76                 escapedSource.append( c );
77             }
78             if ( c == '\t')
79             {
80                 escapedSource.append( c );
81             }
82             else
83             {
84                 //skip ISO just 32 - 126
85
}
86         }
87         line = escapedSource.toString();
88         
89         String JavaDoc[] cells = getParser().parseRegEx(line);
90         Row row = new Row();
91         row.setHeader(getHeader());
92         //row.setData((String[])cells.toArray(new String[cells.size()]));
93
row.setData( cells );
94         return row;
95     }
96
97     public Header getHeader()
98     {
99         return fieldHeader;
100     }
101
102     public void setHeader(Header inHeader)
103     {
104         fieldHeader = inHeader;
105     }
106     public BufferedReader JavaDoc getReader()
107     {
108         return fieldReader;
109     }
110     public void setReader(BufferedReader JavaDoc inReader)
111     {
112         fieldReader = inReader;
113     }
114     public Parser getParser()
115     {
116         if ( fieldParser == null)
117         {
118             fieldParser = new Parser('\t');
119         }
120         return fieldParser;
121     }
122     public void setParser(Parser inParser)
123     {
124         fieldParser = inParser;
125     }
126     public void close()
127     {
128         FileUtils.safeClose( getReader() );
129     }
130     
131 }
132
Popular Tags