Skip to content

Commit fbc1e9f

Browse files
committed
feat: add support for dynamic filename
Close #113
1 parent 7ac1962 commit fbc1e9f

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>org.vaadin.addons.flowingcode</groupId>
66
<artifactId>grid-exporter-addon</artifactId>
7-
<version>2.4.1-SNAPSHOT</version>
7+
<version>2.5.0-SNAPSHOT</version>
88
<name>Grid Exporter Add-on</name>
99
<description>Grid Exporter Add-on for Vaadin Flow</description>
1010

src/main/java/com/flowingcode/vaadin/addons/gridexporter/GridExporter.java

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public class GridExporter<T> implements Serializable {
114114

115115
String title = "Grid Export";
116116

117-
String fileName = "export";
117+
private SerializableSupplier<String> fileNameSupplier = () -> "export";
118118

119119
int sheetNumber = 0;
120120

@@ -298,7 +298,7 @@ public GridExporterStreamResource getDocxStreamResource() {
298298
}
299299

300300
public GridExporterStreamResource getDocxStreamResource(String template) {
301-
return new GridExporterStreamResource(fileName + ".docx",
301+
return new GridExporterStreamResource(getFileName("docx"),
302302
makeConcurrentWriter(new DocxStreamResourceWriter<>(this, template)));
303303
}
304304

@@ -307,20 +307,20 @@ public GridExporterStreamResource getPdfStreamResource() {
307307
}
308308

309309
public GridExporterStreamResource getPdfStreamResource(String template) {
310-
return new GridExporterStreamResource(fileName + ".pdf",
310+
return new GridExporterStreamResource(getFileName("pdf"),
311311
makeConcurrentWriter(new PdfStreamResourceWriter<>(this, template)));
312312
}
313313

314314
public StreamResource getCsvStreamResource() {
315-
return new StreamResource(fileName + ".csv", new CsvStreamResourceWriter<>(this));
315+
return new StreamResource(getFileName("csv"), new CsvStreamResourceWriter<>(this));
316316
}
317317

318318
public GridExporterStreamResource getExcelStreamResource() {
319319
return getExcelStreamResource(null);
320320
}
321321

322322
public GridExporterStreamResource getExcelStreamResource(String template) {
323-
return new GridExporterStreamResource(fileName + ".xlsx",
323+
return new GridExporterStreamResource(getFileName("xlsx"),
324324
makeConcurrentWriter(new ExcelStreamResourceWriter<>(this, template)));
325325
}
326326

@@ -490,7 +490,11 @@ public void setTitle(String title) {
490490
}
491491

492492
public String getFileName() {
493-
return fileName;
493+
return fileNameSupplier.get();
494+
}
495+
496+
private String getFileName(String extension) {
497+
return Objects.requireNonNull(getFileName()) + "." + extension;
494498
}
495499

496500
/**
@@ -499,7 +503,17 @@ public String getFileName() {
499503
* @param fileName
500504
*/
501505
public void setFileName(String fileName) {
502-
this.fileName = fileName;
506+
fileNameSupplier = () -> fileName;
507+
}
508+
509+
/**
510+
* Sets a dynamic filename for the exported file.
511+
*
512+
* @param fileNameSupplier a supplier that returns the name of the exported file, without
513+
* extension.
514+
*/
515+
public void setFileName(SerializableSupplier<String> fileNameSupplier) {
516+
this.fileNameSupplier = fileNameSupplier;
503517
}
504518

505519
public boolean isAutoAttachExportButtons() {

0 commit comments

Comments
 (0)