Skip to content

Commit f243c41

Browse files
committed
Code review and test coverage
1 parent 9b31a81 commit f243c41

File tree

18 files changed

+230
-268
lines changed

18 files changed

+230
-268
lines changed

.github/workflows/build_maven_compatibility.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ jobs:
3131
distribution: ${{ matrix.distribution }}
3232
java-version: ${{ matrix.java }}
3333
- name: Maven build
34-
run: mvn clean install -Pcoverage,full,metadata
34+
run: mvn clean install -Pfull,coverage

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919

2020
- [workflow sonar cloud](.github/workflows/sonarcloud-maven.yml)
2121
- fj-bom version set to 1.4.0
22-
- fj-core version set to 8.3.7
22+
- fj-core version set to 8.3.8
2323

pom.xml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<maven.compiler.target>${java-version-compliance}</maven.compiler.target>
3333
<maven.compiler.release>${java-version-compliance}</maven.compiler.release>
3434
<!-- libraries versions -->
35-
<fj-version>8.3.7</fj-version>
35+
<fj-version>8.3.8</fj-version>
3636
<opencsv-version>5.8</opencsv-version>
3737
</properties>
3838

@@ -82,8 +82,7 @@
8282

8383
<dependency>
8484
<groupId>org.apache.poi</groupId>
85-
<artifactId>poi</artifactId>
86-
<version>${poi-version}</version>
85+
<artifactId>poi-ooxml</artifactId>
8786
<scope>provided</scope>
8887
</dependency>
8988

@@ -94,10 +93,10 @@
9493
<scope>test</scope>
9594
</dependency>
9695

97-
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
9896
<dependency>
99-
<groupId>org.apache.poi</groupId>
100-
<artifactId>poi-ooxml</artifactId>
97+
<groupId>org.projectlombok</groupId>
98+
<artifactId>lombok</artifactId>
99+
<scope>provided</scope>
101100
</dependency>
102101

103102
<dependency>
@@ -121,7 +120,7 @@
121120
<dependencies>
122121
<dependency>
123122
<groupId>org.apache.poi</groupId>
124-
<artifactId>poi</artifactId>
123+
<artifactId>poi-ooxml</artifactId>
125124
</dependency>
126125
<dependency>
127126
<groupId>org.apache.logging.log4j</groupId>

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

Lines changed: 13 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,71 +2,30 @@
22

33
import org.fugerit.java.core.cfg.xml.BasicIdConfigType;
44

5+
import lombok.Getter;
6+
import lombok.Setter;
7+
import lombok.ToString;
8+
9+
@ToString
510
public class QueryConfig extends BasicIdConfigType {
611

712
/**
813
*
914
*/
1015
private static final long serialVersionUID = 40082112689288L;
1116

12-
private String sql;
17+
@Getter @Setter private String sql;
1318

14-
private String outputFile;
19+
@Getter @Setter private String outputFile;
1520

16-
private String outputFormat;
21+
@Getter @Setter private String outputFormat;
1722

18-
private String csvSeparator;
23+
@Getter @Setter private String csvSeparator;
1924

20-
private String xlsResize;
25+
@Getter @Setter private String xlsResize;
2126

22-
private String createPath;
23-
24-
public String getSql() {
25-
return sql;
26-
}
27-
28-
public void setSql(String sql) {
29-
this.sql = sql;
30-
}
31-
32-
public String getOutputFile() {
33-
return outputFile;
34-
}
35-
36-
public void setOutputFile(String outputFile) {
37-
this.outputFile = outputFile;
38-
}
39-
40-
public String getOutputFormat() {
41-
return outputFormat;
42-
}
43-
44-
public void setOutputFormat(String outputFormat) {
45-
this.outputFormat = outputFormat;
46-
}
47-
48-
public String getCsvSeparator() {
49-
return csvSeparator;
50-
}
51-
52-
public void setCsvSeparator(String csvSeparator) {
53-
this.csvSeparator = csvSeparator;
54-
}
55-
56-
public String getXlsResize() {
57-
return xlsResize;
58-
}
59-
60-
public void setXlsResize(String xlsResize) {
61-
this.xlsResize = xlsResize;
62-
}
63-
64-
public String getCreatePath() {
65-
return createPath;
66-
}
67-
68-
public void setCreatePath(String createPath) {
69-
this.createPath = createPath;
70-
}
27+
@Getter @Setter private String xlsTemplate;
28+
29+
@Getter @Setter private String createPath;
7130

7231
}

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

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
11
package org.fugerit.java.query.export.catalog;
22

3+
import java.io.File;
4+
import java.io.FileOutputStream;
5+
import java.io.IOException;
6+
import java.sql.Connection;
7+
import java.util.Properties;
8+
9+
import org.fugerit.java.core.cfg.ConfigRuntimeException;
310
import org.fugerit.java.core.cfg.xml.CustomListCatalogConfig;
11+
import org.fugerit.java.core.io.helper.HelperIOException;
12+
import org.fugerit.java.core.lang.helpers.BooleanUtils;
13+
import org.fugerit.java.core.lang.helpers.StringUtils;
414
import org.fugerit.java.core.util.collection.ListMapStringKey;
15+
import org.fugerit.java.query.export.facade.QueryExportConfig;
16+
import org.fugerit.java.query.export.facade.QueryExportFacade;
17+
18+
import lombok.extern.slf4j.Slf4j;
519

20+
@Slf4j
621
public class QueryConfigCatalog extends CustomListCatalogConfig<QueryConfig, ListMapStringKey<QueryConfig>> {
722

823
/**
@@ -15,4 +30,45 @@ public QueryConfigCatalog() {
1530
this.getGeneralProps().setProperty( ATT_TYPE , QueryConfig.class.getName() );
1631
}
1732

33+
public static void handle( Connection conn, QueryConfig queryConfig ) throws IOException {
34+
HelperIOException.apply( () -> {
35+
QueryExportConfig config = null;
36+
String outputFile = queryConfig.getOutputFile();
37+
File file = new File( outputFile );
38+
String format = queryConfig.getOutputFormat();
39+
String query = queryConfig.getSql();
40+
Properties params = new Properties();
41+
if ( StringUtils.isNotEmpty( queryConfig.getXlsResize() ) ) {
42+
params.setProperty( QueryExportFacade.ARG_XLS_RESIZE , queryConfig.getXlsResize() );
43+
}
44+
if ( StringUtils.isNotEmpty( queryConfig.getXlsTemplate() ) ) {
45+
params.setProperty( QueryExportFacade.ARG_XLS_TEMPLATE , queryConfig.getXlsTemplate() );
46+
}
47+
boolean createPath = BooleanUtils.isTrue( queryConfig.getCreatePath() );
48+
if ( createPath ) {
49+
log.info( "create path {} : {}", file, file.getParentFile().mkdirs() );
50+
}
51+
try ( FileOutputStream fos = new FileOutputStream( file ) ) {
52+
log.info( "queryConfig : {}, outputFile : {}", queryConfig, file.getCanonicalPath() );
53+
if ( QueryExportFacade.FORMAT_CSV.equalsIgnoreCase( format ) ) {
54+
config = QueryExportConfig.newConfigCSV( fos , conn, query );
55+
if ( StringUtils.isNotEmpty( queryConfig.getCsvSeparator() ) ) {
56+
config.setSeparator( queryConfig.getCsvSeparator().charAt( 0 ) );
57+
}
58+
} else if ( QueryExportFacade.FORMAT_HTML.equalsIgnoreCase( format ) ) {
59+
config = QueryExportConfig.newConfigHTML( fos , conn, query );
60+
} else if ( QueryExportFacade.FORMAT_XLSX.equalsIgnoreCase( format ) ) {
61+
config = QueryExportConfig.newConfigXLSX( fos , conn, query );
62+
63+
} else if ( QueryExportFacade.FORMAT_XLS.equalsIgnoreCase( format ) ) {
64+
config = QueryExportConfig.newConfigXLS( fos , conn, query );
65+
} else {
66+
throw new ConfigRuntimeException( "Unsuppoorted format : "+format );
67+
}
68+
config.getParams().putAll( params );
69+
QueryExportFacade.export(config);
70+
}
71+
} );
72+
}
73+
1874
}

src/main/java/org/fugerit/java/query/export/data/FieldHandler.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/main/java/org/fugerit/java/query/export/data/FieldMetaData.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

src/main/java/org/fugerit/java/query/export/data/QueryMetaData.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

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

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
import org.fugerit.java.query.export.meta.BasicMetaRSE;
1111
import org.fugerit.java.query.export.meta.BasicMetaResult;
1212
import org.fugerit.java.query.export.meta.MetaResult;
13-
import org.slf4j.Logger;
14-
import org.slf4j.LoggerFactory;
1513

14+
import lombok.extern.slf4j.Slf4j;
15+
16+
@Slf4j
1617
public class QueryExportFacade {
1718

1819
private QueryExportFacade() {}
@@ -27,38 +28,53 @@ private QueryExportFacade() {}
2728
public static final String FORMAT_HTML = "html";
2829

2930
public static final String ARG_XLS_TEMPLATE = "xls-template";
31+
32+
public static final String ARG_XLS_RESIZE = "xls-resize";
3033

31-
protected static final Logger logger = LoggerFactory.getLogger(QueryExportFacade.class);
34+
public static final String ARG_XLS_RESIZE_DEFAULT = "false";
3235

33-
private static void registerHandler( String type, ListMapStringKey<QueryExportHandler> handlers ) {
36+
public static boolean registerHandler( String type ) {
37+
boolean ok = false;
3438
try {
3539
QueryExportHandler handler = (QueryExportHandler)ClassHelper.newInstance( type );
36-
handlers.add( handler );
40+
setGet( null, handler );
41+
ok = true;
3742
} catch (Exception | NoClassDefFoundError e) {
3843
String message = "Failed to register handler : "+type+" "+e;
39-
logger.warn("{} [set log level to debug for full stack trace]", message );
40-
logger.debug( message, e );
44+
log.warn("{} [set log level to debug for full stack trace]", message );
45+
log.debug( message, e );
4146
}
47+
return ok;
4248
}
4349

4450
private static final ListMapStringKey<QueryExportHandler> HANDLERS = new ListMapStringKey<>();
4551
static {
46-
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerCSV" , HANDLERS );
47-
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerXLS" , HANDLERS );
48-
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerXLSX" , HANDLERS );
49-
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerHTML" , HANDLERS );
52+
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerCSV" );
53+
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerXLS" );
54+
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerXLSX" );
55+
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerHTML" );
56+
}
57+
58+
private static synchronized QueryExportHandler setGet( String format, QueryExportHandler handler ) {
59+
QueryExportHandler res = null;
60+
if ( format != null ) {
61+
res = HANDLERS.get( format );
62+
} else {
63+
HANDLERS.add( handler );
64+
}
65+
return res;
5066
}
5167

5268
public static int export( QueryExportConfig config ) {
5369
return SafeFunction.get( () -> {
5470
int res = 0;
5571
try (Statement stm = config.getConn().createStatement();
5672
ResultSet rs = stm.executeQuery( config.getQuery() ) ) {
57-
logger.info( "sql : {}", config.getQuery() );
73+
log.info( "sql : {}", config.getQuery() );
5874
MetaResult meta = new BasicMetaResult( BasicMetaRSE.newInstanceAllToString( rs.getMetaData(), config.getObjectFormat() ) , rs );
5975
export( config, meta );
6076
int count = meta.close();
61-
logger.info( "record count {}", count );
77+
log.info( "record count {}", count );
6278
}
6379
return res;
6480
} );
@@ -68,7 +84,7 @@ public static int export( QueryExportConfig config, MetaResult meta ) {
6884
return SafeFunction.get( () -> {
6985
int res = 0;
7086
String format = config.getFormat().toLowerCase();
71-
QueryExportHandler handler = HANDLERS.get( format );
87+
QueryExportHandler handler = setGet( format, null );
7288
if ( handler != null ) {
7389
res = handler.export(config, meta);
7490
} else {

0 commit comments

Comments
 (0)