list-file-upload: This addon is used to process a CSV, Excel or text file. To execute a clean processing, the corresponding variable (= Excel cell) must be annotated in the corresponding
domain class (Excel → Java) with the fileUpload annotation. The FileUpload annotation must be passed to a FileUploadProcessor. This serves to carry out a test on the
corresponding, e.g. Excel cell. Further in the code examples.
How to use it
Official releases of this add-on are available at Vaadin Directory. For Maven instructions, download and reviews, go to Vaadin Add-on Directory
How it works
You must annotate variables that are to be set during the file upload with the annotation @FileUpload()
.
Example:
public class DemoObject {
@FileUpload(header = "first-name", converter = FirstNameDemoObjectUploadProcessor.class)
private String firstName;
@FileUpload(header = "last-name", converter = LastNameDemoObjectUploadProcessor.class)
private String lastName;
@FileUpload(header = "email", converter = EmailDemoObjectUploadProcessor.class)
private String email;
[...]
}
File cell processor example:
public class FirstNameDemoObjectUploadProcessor implements FileCellProcessor<DemoObject> {
@Override
public void process(DemoObject data, Cell cell) throws ContentValidationException {
String value = cell.getStringValue();
if (StringUtils.isNotBlank(value)) {
data.setFirstName(value);
} else {
throw new ContentValidationException("Field First-Name is required");
}
}
}
Simple
In the Vaadin UI, you must initialize the SimpleFileUploadProcessor
and specify what should happen in case of a fault-free or incorrect file upload.
The SimpleFileUploadProcessor
must be passed to the upload element (from Vaadin) as succeededListener
.
Example:
SimpleFileUploadProcessor<DemoObject> uploadProcessor = new SimpleFileUploadProcessor<>(DemoObject.class,
(event, items) -> {
gridSimpleItems.addAll(items);
demoSimpleGrid.getDataProvider().refreshAll();
}, (event, errorItems) -> {
gridSimpleErrorItems.addAll(errorItems);
importErrorSimpleGrid.getDataProvider().refreshAll();
});
Upload upload = new Upload("Choose file...", uploadProcessor);
upload.addSucceededListener(uploadProcessor);
rootLayout.addComponent(upload);
Stream
In the Vaadin UI, you must initialize the StreamFileUploadProcessor
and specify what should happen in case of a fault-free or incorrect file upload.
The StreamFileUploadProcessor
must be passed to the upload element (from Vaadin) as succeededListener
.
Example:
StreamFileUploadProcessor<DemoObject> uploadProcessor = new StreamFileUploadProcessor<>(DemoObject.class,
item -> {
gridStreamItems.add(item);
demoStreamGrid.getDataProvider().refreshAll();
}, error -> {
gridStreamErrorItems.add(error);
importErrorStreamGrid.getDataProvider().refreshAll();
}, event -> Notification.show("Upload completed!"));
Upload upload = new Upload("Choose file...", uploadProcessor);
upload.addSucceededListener(uploadProcessor);
rootLayout.addComponent(upload);
Try it with the demo
git clone git@github.com:loefflefarn/list-file-upload.git
mvn clean install
cd list-file-upload-demo
mvn jetty:run
To see the demo, navigate to http://localhost:8080/
Contributing
Issues for this add-on are tracked here. All bug reports and feature requests are welcome.