com.avaje.ebean.text.csv
Interface CsvReader<T>

Type Parameters:
T - the entity bean type

public interface CsvReader<T>

Reads CSV data turning it into object graphs that you can be saved (inserted) or processed yourself.

This first example doesn't use a CsvCallback and this means it will automatically create a transaction, save the customers and commit the transaction when successful.

 try {
     File f = new File("src/test/resources/test1.csv");
 
     FileReader reader = new FileReader(f);
 
     CsvReader<Customer> csvReader = Ebean.createCsvReader(Customer.class);
 
     csvReader.setPersistBatchSize(20);
 
     csvReader.addProperty("status");
     // ignore the next property
     csvReader.addIgnore();
     csvReader.addProperty("name");
     csvReader.addDateTime("anniversary", "dd-MMM-yyyy");
     csvReader.addProperty("billingAddress.line1");
     csvReader.addProperty("billingAddress.city");
     csvReader.addReference("billingAddress.country.code");
 
     csvReader.process(reader);
 
 } catch (Exception e) {
     throw new RuntimeException(e);
 }
 

Author:
rbygrave

Method Summary
 void addDateTime(String propertyName, String dateTimeFormat)
          Add a property with a custom Date/Time/Timestamp format using the default Locale.
 void addDateTime(String propertyName, String dateTimeFormat, Locale locale)
          Add a property with a custom Date/Time/Timestamp format.
 void addIgnore()
          Ignore the next column of data.
 void addProperty(String propertyName)
          Define the property which will be loaded from the next column of data.
 void addProperty(String propertyName, StringParser parser)
          Define the next property and use a custom StringParser to convert the string content into the appropriate type for the property.
 void addReference(String propertyName)
          Define the next property to be a reference.
 void process(Reader reader)
          Automatically create a transaction if required to process all the CSV content from the reader.
 void process(Reader reader, CsvCallback<T> callback)
          Process the CSV content passing the bean to the CsvCallback after each row.
 void setHasHeader(boolean hasHeader)
          Set to true if there is a header row that should be ignored.
 void setLogInfoFrequency(int logInfoFrequency)
          Set the frequency with which a INFO message will be logged showing the progress of the processing.
 void setPersistBatchSize(int persistBatchSize)
          Set the batch size for using JDBC statement batching.
 

Method Detail

setPersistBatchSize

void setPersistBatchSize(int persistBatchSize)
Set the batch size for using JDBC statement batching.

By default this is set to 20 and setting this to 1 will disable the use of JDBC statement batching.


setHasHeader

void setHasHeader(boolean hasHeader)
Set to true if there is a header row that should be ignored.


setLogInfoFrequency

void setLogInfoFrequency(int logInfoFrequency)
Set the frequency with which a INFO message will be logged showing the progress of the processing. You might set this to 1000 or 10000 etc.

If this is not set then no INFO messages will be logged.


addIgnore

void addIgnore()
Ignore the next column of data.


addProperty

void addProperty(String propertyName)
Define the property which will be loaded from the next column of data.

This takes into account the data type of the property and handles the String to object conversion automatically.


addReference

void addReference(String propertyName)
Define the next property to be a reference. This effectively means it represents a foreign key. For example, with an Address object a Country Code could be a reference.


addProperty

void addProperty(String propertyName,
                 StringParser parser)
Define the next property and use a custom StringParser to convert the string content into the appropriate type for the property.


addDateTime

void addDateTime(String propertyName,
                 String dateTimeFormat)
Add a property with a custom Date/Time/Timestamp format using the default Locale. This will convert the string into the appropriate java type for the given property (Date, Calendar, SQL Date, Time, Timestamp, JODA etc).


addDateTime

void addDateTime(String propertyName,
                 String dateTimeFormat,
                 Locale locale)
Add a property with a custom Date/Time/Timestamp format. This will convert the string into the appropriate java type for the given property (Date, Calendar, SQL Date, Time, Timestamp, JODA etc).


process

void process(Reader reader)
             throws Exception
Automatically create a transaction if required to process all the CSV content from the reader.

This will check for a current transaction. If there is no current transaction then one is started and will commit (or rollback) at the end of processing. This will also set the persistBatchSize on the transaction.

Throws:
Exception

process

void process(Reader reader,
             CsvCallback<T> callback)
             throws Exception
Process the CSV content passing the bean to the CsvCallback after each row.

This provides you with the ability to modify and process the bean.

When using a CsvCallback the reader WILL NOT create a transaction or save the bean(s) for you. If you want to insert the processed beans you must create your own transaction and save the bean(s) yourself.

Throws:
Exception


Copyright © 2010. All Rights Reserved.