/*
* Created on Aug 15, 2005
*/
package org.openedit.entermedia.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
public class ImportFile
{
protected List fieldRows;
protected Header fieldHeader;
protected Parser fieldParser;
public ImportFile()
{
}
public ImportFile(char delim)
{
if( delim == '\t')
{
fieldParser = new TabParser();
}
else
{
fieldParser = new CSVReader();
}
}
public void load(File inFile) throws Exception
{
BufferedReader reader = new BufferedReader(new FileReader(inFile));
load( reader);
}
public void read(Reader inFile) throws Exception
{
BufferedReader reader = new BufferedReader(inFile);
load( reader);
}
public void load(BufferedReader reader) throws Exception
{
//read in tabs or whatever into header object.
//foreach row add a row object
getParser().setBufferedReader(reader);
String[] cells = getParser().readNext();
setHeader(new Header());
getHeader().setHeaders(cells);
// while( line != null)
// {
// if( line.startsWith("%Fieldnames"))
// {
// String row = reader.readLine(); //header
// List cells = getParser().parse(row);
// setHeader(new Header());
// getHeader().setHeaders((String[]) cells.toArray(new String[cells.size()]));
// }
// else if( line.startsWith("%Data"))
// {
// break;
// }
// line = reader.readLine();
// }
}
public List getAllRows() throws IOException
{
List all = new ArrayList();
Row row = getNextRow();
while (row != null)
{
all.add(row);
row = getNextRow();
}
return all;
}
public Row getNextRow() throws IOException
{
String[] cells = getParser().readNext();
if ( cells == null || cells.length == 0)
{
close();
return null;
}
//line = line.replace('\u001e',','); //get rid of junk chars
/*
line = line.replace('\u001e',' '); //get rid of junk chars
line = line.replace('\u0005',' '); //get rid of junk chars
line = line.replace('\u0010',' '); //get rid of junk chars
line = line.replace('\u001f',' '); //get rid of junk chars
line = line.replace('\u000f',' '); //get rid of junk chars
*/
Row row = new Row();
row.setHeader(getHeader());
//row.setData((String[])cells.toArray(new String[cells.size()]));
row.setData( cells );
return row;
}
public Header getHeader()
{
return fieldHeader;
}
public void setHeader(Header inHeader)
{
fieldHeader = inHeader;
}
public Parser getParser()
{
if ( fieldParser == null)
{
fieldParser = new TabParser('\t');
}
return fieldParser;
}
public void setParser(Parser inParser)
{
fieldParser = inParser;
}
public void close()
{
getParser().close();
}
}