- Type Parameters:
T
-
- All Implemented Interfaces:
CsvCallback<T>
This handles transaction creation (if no current transaction existed) and transaction commit or rollback on error.
For customising the processing you can extend this object and override the appropriate methods.
-
Field Summary
Modifier and TypeFieldDescriptionprotected boolean
Flag set when we created the transaction.protected long
The execution time of the process.protected final int
Used to log a message to indicate progress through large files.protected final int
The batch size used when saving the beans.protected Database
The EbeanServer used to save the beans.protected long
The time the process started.protected Transaction
The transaction to use (if not using CsvCallback). -
Constructor Summary
ConstructorDescriptionConstruct with a default batch size of 30 and logging info messages every 1000 rows.DefaultCsvCallback
(int persistBatchSize, int logInfoFrequency) Construct with explicit batch size and logging info frequency. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Create a transaction if required.protected void
If we created a transaction commit it.void
end
(int row) Commit the transaction if one was created.void
endWithError
(int row, Exception e) Rollback the transaction if one was created.protected void
Create a transaction if one is not already active and set its batch mode and batch size.void
processBean
(int row, String[] line, T bean) Will save the bean.boolean
processLine
(int row, String[] line) Validate that the content is valid and return false if the row should be ignored.void
readHeader
(String[] line) Override to read the heading line.protected void
Rollback the transaction if we where not successful in processing all the rows.
-
Field Details
-
transaction
The transaction to use (if not using CsvCallback). -
createdTransaction
protected boolean createdTransactionFlag set when we created the transaction. -
server
The EbeanServer used to save the beans. -
logInfoFrequency
protected final int logInfoFrequencyUsed to log a message to indicate progress through large files. -
persistBatchSize
protected final int persistBatchSizeThe batch size used when saving the beans. -
startTime
protected long startTimeThe time the process started. -
exeTime
protected long exeTimeThe execution time of the process.
-
-
Constructor Details
-
DefaultCsvCallback
public DefaultCsvCallback()Construct with a default batch size of 30 and logging info messages every 1000 rows. -
DefaultCsvCallback
public DefaultCsvCallback(int persistBatchSize, int logInfoFrequency) Construct with explicit batch size and logging info frequency.
-
-
Method Details
-
begin
Create a transaction if required.- Specified by:
begin
in interfaceCsvCallback<T>
-
readHeader
Override to read the heading line.This is only called if
CsvReader.setHasHeader(boolean, boolean)
is set to true.By default this does nothing (effectively ignoring the heading).
- Specified by:
readHeader
in interfaceCsvCallback<T>
- Parameters:
line
- the header line content.
-
processLine
Validate that the content is valid and return false if the row should be ignored.By default this just returns true.
Override this to add custom validation logic returning false if you want the row to be ignored. For example, if all the content is empty return false to ignore the row (rather than having the processing fail with some error).
- Specified by:
processLine
in interfaceCsvCallback<T>
-
processBean
Will save the bean.Override this method to customise the bean (set additional properties etc) or to control the saving of other related beans (when you can't/don't want to use Cascade.PERSIST etc).
- Specified by:
processBean
in interfaceCsvCallback<T>
- Parameters:
row
- the index of the content being processedline
- the content that has been used to load the beanbean
- the entity bean after it has been loaded from the csv content
-
end
public void end(int row) Commit the transaction if one was created.- Specified by:
end
in interfaceCsvCallback<T>
-
endWithError
Rollback the transaction if one was created.- Specified by:
endWithError
in interfaceCsvCallback<T>
- Parameters:
row
- the row that the error has occurred one
- the error that occurred
-
initTransactionIfRequired
protected void initTransactionIfRequired()Create a transaction if one is not already active and set its batch mode and batch size. -
commitTransactionIfCreated
protected void commitTransactionIfCreated()If we created a transaction commit it. We have successfully processed all the rows. -
rollbackTransactionIfCreated
Rollback the transaction if we where not successful in processing all the rows.
-