Skip to content

Commit 134746c

Browse files
Added formatting facility
1 parent 09ef339 commit 134746c

File tree

4 files changed

+54
-10
lines changed

4 files changed

+54
-10
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import java.io.OutputStream;
44
import java.sql.Connection;
55

6+
import org.fugerit.java.query.export.meta.BasicObjectFormat;
7+
68
public class QueryExportConfig {
79

810
public static final boolean DEFAULT_EXPORT_HEADER = true;
@@ -45,6 +47,8 @@ public QueryExportConfig(String format, char separator, OutputStream output, Con
4547

4648
private boolean exportHeader;
4749

50+
private BasicObjectFormat objectFormat;
51+
4852
public String getFormat() {
4953
return format;
5054
}
@@ -90,5 +94,13 @@ public boolean isExportHeader() {
9094
public void setExportHeader(boolean exportHeader) {
9195
this.exportHeader = exportHeader;
9296
}
97+
98+
public BasicObjectFormat getObjectFormat() {
99+
return objectFormat;
100+
}
101+
102+
public void setObjectFormat(BasicObjectFormat objectFormat) {
103+
this.objectFormat = objectFormat;
104+
}
93105

94106
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.io.OutputStreamWriter;
55
import java.nio.charset.Charset;
66
import java.sql.ResultSet;
7-
import java.sql.ResultSetMetaData;
87
import java.sql.Statement;
98
import java.util.Iterator;
109

@@ -31,7 +30,7 @@ public static int export( QueryExportConfig config ) throws Exception {
3130
Statement stm = config.getConn().createStatement();
3231
logger.info( "sql : "+config.getQuery() );
3332
ResultSet rs = stm.executeQuery( config.getQuery() );
34-
MetaResult meta = new BasicMetaResult( BasicMetaRSE.newInstanceAllToString( rs.getMetaData() ) , rs );
33+
MetaResult meta = new BasicMetaResult( BasicMetaRSE.newInstanceAllToString( rs.getMetaData(), config.getObjectFormat() ) , rs );
3534
export( config, meta );
3635
int count = meta.close();
3736
stm.close();

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

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,21 @@ public abstract class BasicMetaRSE implements RSExtractor<MetaRecord> {
1212

1313
private ResultSetMetaData rsmd;
1414

15+
private BasicObjectFormat format;
16+
1517
@Override
1618
public abstract MetaRecord extractNext(ResultSet rs) throws SQLException;
1719

1820
public void init( ResultSetMetaData rsmd ) throws Exception {
21+
this.init( rsmd , BasicObjectFormat.DEF );
22+
}
23+
24+
public void init( ResultSetMetaData rsmd, BasicObjectFormat format ) throws Exception {
1925
this.rsmd = rsmd;
26+
this.format = format;
27+
if ( format == null ) {
28+
this.format = BasicObjectFormat.DEF;
29+
}
2030
}
2131

2232
public void destroy( ) throws Exception {
@@ -26,14 +36,21 @@ public void destroy( ) throws Exception {
2636
protected ResultSetMetaData getRsmd() {
2737
return rsmd;
2838
}
39+
40+
public BasicObjectFormat getFormat() {
41+
return format;
42+
}
2943

30-
public static BasicMetaRSE newInstanceAllToString( ResultSetMetaData rsmd ) throws Exception {
44+
public static BasicMetaRSE newInstanceAllToString( ResultSetMetaData rsmd, BasicObjectFormat format ) throws Exception {
3145
BasicMetaRSEAllToString rse = new BasicMetaRSEAllToString();
32-
rse.init( rsmd );
46+
rse.init( rsmd, format );
3347
return rse;
34-
3548
}
3649

50+
public static BasicMetaRSE newInstanceAllToString( ResultSetMetaData rsmd ) throws Exception {
51+
return newInstanceAllToString( rsmd, BasicObjectFormat.DEF );
52+
}
53+
3754
}
3855

3956
class BasicMetaRSEAllToString extends BasicMetaRSE {
@@ -43,12 +60,13 @@ public MetaRecord extractNext(ResultSet rs) throws SQLException {
4360
List<MetaField> fields = new ArrayList<MetaField>();
4461
for ( int k=0; k<this.getRsmd().getColumnCount(); k++ ) {
4562
Object current = rs.getObject( k+1 );
46-
String value = null;
47-
if ( current != null ) {
48-
value = String.valueOf( current );
63+
try {
64+
String value = this.getFormat().format( current );
65+
MetaField field = new BasicMetaField( value );
66+
fields.add( field );
67+
} catch (Exception e) {
68+
throw new SQLException( "Format error "+e.getMessage() , e );
4969
}
50-
MetaField field = new BasicMetaField( value );
51-
fields.add( field );
5270
}
5371
return new BasicMetaRecord( fields );
5472
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.fugerit.java.query.export.meta;
2+
3+
public class BasicObjectFormat {
4+
5+
public final static BasicObjectFormat DEF = new BasicObjectFormat();
6+
7+
public String format( Object current ) throws Exception {
8+
String value = null;
9+
if ( current != null ) {
10+
value = String.valueOf( current );
11+
}
12+
return value;
13+
}
14+
15+
}

0 commit comments

Comments
 (0)