You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Steve Schwarz <sa...@hotmail.com> on 2003/08/08 18:31:18 UTC
SQLTransformer mod to optionally preserve case of column names
Hi
I'm new to Cocoon and found a need to preserve the case of database column
names when using the SQLTransformer. I found some older mail archive
discussions about this enhancement but no code changes were posted. I just
merged my change into the latest 2.1 source (I have changes in 2.04 in case
anyone is interested).
With this modification the current behavior (lowercasing column names) is
preserved by default.
Here are the diffs for your consideration. Any comments/criticism are
greatly appreciated.
Best Regards,
Steve
diff -u SQLTransformer.java.old SQLTransformer.java
--- SQLTransformer.java.old 2003-08-08 10:59:05.000000000 -0500
+++ SQLTransformer.java 2003-08-08 11:17:33.000000000 -0500
@@ -108,6 +108,8 @@
public static final String MAGIC_VALUE = "value";
public static final String MAGIC_DOC_ELEMENT = "doc-element";
public static final String MAGIC_ROW_ELEMENT = "row-element";
+ /** Should ResultSet rows have db column names lowercased (default) */
+ public static final String MAGIC_PRESERVE_COLUMN_CASE =
"preserve-column-case";
public static final String MAGIC_IN_PARAMETER = "in-parameter";
public static final String MAGIC_IN_PARAMETER_NR_ATTRIBUTE = "nr";
public static final String MAGIC_IN_PARAMETER_VALUE_ATTRIBUTE =
"value";
@@ -281,7 +283,8 @@
getLogger().debug( "ROW-ELEMENT: " + parameters.getParameter(
SQLTransformer.MAGIC_ROW_ELEMENT, "row" ) );
getLogger().debug( "NS-URI: " + parameters.getParameter(
SQLTransformer.MAGIC_NS_URI_ELEMENT, NAMESPACE ) );
getLogger().debug( "NS-PREFIX: " + parameters.getParameter(
SQLTransformer.MAGIC_NS_PREFIX_ELEMENT, "" ) );
- getLogger().debug( "CLOB_ENCODING: " +
clobEncoding );
+ getLogger().debug( "CLOB_ENCODING: " + clobEncoding );
+ getLogger().debug( "PRESERVE_COLUMN_CASE: " +
parameters.getParameter( SQLTransformer.MAGIC_PRESERVE_COLUMN_CASE, "" ) );
}
}
@@ -872,6 +875,9 @@
/** Mapping out parameters - objectModel **/
protected HashMap outParametersNames = null;
+ /** Check if we should not lowercase column names in results */
+ protected boolean preserveColumnCase = false;
+
protected Query( SQLTransformer transformer, int query_index ) {
this.transformer = transformer;
this.query_index = query_index;
@@ -1032,6 +1038,7 @@
protected void execute() throws SQLException {
this.rowset_name = properties.getParameter(
SQLTransformer.MAGIC_DOC_ELEMENT, "rowset" );
this.row_name = properties.getParameter(
SQLTransformer.MAGIC_ROW_ELEMENT, "row" );
+ this.preserveColumnCase = properties.getParameterAsBoolean(
SQLTransformer.MAGIC_PRESERVE_COLUMN_CASE, false );
Enumeration enum = query_parts.elements();
StringBuffer sb = new StringBuffer();
@@ -1241,9 +1248,12 @@
AttributesImpl attr = new AttributesImpl();
if ( !isupdate && !isstoredprocedure ) {
for ( int i = 1; i <= md.getColumnCount(); i++ ) {
- transformer.start( md.getColumnName( i ).toLowerCase(),
attr );
+ String columnName = md.getColumnName( i );
+ if (this.preserveColumnCase != true)
+ columnName = columnName.toLowerCase();
+ transformer.start( columnName, attr );
this.serializeData(manager, getColumnValue( i ) );
- transformer.end( md.getColumnName( i ).toLowerCase() );
+ transformer.end( columnName );
}
} else if ( isupdate && !isstoredprocedure ) {
transformer.start( "returncode", attr );
@@ -1280,7 +1290,10 @@
while ( rs.next() ) {
transformer.start( this.row_name, attr
);
for ( int i = 1; i <=
md.getColumnCount(); i++ ) {
- transformer.start(
md.getColumnName( i ).toLowerCase(), attr );
+ String columnName =
md.getColumnName( i );
+ if (this.preserveColumnCase != true)
+ columnName =
columnName.toLowerCase();
+ transformer.start( columnName, attr
);
if ( md.getColumnType( i ) == 8 ) {
//prevent nasty exponent notation
this.serializeData(manager,
SQLTransformer.getStringValue( rs.getBigDecimal( i
) ));
} else {
_________________________________________________________________
MSN 8 with e-mail virus protection service: 2 months FREE*
http://join.msn.com/?page=features/virus