Skip to content

Commit 8bd9473

Browse files
committed
feat: write ByteArrayOutputStream directly to file and update the poi library
1 parent c795633 commit 8bd9473

File tree

4 files changed

+93
-10
lines changed

4 files changed

+93
-10
lines changed

polygenesis-exporters/polygenesis-exporter-file/src/main/java/io/polygenesis/core/ActiveFileExporter.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import io.polygenesis.commons.assertion.Assertion;
2424
import io.polygenesis.commons.path.PathService;
2525
import java.io.ByteArrayOutputStream;
26+
import java.io.FileOutputStream;
2627
import java.io.IOException;
27-
import java.nio.charset.Charset;
28-
import java.nio.file.Files;
28+
import java.io.OutputStream;
2929
import java.nio.file.Paths;
3030

3131
/**
@@ -48,13 +48,14 @@ public void export(ByteArrayOutputStream byteArrayOutputStream, ExportInfo expor
4848

4949
PathService.ensurePath(exportInfo.getGenerationPath());
5050

51-
String formattedContent =
52-
format(byteArrayOutputStream.toString(Charset.defaultCharset()), exportInfo.getFileName());
53-
5451
try {
55-
Files.write(
56-
Paths.get(exportInfo.getGenerationPath().toString(), exportInfo.getFileName()),
57-
formattedContent.getBytes());
52+
OutputStream outputStream =
53+
new FileOutputStream(
54+
Paths.get(exportInfo.getGenerationPath().toString(), exportInfo.getFileName())
55+
.toString());
56+
byteArrayOutputStream.writeTo(outputStream);
57+
outputStream.flush();
58+
outputStream.close();
5859
} catch (IOException e) {
5960
throw new IllegalStateException(e.getMessage(), e);
6061
}

polygenesis-generators/polygenesis-generator-spreadsheet/src/main/java/io/polygenesis/generators/spreadsheet/SpreadsheetMetamodelGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
*/
3737
public class SpreadsheetMetamodelGenerator extends AbstractMetamodelGenerator {
3838

39-
private static final String SPREADSHEET_POSTFIX = "xls";
39+
private static final String SPREADSHEET_POSTFIX = "xlsx";
4040

4141
// ===============================================================================================
4242
// DEPENDENCIES
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*-
2+
* ==========================LICENSE_START=================================
3+
* PolyGenesis Platform
4+
* ========================================================================
5+
* Copyright (C) 2015 - 2020 Christos Tsakostas, OREGOR LTD
6+
* ========================================================================
7+
* Licensed under the Apache License, Version 2.0 (the "License");
8+
* you may not use this file except in compliance with the License.
9+
* You may obtain a copy of the License at
10+
*
11+
* http://www.apache.org/licenses/LICENSE-2.0
12+
*
13+
* Unless required by applicable law or agreed to in writing, software
14+
* distributed under the License is distributed on an "AS IS" BASIS,
15+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
* See the License for the specific language governing permissions and
17+
* limitations under the License.
18+
* ===========================LICENSE_END==================================
19+
*/
20+
21+
package io.polygenesis.generators.spreadsheet;
22+
23+
import io.polygenesis.commons.valueobjects.Name;
24+
import io.polygenesis.commons.valueobjects.ObjectName;
25+
import io.polygenesis.core.MetamodelRepository;
26+
import io.polygenesis.metamodels.spreadsheet.Cell;
27+
import io.polygenesis.metamodels.spreadsheet.ColumnIndex;
28+
import io.polygenesis.metamodels.spreadsheet.RowIndex;
29+
import io.polygenesis.metamodels.spreadsheet.Sheet;
30+
import io.polygenesis.metamodels.spreadsheet.Spreadsheet;
31+
import io.polygenesis.metamodels.spreadsheet.SpreadsheetMetamodelRepository;
32+
import io.polygenesis.metamodels.spreadsheet.Value;
33+
import java.nio.file.Path;
34+
import java.nio.file.Paths;
35+
import java.util.LinkedHashSet;
36+
import java.util.Set;
37+
import java.util.stream.IntStream;
38+
import org.junit.Test;
39+
40+
/**
41+
* The type Spreadsheet generator integration test.
42+
*
43+
* @author Christos Tsakostas
44+
*/
45+
public class SpreadsheetGeneratorIntegrationTest {
46+
47+
/** Should generate spreadsheet. */
48+
@Test
49+
public void shouldGenerateSpreadsheet() {
50+
final Path exportPath = Paths.get(System.getProperty("user.dir"), "target");
51+
52+
// SPREADSHEET
53+
Set<Spreadsheet> spreadsheets = new LinkedHashSet<>();
54+
55+
Set<Sheet> sheets = new LinkedHashSet<>();
56+
57+
Set<Cell> cells = new LinkedHashSet<>();
58+
IntStream.range(0, 5)
59+
.forEach(
60+
rowIndex -> {
61+
cells.add(new Cell(new RowIndex(rowIndex), new ColumnIndex(0), new Value(rowIndex)));
62+
});
63+
64+
Sheet sheet = new Sheet(new Name("no alias"), cells);
65+
66+
sheets.add(sheet);
67+
68+
Spreadsheet spreadsheet = new Spreadsheet(new ObjectName("redirects"), sheets);
69+
spreadsheets.add(spreadsheet);
70+
71+
SpreadsheetMetamodelRepository spreadsheetMetamodelRepository =
72+
new SpreadsheetMetamodelRepository(spreadsheets);
73+
74+
Set<MetamodelRepository<?>> modelRepositories = new LinkedHashSet<>();
75+
modelRepositories.add(spreadsheetMetamodelRepository);
76+
77+
SpreadsheetMetamodelGenerator spreadsheetMetamodelGenerator =
78+
SpreadsheetMetamodelGeneratorFactory.newInstance(exportPath);
79+
80+
spreadsheetMetamodelGenerator.generate(modelRepositories);
81+
}
82+
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
<commons-lang3.version>3.5</commons-lang3.version>
113113
<commons-io-version>2.4</commons-io-version>
114114
<commons-validator.version>1.5.1</commons-validator.version>
115-
<apache-poi.version>4.1.0</apache-poi.version>
115+
<apache-poi.version>4.1.2</apache-poi.version>
116116

117117
<!--GUAVA-->
118118
<guava.version>26.0-jre</guava.version>

0 commit comments

Comments
 (0)