cziegeler 2002/09/22 23:38:50 Modified: src/java/org/apache/cocoon/transformation Tag: cocoon_2_0_3_branch SQLTransformer.java Log: Fixing prefix bug in sql transformer Revision Changes Path No revision No revision 1.10.2.2 +20 -7 xml-cocoon2/src/java/org/apache/cocoon/transformation/SQLTransformer.java Index: SQLTransformer.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/transformation/SQLTransformer.java,v retrieving revision 1.10.2.1 retrieving revision 1.10.2.2 diff -u -r1.10.2.1 -r1.10.2.2 --- SQLTransformer.java 19 Jun 2002 03:21:59 -0000 1.10.2.1 +++ SQLTransformer.java 23 Sep 2002 06:38:50 -0000 1.10.2.2 @@ -293,7 +293,7 @@ this.outUri = getCurrentQuery().properties.getParameter( SQLTransformer.MAGIC_NS_URI_ELEMENT, NAMESPACE ); this.outPrefix = getCurrentQuery().properties.getParameter( SQLTransformer.MAGIC_NS_PREFIX_ELEMENT, "" ); - if ( !"".equals( this.outPrefix ) && !"".equals( this.outUri ) ) { + if ( !"".equals( this.outUri ) ) { super.startPrefixMapping( this.outPrefix, this.outUri ); } @@ -356,7 +356,7 @@ getLogger().warn( "SQLTransformer: Could not close JDBC connection", e ); } } - if ( !"".equals( this.outPrefix ) && !"".equals( this.outUri ) ) { + if ( !"".equals( this.outUri ) ) { super.endPrefixMapping( this.outPrefix ); } } @@ -1150,18 +1150,27 @@ } protected String getColumnValue( int i ) throws SQLException { - return transformer.getStringValue( rs.getObject( i ) ); + String retval = transformer.getStringValue( rs.getObject( i ) ); + if (rs.getMetaData().getColumnType(i) == 8) + retval = transformer.getStringValue( rs.getBigDecimal( i ) ); + return retval; } + //fix not applied here because there is no metadata from Name -> number and coltype + //for a given "name" versus number. That being said this shouldn't be an issue + //as this function is only called for ancestor lookups. protected String getColumnValue( String name ) throws SQLException { - return transformer.getStringValue( rs.getObject( name ) ); + String retval = transformer.getStringValue( rs.getObject( name ) ); +// if (rs.getMetaData().getColumnType( name ) == 8) +// retval = transformer.getStringValue( rs.getBigDecimal( name ) ); + return retval; } protected boolean next() throws SQLException { // if rv is not -1, then an SQL insert, update, etc, has // happened (see JDBC docs - return codes for executeUpdate) if ( rv != -1 ) - return true; + return false; try { if ( rs == null || !rs.next() ) { //close(); @@ -1282,7 +1291,11 @@ transformer.start( this.row_name, attr ); for ( int i = 1; i <= md.getColumnCount(); i++ ) { transformer.start( md.getColumnName( i ).toLowerCase(), attr ); - this.serializeData(manager, transformer.getStringValue( rs.getObject( i ) )); + if ( md.getColumnType( i ) == 8 ) { //prevent nasty exponent notation + this.serializeData(manager, transformer.getStringValue( rs.getBigDecimal( i ) )); + } else { + this.serializeData(manager, transformer.getStringValue( rs.getObject( i ) )); + } transformer.end( md.getColumnName( i ).toLowerCase() ); } transformer.end( this.row_name );
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]