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]

Reply via email to