haul 2003/01/09 08:52:15 Modified: src/blocks/databases/java/org/apache/cocoon/acting/modular DatabaseAction.java Log: <action dev="CH" type="add"> (modular) DatabaseAction: added ability to use arbitrary path separators instead of "." (e.g. "/"), added ability to count rows from 1, added documentation. </action> Revision Changes Path 1.4 +24 -9 xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/acting/modular/DatabaseAction.java Index: DatabaseAction.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/acting/modular/DatabaseAction.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DatabaseAction.java 7 Jan 2003 23:56:08 -0000 1.3 +++ DatabaseAction.java 9 Jan 2003 16:52:15 -0000 1.4 @@ -57,6 +57,7 @@ import java.sql.SQLException; import java.util.Map; +import org.apache.avalon.excalibur.datasource.DataSourceComponent; import org.apache.avalon.framework.activity.Disposable; import org.apache.avalon.framework.component.ComponentException; import org.apache.avalon.framework.component.ComponentManager; @@ -65,9 +66,6 @@ import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.parameters.Parameters; - -import org.apache.avalon.excalibur.datasource.DataSourceComponent; - import org.apache.cocoon.Constants; import org.apache.cocoon.ProcessingException; import org.apache.cocoon.acting.AbstractComplementaryConfigurableAction; @@ -100,8 +98,12 @@ * * <table> * <tr><td colspan="2">Configuration options (setup):</td></tr> - * <tr><td>input </td><td>default mode name for reading values</td></tr> - * <tr><td>autoincrement </td><td>default mode name for obtaining values from autoincrement columns</td></tr> + * <tr><td>input </td><td>default mode name for reading values (request-param)</td></tr> + * <tr><td>autoincrement </td><td>default mode name for obtaining values from autoincrement columns (auto)</td></tr> + * <tr><td>append-row </td><td>append row number in square brackets to column name for output (yes)</td></tr> + * <tr><td>append-table-name</td><td>add table name to column name for both in- and output (yes)</td></tr> + * <tr><td>first-row </td><td>row index of first row (0)</td></tr> + * <tr><td>path-separator </td><td>string to separate table name from column name (.)</td></tr> * </table> * * <table> @@ -109,7 +111,7 @@ * <tr><td>throw-exception </td><td>throw an exception when an error occurs (default: false)</td></tr> * <tr><td>descriptor </td><td>file containing database description</td></tr> * <tr><td>table-set </td><td>table-set name to work with </td></tr> - * <tr><td>output </td><td>mode name for writing values </td></tr> + * <tr><td>output </td><td>mode name for writing values (request-attr)</td></tr> * </table> * * @author <a href="mailto:[EMAIL PROTECTED]">Christian Haul</a> @@ -148,7 +150,8 @@ protected ComponentSelector dbselector; protected Map defaultModeNames = new HashMap( 3 ); protected final HashMap cachedQueryData = new HashMap(); - + protected String pathSeparator = "."; + protected int firstRow = 0; // ======================================================================== // inner helper classes @@ -229,6 +232,16 @@ this.defaultModeNames.put(MODE_OTHERS, (String) this.settings.get("input", inputHint)); this.defaultModeNames.put(MODE_OUTPUT, (String) this.settings.get("output", outputHint)); this.defaultModeNames.put(MODE_AUTOINCR, (String) this.settings.get("autoincrement", databaseHint)); + this.pathSeparator = (String) this.settings.get("path-separator", this.pathSeparator); + String tmp = (String) this.settings.get("first-row",null); + if (tmp != null) { + try { + this.firstRow = Integer.parseInt(tmp); + } catch (NumberFormatException nfe) { + if (getLogger().isWarnEnabled()) + getLogger().warn("problem parsing first row option "+tmp+" using default instead."); + }; + } } } @@ -437,6 +450,8 @@ (this.settings.get("append-row").toString().equalsIgnoreCase("false") || this.settings.get("append-row").toString().equalsIgnoreCase("0")) ) { rowIndex = -1; + } else { + rowIndex = rowIndex + this.firstRow; } if ( this.settings.containsKey("append-table-name") && (this.settings.get("append-table-name").toString().equalsIgnoreCase("false") || @@ -448,7 +463,7 @@ else { return ( tableConf.getAttribute("alias", tableConf.getAttribute("name", null) ) - + "." + columnConf.getAttribute("name",null) + + this.pathSeparator + columnConf.getAttribute("name",null) + ( rowIndex == -1 ? "" : "[" + rowIndex + "]" ) ); } }
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]