Skip to content

Commit f1c4c70

Browse files
author
Matteo Franci
committed
0.5.4 (2022-11-24)
+ fj-doc-mod-opencsv, added module for handling CSV format [CSV format](#8)
1 parent 54ea102 commit f1c4c70

File tree

20 files changed

+241
-19
lines changed

20 files changed

+241
-19
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ There are five kinds of components (each components README.md contains module st
1919
* [FreeMarker template, (fj-doc-freemarker)](fj-doc-freemarker/README.md) (contains a simple renderer for [HTML](fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlTypeHandler.java) and [HTML FRAGMENT](fj-doc-freemarker/src/main/java/org/fugerit/java/doc/freemarker/html/FreeMarkerHtmlFragmentTypeHandler.java))
2020
* [Apache POI Module (fj-doc-mod-poi)](fj-doc-mod-poi/README.md) ([XLS](fj-doc-mod-poi/src/main/java/org/fugerit/java/doc/mod/poi/XlsPoiTypeHandler.java)/[XLSX](fj-doc-mod-poi/src/main/java/org/fugerit/java/doc/mod/poi/XlsPoiTypeHandler.java))
2121
* [Apache FOP Module (fj-doc-mod-fop)](fj-doc-mod-fop/README.md) ([PDF](fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/PdfFopTypeHandler.java)/[FO](fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandler.java))
22+
* [OpenCSV Module (fj-doc-mod-opencsv)](fj-doc-mod-opencsv/README.md) ([CSV](fj-doc-mod-opencsv/src/main/java/org/fugerit/java/doc/mod/opencsv/OpenCSVTypeHandler.java))
23+
2224

2325
### 3. Available type handlers :
2426
* [MD BASIC](fj-doc-base/src/main/java/org/fugerit/java/doc/base/typehandler/markdown/SimpleMarkdownBasicTypeHandler.java) - (fj-doc-core) output as Markdown basic language
@@ -29,6 +31,7 @@ There are five kinds of components (each components README.md contains module st
2931
* [XLSX](fj-doc-mod-poi/src/main/java/org/fugerit/java/doc/mod/poi/XlsPoiTypeHandler.java) - (fj-doc-mod-poi) output as Microsoft XLSX using Apache POI
3032
* [PDF](fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/PdfFopTypeHandler.java) - (fj-doc-mod-fop) - output as PDF using Apache FOP
3133
* [FO](fj-doc-mod-fop/src/main/java/org/fugerit/java/doc/mod/fop/FreeMarkerFopTypeHandler.java) - (fj-doc-mod-fop) - output as FO using Apache FOP
34+
* [CSV](fj-doc-mod-opencsv/src/main/java/org/fugerit/java/doc/mod/opencsv/OpenCSVTypeHandler.java) - (fj-doc-mod-opencsv) - output as CSV using OpenCSV
3235

3336
### 4. Tutorial :
3437
* [Samples and Quickstart (fj-doc-sample)](fj-doc-sample/README.md)

docgen/parameters.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"title" : "Venus (Fugerit Document Generation Framework)",
33
"name": "Venus",
4-
"version" : "0.5.3",
5-
"date" : "21/11/2022",
4+
"version" : "0.5.4",
5+
"date" : "24/11/2022",
66
"organization" : {
77
"name" : "Fugerit Org",
88
"url" : "https://www.fugerit.org"

docgen/release-notes.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
0.5.3 (2022-11-21)
1+
0.5.4 (2022-11-24)
2+
------------------
3+
+ fj-doc-mod-opencsv, added module for handling CSV format [CSV format](https://github.com/fugerit-org/fj-doc/issues/8)
4+
5+
0.5.3 (2022-11-21)
26
------------------
37
+ fj-doc-base fixed xsd version comparison (before was a normal string comparison)
48
+ fj-doc-mod-fop Fixed legacy compatibility of FopConfigClassLoader see [0.5.2](https://github.com/fugerit-org/fj-doc/issues/7)

fj-doc-base/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<groupId>org.fugerit.java</groupId>
99
<artifactId>fj-doc</artifactId>
10-
<version>0.5.3</version>
10+
<version>0.5.4</version>
1111
</parent>
1212

1313
<name>fj-doc-base</name>
14-
<description></description>
14+
<description>Basic Framework functionalities (including a simple Renderer for Markdown)</description>
1515

1616
<licenses>
1717
<license>

fj-doc-base/src/main/java/org/fugerit/java/doc/base/config/DocConfig.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public class DocConfig {
44

5-
public static final String VERSION = " FUGERIT DOC Version 0.1 (2019-11-06) ";
5+
public static final String VERSION = " FUGERIT DOC Version 0.5 (2022-11-24) ";
66

77
public static final String TYPE_XML = "xml";
88

@@ -22,4 +22,6 @@ public class DocConfig {
2222

2323
public static final String TYPE_MD = "md";
2424

25+
public static final String TYPE_CSV = "csv";
26+
2527
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.fugerit.java.doc.base.typehelper.csv;
2+
3+
public class CsvHelperConsts {
4+
5+
public final static String PROP_CSV_TABLE_ID = "csv-table-id";
6+
7+
}

fj-doc-freemarker/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<groupId>org.fugerit.java</groupId>
99
<artifactId>fj-doc</artifactId>
10-
<version>0.5.3</version>
10+
<version>0.5.4</version>
1111
</parent>
1212

1313
<name>fj-doc-freemarker</name>
14-
<description></description>
14+
<description>Common freemarker functionalities and Renderer for HTML using Freemarker</description>
1515

1616
<licenses>
1717
<license>

fj-doc-mod-fop/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<groupId>org.fugerit.java</groupId>
99
<artifactId>fj-doc</artifactId>
10-
<version>0.5.3</version>
10+
<version>0.5.4</version>
1111
</parent>
1212

1313
<name>fj-doc-mod-fop</name>
14-
<description></description>
14+
<description>Rendered for PDF using Apache FOP</description>
1515

1616
<licenses>
1717
<license>

fj-doc-mod-opencsv/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Fugerit Document Generation Framework (fj-doc)
2+
3+
## OpenCSV Render (CSV)(fj-doc-mod-opencsv)
4+
5+
[back to fj-doc index](../README.md)
6+
7+
*Status* :
8+
Basic features implemented. (Sample JUnit [TestFreeMarker01](../fj-doc-sample/src/test/java/test/org/fugerit/java/doc/sample/freemarker/TestFreeMarker01.java) is now working).
9+
For the intrinsic limitations of the CSV format, is possibile to choose a sinlge table in the document and outputs it as CSV.
10+
11+
*Quickstart* :
12+
Basically this is only a type handler, see core library [fj-doc-base](../fj-doc-base/README.md).
13+
NOTE: If you have any special need you can open a pull request or create your own handler based on this.

fj-doc-mod-opencsv/pom.xml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
5+
<artifactId>fj-doc-mod-opencsv</artifactId>
6+
7+
<parent>
8+
<groupId>org.fugerit.java</groupId>
9+
<artifactId>fj-doc</artifactId>
10+
<version>0.5.4</version>
11+
</parent>
12+
13+
<name>fj-doc-mod-opencsv</name>
14+
<description>Rendere for CSV using OpenCSV</description>
15+
16+
<licenses>
17+
<license>
18+
<name>Apache License, Version 2.0</name>
19+
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
20+
<distribution>repo</distribution>
21+
</license>
22+
</licenses>
23+
24+
<properties>
25+
<opencsv-version>5.7.1</opencsv-version>
26+
</properties>
27+
28+
<build>
29+
30+
</build>
31+
32+
<dependencies>
33+
34+
<dependency>
35+
<groupId>com.opencsv</groupId>
36+
<artifactId>opencsv</artifactId>
37+
<version>${opencsv-version}</version>
38+
</dependency>
39+
40+
<dependency>
41+
<groupId>org.fugerit.java</groupId>
42+
<artifactId>fj-core</artifactId>
43+
</dependency>
44+
45+
<dependency>
46+
<groupId>org.fugerit.java</groupId>
47+
<artifactId>fj-doc-base</artifactId>
48+
</dependency>
49+
50+
</dependencies>
51+
52+
<organization>
53+
<url>https://www.fugerit.org</url>
54+
<name>Fugerit</name>
55+
</organization>
56+
57+
<url>https://www.fugerit.org/perm/venus/</url>
58+
59+
<profiles>
60+
61+
<profile>
62+
<id>full</id>
63+
<build>
64+
<plugins>
65+
<plugin>
66+
<groupId>org.apache.maven.plugins</groupId>
67+
<artifactId>maven-source-plugin</artifactId>
68+
<executions>
69+
<execution>
70+
<id>attach-sources</id>
71+
<goals>
72+
<goal>jar</goal>
73+
</goals>
74+
</execution>
75+
</executions>
76+
</plugin>
77+
<plugin>
78+
<groupId>org.apache.maven.plugins</groupId>
79+
<artifactId>maven-javadoc-plugin</artifactId>
80+
<configuration>
81+
<stylesheetfile>src/main/javadoc/stylesheet.css</stylesheetfile>
82+
</configuration>
83+
<executions>
84+
<execution>
85+
<id>attach-javadocs</id>
86+
<goals>
87+
<goal>jar</goal>
88+
</goals>
89+
</execution>
90+
</executions>
91+
</plugin>
92+
</plugins>
93+
</build>
94+
</profile>
95+
96+
</profiles>
97+
98+
</project>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package org.fugerit.java.doc.mod.opencsv;
2+
3+
import java.io.OutputStreamWriter;
4+
5+
import org.fugerit.java.doc.base.config.DocInput;
6+
import org.fugerit.java.doc.base.config.DocOutput;
7+
import org.fugerit.java.doc.base.config.DocTypeHandlerDefault;
8+
import org.fugerit.java.doc.base.model.DocBase;
9+
import org.fugerit.java.doc.base.model.DocCell;
10+
import org.fugerit.java.doc.base.model.DocElement;
11+
import org.fugerit.java.doc.base.model.DocPara;
12+
import org.fugerit.java.doc.base.model.DocPhrase;
13+
import org.fugerit.java.doc.base.model.DocRow;
14+
import org.fugerit.java.doc.base.model.DocTable;
15+
import org.fugerit.java.doc.base.typehelper.csv.CsvHelperConsts;
16+
import org.slf4j.Logger;
17+
import org.slf4j.LoggerFactory;
18+
19+
import com.opencsv.CSVWriter;
20+
21+
public class OpenCSVTypeHandler extends DocTypeHandlerDefault {
22+
23+
private static final Logger log = LoggerFactory.getLogger( OpenCSVTypeHandler.class );
24+
25+
/**
26+
*
27+
*/
28+
private static final long serialVersionUID = -1832379566311585295L;
29+
30+
public static final String TYPE_CSV = "csv";
31+
public static final String MODULE = "csv";
32+
public static final String MIME = "text/csv";
33+
34+
public static final OpenCSVTypeHandler HANDLER = new OpenCSVTypeHandler();
35+
36+
public OpenCSVTypeHandler() {
37+
super(TYPE_CSV, MODULE, MIME);
38+
}
39+
40+
@Override
41+
public void handle(DocInput docInput, DocOutput docOutput) throws Exception {
42+
DocBase docBase = docInput.getDoc();
43+
CSVWriter writer = new CSVWriter( new OutputStreamWriter( docOutput.getOs() ) );
44+
String csvTableId = docBase.getInfo().getProperty( CsvHelperConsts.PROP_CSV_TABLE_ID );
45+
DocTable table = (DocTable)docBase.getElementById( csvTableId );
46+
if ( table == null ) {
47+
log.warn( "table id {} not found!", csvTableId );
48+
} else {
49+
log.info( "handling table id {}", csvTableId );
50+
String[] currentRow = new String[ table.getColumns() ];
51+
for ( DocElement currentElement : table.getElementList() ) {
52+
DocRow row = (DocRow) currentElement;
53+
int count = 0;
54+
for ( DocElement currentCell : row.getElementList() ) {
55+
DocCell cell = (DocCell) currentCell;
56+
StringBuilder currentContent = new StringBuilder();
57+
for ( DocElement contentElement : cell.getElementList() ) {
58+
if ( contentElement instanceof DocPara ) {
59+
DocPara para = (DocPara) contentElement;
60+
currentContent.append( para.getText() );
61+
} else if ( contentElement instanceof DocPhrase ) {
62+
DocPhrase para = (DocPhrase) contentElement;
63+
currentContent.append( para.getText() );
64+
}
65+
}
66+
currentRow[count] = currentContent.toString();
67+
count++;
68+
}
69+
writer.writeNext( currentRow );
70+
}
71+
writer.flush();
72+
}
73+
}
74+
75+
}

fj-doc-mod-poi/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
[back to fj-doc index](../README.md)
66

77
*Status* :
8-
Most basic features implemented. (proper color and font handling missing).
8+
Most basic features implemented. (proper color and font handling missing).
9+
For the intrinsic limitations of the XLS/XLSX format, it is possibile to choose a some tables in the document and output it as excel sheets.
910

1011
*Quickstart* :
1112
Basically this is only a type handler, see core library [fj-doc-base](../fj-doc-base/README.md).

fj-doc-mod-poi/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<parent>
88
<groupId>org.fugerit.java</groupId>
99
<artifactId>fj-doc</artifactId>
10-
<version>0.5.3</version>
10+
<version>0.5.4</version>
1111
</parent>
1212

1313
<name>fj-doc-mod-poi</name>
14-
<description></description>
14+
<description>Renderer for XLS/XLSX using Apache POI</description>
1515

1616
<licenses>
1717
<license>

fj-doc-sample/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>org.fugerit.java</groupId>
99
<artifactId>fj-doc</artifactId>
10-
<version>0.5.3</version>
10+
<version>0.5.4</version>
1111
</parent>
1212

1313
<name>fj-doc-sample</name>
@@ -52,6 +52,11 @@
5252
<artifactId>fj-doc-mod-poi</artifactId>
5353
</dependency>
5454

55+
<dependency>
56+
<groupId>org.fugerit.java</groupId>
57+
<artifactId>fj-doc-mod-opencsv</artifactId>
58+
</dependency>
59+
5560
</dependencies>
5661

5762
<organization>

fj-doc-sample/src/main/resources/config/doc-handler-sample.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
<config fop-config-classloader-path="fop-config.xml" font-base-classloader-path="font/"/>
2828
</data>
2929
<data id="html-fm" info="html" type="org.fugerit.java.doc.freemarker.html.FreeMarkerHtmlTypeHandler" />
30-
<data id="html-fragment-fm" info="fhtml" type="org.fugerit.java.doc.freemarker.html.FreeMarkerHtmlFragmentTypeHandler" />
30+
<data id="html-fragment-fm" info="fhtml" type="org.fugerit.java.doc.freemarker.html.FreeMarkerHtmlFragmentTypeHandler" />
31+
<data id="csv-opencsv" info="csv" type="org.fugerit.java.doc.mod.opencsv.OpenCSVTypeHandler"/>
3132
</factory>
3233

3334
</doc-handler-config>

fj-doc-sample/src/main/resources/free_marker/basic.ftl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
-->
1212

1313
<meta>
14+
<!-- id table to be used for xlsx output -->
1415
<info name="excel-table-id">excel-table=print</info>
15-
<info name="excel-width-multiplier">450</info>
16+
<info name="excel-width-multiplier">450</info>
17+
<!-- id table to be used for xsv output -->
18+
<info name="csv-table-id">excel-table</info>
1619
</meta>
1720

1821
<body>

fj-doc-sample/src/main/resources/free_marker/test_01.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@
1515
<!-- Margin for document : left;right;top;bottom -->
1616
<info name="margins">10;10;10;30</info>
1717

18+
<!-- id table to be used for xlsx output -->
1819
<info name="excel-table-id">excel-table=print</info>
1920
<info name="excel-width-multiplier">450</info>
21+
<!-- id table to be used for xsv output -->
22+
<info name="csv-table-id">excel-table</info>
2023

2124
<!-- you need to escape free marker expression for currentPage -->
2225
<footer-ext numbered="true" align="right">

fj-doc-sample/src/test/java/test/org/fugerit/java/doc/sample/freemarker/BasicFreeMarkerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
public class BasicFreeMarkerTest extends BasicFacadeTest {
1717

1818
public BasicFreeMarkerTest() {
19-
this( "basic", DocConfig.TYPE_PDF, DocConfig.TYPE_XLS, DocConfig.TYPE_HTML );
19+
this( "basic", DocConfig.TYPE_PDF, DocConfig.TYPE_XLS, DocConfig.TYPE_HTML, DocConfig.TYPE_CSV );
2020
}
2121

2222
protected BasicFreeMarkerTest(String nameBase, String... typeList) {

fj-doc-sample/src/test/java/test/org/fugerit/java/doc/sample/freemarker/TestFreeMarker01.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class TestFreeMarker01 extends BasicFreeMarkerTest {
77
public TestFreeMarker01() {
88
super( "free-marker-01", DocConfig.TYPE_FO,
99
DocConfig.TYPE_XML, DocConfig.TYPE_PDF, DocConfig.TYPE_XLS,
10-
DocConfig.TYPE_HTML, DocConfig.TYPE_XLSX );
10+
DocConfig.TYPE_HTML, DocConfig.TYPE_XLSX, DocConfig.TYPE_CSV );
1111
}
1212

1313

0 commit comments

Comments
 (0)