Skip to content

Commit e982851

Browse files
committed
Test coverage review
1 parent 7ef3d2a commit e982851

File tree

20 files changed

+277
-204
lines changed

20 files changed

+277
-204
lines changed

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
## [0.4.0] - 2023-09-23
11+
12+
### Added
13+
14+
- [workflow deploy on branch deploy](.github/workflows/deploy_maven_package.yml)
15+
- [workflow maven build](.github/workflows/build_maven_package.yml)
16+
- keep a changelog and coverage badge
17+
18+
### Changed
19+
20+
- [workflow sonar cloud](.github/workflows/sonarcloud-maven.yml)
21+
- fj-bom version set to 1.4.0
22+
- fj-core version set to 8.3.7
23+

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
Tool export query in CSV and XLS / XLSX format
44

5+
[![Keep a Changelog v1.1.0 badge](https://img.shields.io/badge/changelog-Keep%20a%20Changelog%20v1.1.0-%23E05735)](CHANGELOG.md)
6+
[![Maven Central](https://img.shields.io/maven-central/v/org.fugerit.java/query-export-tool.svg)](https://mvnrepository.com/artifact/org.fugerit.java/query-export-tool)
7+
[![license](https://img.shields.io/badge/License-Apache%20License%202.0-teal.svg)](https://opensource.org/licenses/Apache-2.0)
8+
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=fugerit-org_query-export-tool&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=fugerit-org_query-export-tool)
9+
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=fugerit-org_query-export-tool&metric=coverage)](https://sonarcloud.io/summary/new_code?id=fugerit-org_query-export-tool)
10+
511
![Java runtime version](https://img.shields.io/badge/run%20on-java%208+-%23113366.svg?style=for-the-badge&logo=openjdk&logoColor=white)
612
![Java build version](https://img.shields.io/badge/build%20on-java%2011+-%23ED8B00.svg?style=for-the-badge&logo=openjdk&logoColor=white)
713
![Apache Maven](https://img.shields.io/badge/Apache%20Maven-3.9.0+-C71A36?style=for-the-badge&logo=Apache%20Maven&logoColor=white)

pom.xml

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212

1313
<artifactId>query-export-tool</artifactId>
1414

15-
<version>0.3.2</version>
15+
<version>0.4.0</version>
1616
<packaging>jar</packaging>
1717

1818
<name>query-export-tool</name>
19-
<description>Tool export query in CSV (and in the future other) formats</description>
19+
<description>Tool export query in CSV and other formats</description>
2020
<url>http://www.fugerit.org/java/</url>
2121

2222
<scm>
@@ -27,8 +27,10 @@
2727

2828
<properties>
2929
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
30-
<maven.compiler.target>1.8</maven.compiler.target>
31-
<maven.compiler.source>1.8</maven.compiler.source>
30+
<java-version-compliance>8</java-version-compliance>
31+
<maven.compiler.source>${java-version-compliance}</maven.compiler.source>
32+
<maven.compiler.target>${java-version-compliance}</maven.compiler.target>
33+
<maven.compiler.release>${java-version-compliance}</maven.compiler.release>
3234
<!-- libraries versions -->
3335
<fj-version>8.3.7</fj-version>
3436
<opencsv-version>5.8</opencsv-version>
@@ -82,6 +84,14 @@
8284
<groupId>org.apache.poi</groupId>
8385
<artifactId>poi</artifactId>
8486
<version>${poi-version}</version>
87+
<scope>provided</scope>
88+
</dependency>
89+
90+
<dependency>
91+
<groupId>org.slf4j</groupId>
92+
<artifactId>slf4j-simple</artifactId>
93+
<version>2.0.9</version>
94+
<scope>test</scope>
8595
</dependency>
8696

8797
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
@@ -108,6 +118,24 @@
108118

109119
<profile>
110120
<id>singlepackage</id>
121+
<dependencies>
122+
<dependency>
123+
<groupId>org.apache.poi</groupId>
124+
<artifactId>poi</artifactId>
125+
</dependency>
126+
<dependency>
127+
<groupId>org.apache.logging.log4j</groupId>
128+
<artifactId>log4j-api</artifactId>
129+
</dependency>
130+
<dependency>
131+
<groupId>org.apache.logging.log4j</groupId>
132+
<artifactId>log4j-core</artifactId>
133+
</dependency>
134+
<dependency>
135+
<groupId>org.apache.logging.log4j</groupId>
136+
<artifactId>log4j-slf4j2-impl</artifactId>
137+
</dependency>
138+
</dependencies>
111139
<build>
112140
<plugins>
113141
<plugin>

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,19 @@ public class QueryExportConfig {
1313
public static QueryExportConfig newConfigHTML( OutputStream output, Connection conn, String query ) {
1414
return new QueryExportConfig( QueryExportFacade.FORMAT_HTML , QueryExportFacade.CSV_SEPARATOR_DEF, output, conn, query, DEFAULT_EXPORT_HEADER );
1515
}
16-
16+
1717
public static QueryExportConfig newConfigCSV( OutputStream output, Connection conn, String query ) {
1818
return new QueryExportConfig( QueryExportFacade.FORMAT_CSV , QueryExportFacade.CSV_SEPARATOR_DEF, output, conn, query, DEFAULT_EXPORT_HEADER );
1919
}
2020

21+
public static QueryExportConfig newConfigXLS( OutputStream output, Connection conn, String query ) {
22+
return new QueryExportConfig( QueryExportFacade.FORMAT_XLS , QueryExportFacade.CSV_SEPARATOR_DEF, output, conn, query, DEFAULT_EXPORT_HEADER );
23+
}
24+
25+
public static QueryExportConfig newConfigXLSX( OutputStream output, Connection conn, String query ) {
26+
return new QueryExportConfig( QueryExportFacade.FORMAT_XLSX , QueryExportFacade.CSV_SEPARATOR_DEF, output, conn, query, DEFAULT_EXPORT_HEADER );
27+
}
28+
2129
public static QueryExportConfig newConfigCSV( OutputStream output, char separator ) {
2230
return new QueryExportConfig( QueryExportFacade.FORMAT_CSV , separator, output, null, null, DEFAULT_EXPORT_HEADER );
2331
}
@@ -38,6 +46,7 @@ public QueryExportConfig(String format, char separator, OutputStream output, Con
3846
this.conn = conn;
3947
this.query = query;
4048
this.exportHeader = exportHeader;
49+
this.params = new Properties();
4150
}
4251

4352
private String format;

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,16 @@ private QueryExportFacade() {}
2525
public static final char CSV_SEPARATOR_DEF = ',';
2626

2727
public static final String FORMAT_HTML = "html";
28+
29+
public static final String ARG_XLS_TEMPLATE = "xls-template";
2830

2931
protected static final Logger logger = LoggerFactory.getLogger(QueryExportFacade.class);
3032

3133
private static void registerHandler( String type, ListMapStringKey<QueryExportHandler> handlers ) {
3234
try {
3335
QueryExportHandler handler = (QueryExportHandler)ClassHelper.newInstance( type );
3436
handlers.add( handler );
35-
} catch (Exception e) {
37+
} catch (Exception | NoClassDefFoundError e) {
3638
String message = "Failed to register handler : "+type+" "+e;
3739
logger.warn("{} [set log level to debug for full stack trace]", message );
3840
logger.debug( message, e );
@@ -50,9 +52,9 @@ private static void registerHandler( String type, ListMapStringKey<QueryExportHa
5052
public static int export( QueryExportConfig config ) {
5153
return SafeFunction.get( () -> {
5254
int res = 0;
53-
try (Statement stm = config.getConn().createStatement()) {
55+
try (Statement stm = config.getConn().createStatement();
56+
ResultSet rs = stm.executeQuery( config.getQuery() ) ) {
5457
logger.info( "sql : {}", config.getQuery() );
55-
ResultSet rs = stm.executeQuery( config.getQuery() );
5658
MetaResult meta = new BasicMetaResult( BasicMetaRSE.newInstanceAllToString( rs.getMetaData(), config.getObjectFormat() ) , rs );
5759
export( config, meta );
5860
int count = meta.close();

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

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

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,23 @@
88

99
import org.fugerit.java.core.db.dao.RSExtractor;
1010

11-
public abstract class BasicMetaRSE implements RSExtractor<MetaRecord> {
11+
public abstract class BasicMetaRSE implements RSExtractor<MetaRecord>, AutoCloseable {
1212

13+
private static final BasicObjectFormat DEF = new BasicObjectFormat();
14+
1315
private ResultSetMetaData rsmd;
1416

1517
private BasicObjectFormat format;
1618

1719
public void init( ResultSetMetaData rsmd ) {
18-
this.init( rsmd , BasicObjectFormat.DEF );
20+
this.init( rsmd , null );
1921
}
2022

2123
public void init( ResultSetMetaData rsmd, BasicObjectFormat format ) {
2224
this.rsmd = rsmd;
2325
this.format = format;
2426
if ( format == null ) {
25-
this.format = BasicObjectFormat.DEF;
27+
this.format = DEF;
2628
}
2729
}
2830

@@ -45,7 +47,12 @@ public static BasicMetaRSE newInstanceAllToString( ResultSetMetaData rsmd, Basic
4547
}
4648

4749
public static BasicMetaRSE newInstanceAllToString( ResultSetMetaData rsmd ) {
48-
return newInstanceAllToString( rsmd, BasicObjectFormat.DEF );
50+
return newInstanceAllToString( rsmd, new BasicObjectFormat() );
51+
}
52+
53+
@Override
54+
public void close() throws Exception {
55+
this.destroy();
4956
}
5057

5158
}

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

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
import java.util.ArrayList;
66
import java.util.Iterator;
77
import java.util.List;
8+
import java.util.NoSuchElementException;
89

910
import org.fugerit.java.core.cfg.CloseHelper;
11+
import org.fugerit.java.core.cfg.ConfigRuntimeException;
1012
import org.fugerit.java.core.function.SafeFunction;
13+
import org.fugerit.java.core.function.SimpleValue;
1114

1215
public class BasicMetaResult implements MetaResult {
1316

@@ -23,13 +26,14 @@ public BasicMetaResult( BasicMetaRSE rse, ResultSet rs) {
2326
super();
2427
this.rse = rse;
2528
this.rs = rs;
29+
this.count = new SimpleValue<>( 0 );
2630
}
2731

2832
private BasicMetaRSE rse;
2933

3034
private ResultSet rs;
3135

32-
private int count;
36+
private SimpleValue<Integer> count;
3337

3438
@Override
3539
public boolean hasHeader() {
@@ -56,12 +60,18 @@ public int getColumnCount() {
5660
@Override
5761
public Iterator<MetaRecord> recordIterator() {
5862
return new Iterator<MetaRecord>() {
63+
private boolean hasNext = false;
5964
@Override
6065
public boolean hasNext() {
61-
return SafeFunction.get( () -> rs.next() );
66+
this.hasNext = SafeFunction.get( () -> rs.next() );
67+
return this.hasNext;
6268
}
6369
@Override
6470
public MetaRecord next() {
71+
count.setValue( count.getValue()+1 );
72+
if ( !this.hasNext ) {
73+
throw new NoSuchElementException( "No more elements : "+count.getValue() );
74+
}
6575
return SafeFunction.get( () -> rse.extractNext( rs ) );
6676
}
6777
@Override
@@ -73,11 +83,11 @@ public void remove() {
7383

7484
@Override
7585
public int close() {
76-
CloseHelper.closeRuntimeEx( this.rs );
86+
Exception ex = CloseHelper.closeAll( this.rs, this.rse );
7787
this.rs = null;
78-
this.rse.destroy();
7988
this.rse = null;
80-
return this.count;
89+
SafeFunction.applyIfNotNull( ex , () -> { throw new ConfigRuntimeException( ex ); } );
90+
return this.count.getValue();
8191
}
8292

8393
}

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22

33
public class BasicObjectFormat {
44

5-
private BasicObjectFormat() {}
6-
7-
public static final BasicObjectFormat DEF = new BasicObjectFormat();
8-
95
public String format( Object current ) {
106
String value = null;
117
if ( current != null ) {

src/main/resources/log4j.properties

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

0 commit comments

Comments
 (0)