Skip to content

Commit 336eba1

Browse files
committed
Support for DateFormat
1 parent 6e084b7 commit 336eba1

File tree

7 files changed

+38
-5
lines changed

7 files changed

+38
-5
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- support for date format
13+
1014
### Changed
1115

1216
- commons-lang3-version set to 3.18.0

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Tool export query in CSV and XLS / XLSX format
2121
<query-catalog-config>
2222
2323
<query-catalog id="main-catalog">
24-
<query id="Q001" sql="SELECT * FROM test_export" outputFormat="csv" csvSeparator=";" outputFile="target/catalog_test_001.csv"/>
24+
<query id="Q001" sql="SELECT * FROM test_export" outputFormat="csv" csvSeparator=";" outputFile="target/catalog_test_001.csv" dateFormat="yyyy-MM-dd HH:mm:ss"/>
2525
<query id="Q002" sql="SELECT * FROM test_export" outputFormat="csv" outputFile="target/catalog_test_002.csv"/>
2626
<query id="Q003" sql="SELECT * FROM test_export" outputFormat="html" outputFile="target/catalog_test_003.html" createPath="1"/>
2727
<query id="Q004" sql="SELECT * FROM test_export" outputFormat="xls" outputFile="target/catalog_test_004.xls" xlsResize="1" tryColumnType="1"/>

src/main/java/org/fugerit/java/query/export/catalog/QueryConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,7 @@ public class QueryConfig extends BasicIdConfigType {
3131
@Getter @Setter private String createPath;
3232

3333
@Getter @Setter private String tryColumnType;
34+
35+
@Getter @Setter private String dateFormat;
3436

3537
}

src/main/java/org/fugerit/java/query/export/catalog/QueryConfigCatalog.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ public static void handle( Connection conn, QueryConfig queryConfig ) throws IOE
7575
if ( StringUtils.isNotEmpty( queryConfig.getXlsTemplate() ) ) {
7676
params.setProperty( QueryExportFacade.ARG_XLS_TEMPLATE , queryConfig.getXlsTemplate() );
7777
}
78+
if ( StringUtils.isNotEmpty( queryConfig.getDateFormat() ) ) {
79+
params.setProperty( QueryExportFacade.ARG_DATE_FORMAT , queryConfig.getDateFormat() );
80+
}
7881
boolean createPath = BooleanUtils.isTrue( queryConfig.getCreatePath() );
7982
if ( createPath ) {
8083
log.info( "create path {} : {}", file, file.getParentFile().mkdirs() );

src/main/java/org/fugerit/java/query/export/facade/QueryExportFacade.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.fugerit.java.core.util.collection.ListMapStringKey;
1010
import org.fugerit.java.query.export.meta.BasicMetaRSE;
1111
import org.fugerit.java.query.export.meta.BasicMetaResult;
12+
import org.fugerit.java.query.export.meta.BasicObjectFormat;
1213
import org.fugerit.java.query.export.meta.MetaResult;
1314

1415
import lombok.extern.slf4j.Slf4j;
@@ -33,10 +34,11 @@ private QueryExportFacade() {}
3334

3435
public static final String ARG_XLS_RESIZE_DEFAULT = "false";
3536

37+
public static final String ARG_DATE_FORMAT = "date-format";
38+
3639
public static boolean registerHandler( String type ) {
3740
boolean ok = false;
3841
try {
39-
4042
QueryExportHandler handler = (QueryExportHandler)ClassHelper.newInstance( type );
4143
setGet( null, handler );
4244
ok = true;
@@ -72,7 +74,9 @@ public static int export( QueryExportConfig config ) {
7274
try (Statement stm = config.getConn().createStatement();
7375
ResultSet rs = stm.executeQuery( config.getQuery() ) ) {
7476
log.info( "sql : {}", config.getQuery() );
75-
MetaResult meta = new BasicMetaResult( BasicMetaRSE.newInstanceAllToString( rs.getMetaData(), config.getObjectFormat() ) , rs );
77+
BasicObjectFormat objectFormat = BasicObjectFormat.withDateFormat(
78+
config.getParams().getProperty( ARG_DATE_FORMAT ), config.getObjectFormat() );
79+
MetaResult meta = new BasicMetaResult( BasicMetaRSE.newInstanceAllToString( rs.getMetaData(), objectFormat ) , rs );
7680
export( config, meta );
7781
int count = meta.close();
7882
log.info( "record count {}", count );

src/main/java/org/fugerit/java/query/export/meta/BasicObjectFormat.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.fugerit.java.query.export.meta;
22

3+
import java.text.SimpleDateFormat;
4+
import java.util.Date;
5+
36
public class BasicObjectFormat {
47

58
public String format( Object current ) {
@@ -9,5 +12,22 @@ public String format( Object current ) {
912
}
1013
return value;
1114
}
12-
15+
16+
public static BasicObjectFormat withDateFormat( final String dateFormat, BasicObjectFormat objectFormat ) {
17+
if ( dateFormat != null ) {
18+
return new BasicObjectFormat() {
19+
@Override
20+
public String format(Object current) {
21+
if ( current instanceof Date) {
22+
SimpleDateFormat sdf = new SimpleDateFormat( dateFormat );
23+
return sdf.format( (Date)current );
24+
}
25+
return super.format(current);
26+
}
27+
};
28+
} else {
29+
return objectFormat;
30+
}
31+
}
32+
1333
}

src/test/resources/sample/query-catalog-sample.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<query-catalog-config>
22

33
<query-catalog id="sample-catalog">
4-
<query id="Q001" sql="SELECT * FROM test_export" outputFormat="csv" csvSeparator=";" outputFile="target/catalog_test_001.csv"/>
4+
<query id="Q001" sql="SELECT * FROM test_export" outputFormat="csv" csvSeparator=";" outputFile="target/catalog_test_001.csv" dateFormat="yyyy-MM-dd HH:mm:ss"/>
55
<query id="Q002" sql="SELECT * FROM test_export" outputFormat="csv" outputFile="target/catalog_test_002.csv"/>
66
<query id="Q003" sql="SELECT * FROM test_export" outputFormat="html" outputFile="target/catalog_test_003.html" createPath="1"/>
77
<query id="Q004" sql="SELECT * FROM test_export" outputFormat="xls" outputFile="target/catalog_test_004.xls" xlsResize="1" tryColumnType="1"/>

0 commit comments

Comments
 (0)