Skip to content

Commit af52b76

Browse files
committed
Added html output format
1 parent 5824e70 commit af52b76

File tree

9 files changed

+133
-6
lines changed

9 files changed

+133
-6
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<groupId>org.fugerit.java</groupId>
66
<artifactId>query-export-tool</artifactId>
77

8-
<version>0.2.1</version>
8+
<version>0.3.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>query-export-tool</name>

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ public class QueryExportConfig {
1010

1111
public static final boolean DEFAULT_EXPORT_HEADER = true;
1212

13+
public static QueryExportConfig newConfigHTML( OutputStream output, Connection conn, String query ) {
14+
return new QueryExportConfig( QueryExportFacade.FORMAT_HTML , QueryExportFacade.CSV_SEPARATOR_DEF, output, conn, query, DEFAULT_EXPORT_HEADER );
15+
}
16+
1317
public static QueryExportConfig newConfigCSV( OutputStream output, Connection conn, String query ) {
1418
return new QueryExportConfig( QueryExportFacade.FORMAT_CSV , QueryExportFacade.CSV_SEPARATOR_DEF, output, conn, query, DEFAULT_EXPORT_HEADER );
1519
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public class QueryExportFacade {
2020
public static final String FORMAT_DEFAULT = FORMAT_CSV;
2121
public static final char CSV_SEPARATOR_DEF = ',';
2222

23+
public static final String FORMAT_HTML = "html";
24+
2325
protected static final Logger logger = LoggerFactory.getLogger(QueryExportFacade.class);
2426

2527
private static void registerHandler( String type, ListMapStringKey<QueryExportHandler> handlers ) {
@@ -38,6 +40,7 @@ private static void registerHandler( String type, ListMapStringKey<QueryExportHa
3840
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerCSV" , HANDLERS );
3941
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerXLS" , HANDLERS );
4042
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerXLSX" , HANDLERS );
43+
registerHandler( "org.fugerit.java.query.export.facade.format.QueryExportHandlerHTML" , HANDLERS );
4144
}
4245

4346
public static int export( QueryExportConfig config ) throws Exception {
@@ -66,3 +69,4 @@ public static int export( QueryExportConfig config, MetaResult meta ) throws Exc
6669
}
6770

6871
}
72+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package org.fugerit.java.query.export.facade.format;
2+
3+
import java.io.OutputStreamWriter;
4+
import java.io.PrintWriter;
5+
import java.nio.charset.Charset;
6+
import java.util.Iterator;
7+
8+
import org.fugerit.java.query.export.facade.QueryExportConfig;
9+
import org.fugerit.java.query.export.facade.QueryExportFacade;
10+
import org.fugerit.java.query.export.facade.QueryExportHandler;
11+
import org.fugerit.java.query.export.meta.MetaField;
12+
import org.fugerit.java.query.export.meta.MetaRecord;
13+
import org.fugerit.java.query.export.meta.MetaResult;
14+
15+
public class QueryExportHandlerHTML extends QueryExportHandler {
16+
17+
@Override
18+
public int export(QueryExportConfig config, MetaResult meta) throws Exception {
19+
int res = EXIT_OK;
20+
try ( PrintWriter writer = new PrintWriter( new OutputStreamWriter( config.getOutput() , Charset.forName( "UTF-8" ) ) ) ) {
21+
writer.println( "<table>" );
22+
if ( meta.hasHeader() ) {
23+
writeRecordHTML( meta.headerIterator(), writer, "th");
24+
}
25+
Iterator<MetaRecord> itRec = meta.recordIterator();
26+
while ( itRec.hasNext() ) {
27+
MetaRecord record = itRec.next();
28+
Iterator<MetaField> itField = record.fieldIterator();
29+
writeRecordHTML( itField, writer, "td");
30+
}
31+
writer.println( "</table>" );
32+
}
33+
return res;
34+
}
35+
36+
public QueryExportHandlerHTML() {
37+
super( QueryExportFacade.FORMAT_HTML );
38+
}
39+
40+
private static void writeRecordHTML( Iterator<MetaField> itField, PrintWriter writer, String cellType ) throws Exception {
41+
writer.println( "<tr>" );
42+
while ( itField.hasNext() ) {
43+
MetaField field = itField.next();
44+
writer.println( "<"+cellType+">"+field.getStringValue()+"</"+cellType+">" );
45+
}
46+
writer.println( "</tr>" );
47+
}
48+
49+
}

src/main/java/org/fugerit/java/query/export/tool/QueryExportToolMain.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ public class QueryExportToolMain {
3131
public static void main(String[] args) {
3232
Properties params = ArgUtils.getArgs(args);
3333
try {
34-
logger.info("params: " + params);
34+
logger.info("params: {}", params);
3535
String dbConfig = params.getProperty(ARG_DB_CONFIG);
3636
String queryFile = params.getProperty(ARG_QUERY_FILE);
3737
String outputFile = params.getProperty(ARG_OUTPUT_FILE);
3838
String outputFormat = params.getProperty(ARG_OUTPUT_FORMAT, QueryExportFacade.FORMAT_DEFAULT );
39-
logger.info("param : " + ARG_DB_CONFIG + "=" + dbConfig);
40-
logger.info("param : " + ARG_QUERY_FILE + "=" + queryFile);
41-
logger.info("param : " + ARG_OUTPUT_FILE + "=" + outputFile);
42-
logger.info("param : " + ARG_OUTPUT_FORMAT + "=" + outputFormat);
39+
logger.info("param : {} = {}", ARG_DB_CONFIG , dbConfig);
40+
logger.info("param : {} = {}", ARG_QUERY_FILE , queryFile);
41+
logger.info("param : {} = {}", ARG_OUTPUT_FILE , outputFile);
42+
logger.info("param : {} = {}", ARG_OUTPUT_FORMAT , outputFormat);
4343
if (queryFile == null || outputFile == null) {
4444
throw new Exception("Missing required arguments " + ARG_OUTPUT_FILE + ", " + ARG_QUERY_FILE);
4545
} else {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package test.org.fugerit.java.query.export.tool;
2+
3+
import static org.junit.Assert.fail;
4+
5+
import java.io.File;
6+
import java.io.FileOutputStream;
7+
8+
import org.fugerit.java.query.export.facade.QueryExportConfig;
9+
import org.fugerit.java.query.export.facade.QueryExportFacade;
10+
import org.junit.Test;
11+
12+
public class TestHTML extends TestBase {
13+
14+
@Test
15+
public void test() {
16+
try {
17+
initDatabase();
18+
logger.info( "test start" );
19+
FileOutputStream fos = new FileOutputStream( new File( "target/test_export.html" ) );
20+
String query = " SELECT * FROM test_export ";
21+
QueryExportConfig config = QueryExportConfig.newConfigHTML( fos , getConnection(), query );
22+
QueryExportFacade.export( config );
23+
logger.info( "test end" );
24+
} catch (Exception e) {
25+
String message = "Error "+e.getMessage();
26+
logger.error( message, e );
27+
fail( message );
28+
}
29+
30+
}
31+
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package test.org.fugerit.java.query.export.tool;
2+
3+
import static org.junit.Assert.fail;
4+
5+
import org.fugerit.java.query.export.facade.QueryExportFacade;
6+
import org.fugerit.java.query.export.tool.QueryExportToolMain;
7+
import org.junit.Test;
8+
9+
public class TestTool extends TestBase {
10+
11+
@Test
12+
public void test() {
13+
try {
14+
initDatabase();
15+
logger.info( "test start" );
16+
String[] args = {
17+
"--"+QueryExportToolMain.ARG_DB_CONFIG, "src/test/resources/sample/db-config.properties",
18+
"--"+QueryExportToolMain.ARG_OUTPUT_FORMAT, QueryExportFacade.FORMAT_HTML,
19+
"--"+QueryExportToolMain.ARG_OUTPUT_FILE, "target/test-tool.html",
20+
"--"+QueryExportToolMain.ARG_QUERY_FILE, "src/test/resources/sample/sample-query.sql"
21+
};
22+
QueryExportToolMain.main( args );
23+
logger.info( "test end" );
24+
} catch (Exception e) {
25+
String message = "Error "+e.getMessage();
26+
logger.error( message, e );
27+
fail( message );
28+
}
29+
30+
}
31+
32+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
db-cf-mode=DC
2+
db-mode-dc-drv=org.hsqldb.jdbcDriver
3+
db-mode-dc-url=jdbc:hsqldb:mem:employees
4+
db-mode-dc-usr=vinod
5+
db-mode-dc-pwd=vinod
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SELECT * FROM test_export

0 commit comments

Comments
 (0)