You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-dev@jakarta.apache.org by ho...@apache.org on 2001/12/19 02:48:58 UTC

cvs commit: jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/sql ResultImpl.java RowImpl.java ResultMetaDataImpl.java

horwat      01/12/18 17:48:58

  Modified:    standard/examples/web/sql QueryDirect.jsp QueryIterate.jsp
                        QueryParam.jsp Update.jsp
               standard/src/org/apache/taglibs/standard/tag/common/sql
                        ResultImpl.java RowImpl.java
                        ResultMetaDataImpl.java
  Log:
  Implement 0-based indexing (as opposed to the JDBC 1-based indexing) for Rows and Columns to be consistent with the behavior of other JSTL tags. Modify sql web application to reflect changes.
  
  Revision  Changes    Path
  1.2       +23 -22    jakarta-taglibs/standard/examples/web/sql/QueryDirect.jsp
  
  Index: QueryDirect.jsp
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/examples/web/sql/QueryDirect.jsp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- QueryDirect.jsp	2001/12/12 21:44:18	1.1
  +++ QueryDirect.jsp	2001/12/19 01:48:58	1.2
  @@ -20,6 +20,7 @@
   />
   
   <sql:transaction dataSource="$example">
  +
     <sql:update var="newTable" dataSource="$example">
       create table mytable (
         nameid int not null,
  @@ -37,16 +38,20 @@
     <sql:update var="updateCount" dataSource="$example">
       INSERT INTO mytable VALUES (3,'Paul van Dyk')
     </sql:update>
  -</sql:transaction>
   
  +  <sql:query var="deejays" dataSource="$example">
  +    SELECT * FROM mytable
  +  </sql:query>
   
  -<sql:query var="deejays" dataSource="$example">
  -  SELECT * FROM mytable
  -</sql:query>
  +</sql:transaction>
   
   <hr>
   
   <h2>Using the Row index and Column name</h2>
  +Row[0].get('nameid'): <c:expr value="$deejays.rows[0].get('nameid')" />
  +<br>
  +Row[0].get('name'): <c:expr value="$deejays.rows[0].get('name')" />
  +<br>
   Row[1].get('nameid'): <c:expr value="$deejays.rows[1].get('nameid')" />
   <br>
   Row[1].get('name'): <c:expr value="$deejays.rows[1].get('name')" />
  @@ -55,49 +60,45 @@
   <br>
   Row[2].get('name'): <c:expr value="$deejays.rows[2].get('name')" />
   <br>
  -Row[3].get('nameid'): <c:expr value="$deejays.rows[3].get('nameid')" />
  -<br>
  -Row[3].get('name'): <c:expr value="$deejays.rows[3].get('name')" />
  -<br>
   
   <hr>
   
   <h2>Using the Row index and Column object</h2>
  -Row[1]Cols[1]: <c:expr value="$deejays.rows[1].columns[1]" />
  +Row[0]Cols[0]: <c:expr value="$deejays.rows[0].columns[0]" />
   <br>
  -Row[1]Cols[2]: <c:expr value="$deejays.rows[1].columns[2]" />
  +Row[0]Cols[1]: <c:expr value="$deejays.rows[0].columns[1]" />
   <br>
  -Row[2]Cols[1]: <c:expr value="$deejays.rows[2].columns[1]" />
  +Row[1]Cols[0]: <c:expr value="$deejays.rows[1].columns[0]" />
   <br>
  -Row[2]Cols[2]: <c:expr value="$deejays.rows[2].columns[2]" />
  +Row[1]Cols[1]: <c:expr value="$deejays.rows[1].columns[1]" />
   <br>
  -Row[3]Cols[1]: <c:expr value="$deejays.rows[3].columns[1]" />
  +Row[2]Cols[0]: <c:expr value="$deejays.rows[2].columns[0]" />
   <br>
  -Row[3]Cols[2]: <c:expr value="$deejays.rows[3].columns[2]" />
  +Row[2]Cols[1]: <c:expr value="$deejays.rows[2].columns[1]" />
   <br>
   
   <hr>
   
   <h2>Using the Row and Column indexes</h2>
  -Row[1].get(1): <c:expr value="$deejays.rows[1].get(1)" />
  +Row[0].get(0): <c:expr value="$deejays.rows[0].get(0)" />
   <br>
  -Row[1].get(2): <c:expr value="$deejays.rows[1].get(2)" />
  +Row[0].get(1): <c:expr value="$deejays.rows[0].get(1)" />
   <br>
  -Row[2].get(1): <c:expr value="$deejays.rows[2].get(1)" />
  +Row[1].get(0): <c:expr value="$deejays.rows[1].get(0)" />
   <br>
  -Row[2].get(2): <c:expr value="$deejays.rows[2].get(2)" />
  +Row[1].get(1): <c:expr value="$deejays.rows[1].get(1)" />
   <br>
  -Row[3].get(1): <c:expr value="$deejays.rows[3].get(1)" />
  +Row[2].get(0): <c:expr value="$deejays.rows[2].get(0)" />
   <br>
  -Row[3].get(2): <c:expr value="$deejays.rows[3].get(2)" />
  +Row[2].get(1): <c:expr value="$deejays.rows[2].get(1)" />
   <br>
   
   <hr>
   
   <h2>Getting the MetaData from the Column Object</h2>
  -Col[1]MetaData: <c:expr value="$deejays.metaData.columns[1].name" />
  +Col[0]MetaData: <c:expr value="$deejays.metaData.columns[0].name" />
   <br>
  -Col[2]MetaData: <c:expr value="$deejays.metaData.columns[2].name" />
  +Col[1]MetaData: <c:expr value="$deejays.metaData.columns[1].name" />
   
   <sql:update var="newTable" dataSource="$example">
     drop table mytable
  
  
  
  1.2       +15 -13    jakarta-taglibs/standard/examples/web/sql/QueryIterate.jsp
  
  Index: QueryIterate.jsp
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/examples/web/sql/QueryIterate.jsp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- QueryIterate.jsp	2001/12/12 21:44:18	1.1
  +++ QueryIterate.jsp	2001/12/19 01:48:58	1.2
  @@ -19,6 +19,7 @@
   />
   
   <sql:transaction dataSource="$example">
  +
     <sql:update var="newTable" dataSource="$example">
       create table mytable (
         nameid int not null,
  @@ -26,7 +27,6 @@
         constraint pk_mytable primary key (nameid)
       )
     </sql:update>
  -</sql:transaction>
   
     <sql:update var="updateCount" dataSource="$example">
       INSERT INTO mytable VALUES (1,'Paul Oakenfold')
  @@ -39,16 +39,18 @@
     </sql:update>
   
   
  -<sql:query var="deejays" dataSource="$example">
  -  SELECT * FROM mytable
  -</sql:query>
  +  <sql:query var="deejays" dataSource="$example">
  +    SELECT * FROM mytable
  +  </sql:query>
  +
  +</sql:transaction>
   
   <hr>
   
   <h2>Iterating on each Row using the MetaData</h2>
   
   <table border="1">
  -  <c:forEach var="rows" begin="1" items="$deejays.rows">
  +  <c:forEach var="rows" items="$deejays.rows">
       <tr>
         <td> id: <c:expr value="$rows.get('nameid')"/> </td>
         <td> name: <c:expr value="$rows.get('name')"/> </td>
  @@ -60,7 +62,7 @@
   
   <h2>Iterating on each Column getting the MetaData</h2>
   
  -<c:forEach var="metaData" begin="1" items="$deejays.metaData.columns">
  +<c:forEach var="metaData" items="$deejays.metaData.columns">
     metaData: <c:expr value="$metaData.name"/> <br>
   </c:forEach>
   
  @@ -69,9 +71,9 @@
   <h2>Iterating over each Row of the result</h2>
   
   <table border="1">
  -  <c:forEach var="rows" begin="1" items="$deejays.rows">
  +  <c:forEach var="rows" items="$deejays.rows">
       <tr>
  -      <c:forEach var="column" begin="1" items="$rows.columns">
  +      <c:forEach var="column" items="$rows.columns">
           <td><c:expr value="$column"/></td>
         </c:forEach>
       </tr>
  @@ -83,8 +85,8 @@
   <h2>Iterating over Columns without knowing the name or index</h2>
   
   <table border="1">
  -  <c:forEach var="rows" begin="1" items="$deejays.rows">
  -      <c:forEach var="column" begin="1" items="$rows.columns">
  +  <c:forEach var="rows" items="$deejays.rows">
  +      <c:forEach var="column" items="$rows.columns">
     <tr>
           <td>Name: <c:expr value="$column.name"/></td>
           <td>Value: <c:expr value="$column"/></td>
  @@ -99,13 +101,13 @@
   
   <table border="1">
     <tr>
  -    <c:forEach var="metaData" begin="1" items="$deejays.metaData.columns">
  +    <c:forEach var="metaData" items="$deejays.metaData.columns">
         <th><c:expr value="$metaData.name"/> </th>
       </c:forEach>
     </tr>
  -  <c:forEach var="rows" begin="1" items="$deejays.rows">
  +  <c:forEach var="rows" items="$deejays.rows">
       <tr>
  -      <c:forEach var="column" begin="1" items="$rows.columns">
  +      <c:forEach var="column" items="$rows.columns">
           <td><c:expr value="$column"/></td>
         </c:forEach>
       </tr>
  
  
  
  1.2       +4 -3      jakarta-taglibs/standard/examples/web/sql/QueryParam.jsp
  
  Index: QueryParam.jsp
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/examples/web/sql/QueryParam.jsp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- QueryParam.jsp	2001/12/12 21:44:18	1.1
  +++ QueryParam.jsp	2001/12/19 01:48:58	1.2
  @@ -23,6 +23,7 @@
   />
   
   <sql:transaction dataSource="$example">
  +
     <sql:update var="newTable" dataSource="$example">
       create table mytable (
         nameid int not null,
  @@ -46,14 +47,14 @@
         <sql:param value="$newName"/>
     </sql:update>
   
  -</sql:transaction>
  -
   <sql:query var="deejay" dataSource="$example">
     SELECT * FROM mytable
   </sql:query>
   
  +</sql:transaction>
  +
   <table border="1">
  -  <c:forEach var="rows" begin="1" items="$deejay.rows">
  +  <c:forEach var="rows" items="$deejay.rows">
       <tr>
         <td><c:expr value="$rows.get('nameid')"/></td>
         <td><c:expr value="$rows.get('name')"/></td>
  
  
  
  1.2       +12 -10    jakarta-taglibs/standard/examples/web/sql/Update.jsp
  
  Index: Update.jsp
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/examples/web/sql/Update.jsp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Update.jsp	2001/12/12 21:44:18	1.1
  +++ Update.jsp	2001/12/19 01:48:58	1.2
  @@ -21,6 +21,7 @@
   <hr>
   
   <sql:transaction dataSource="$example">
  +
     <sql:update var="newTable" dataSource="$example">
       create table mytable (
         nameid int not null,
  @@ -28,7 +29,6 @@
         constraint pk_mytable primary key (nameid)
       )
     </sql:update>
  -</sql:transaction>
   
   <h2>Inserting three rows into table</h2>
     <sql:update var="updateCount" dataSource="$example">
  @@ -44,20 +44,22 @@
   <p>DONE: Inserting three rows into table</p>
   
   
  -<sql:query var="deejays" dataSource="$example">
  -  SELECT * FROM mytable
  -</sql:query>
  +  <sql:query var="deejays" dataSource="$example">
  +    SELECT * FROM mytable
  +  </sql:query>
  +
  +</sql:transaction>
   
   
   <table border="1">
     <tr>
  -    <c:forEach var="metaData" begin="1" items="$deejays.metaData.columns">
  +    <c:forEach var="metaData" items="$deejays.metaData.columns">
         <th><c:expr value="$metaData.name"/> </th>
       </c:forEach>
     </tr>
  -  <c:forEach var="rows" begin="1" items="$deejays.rows">
  +  <c:forEach var="rows" items="$deejays.rows">
       <tr>
  -      <c:forEach var="column" begin="1" items="$rows.columns">
  +      <c:forEach var="column" items="$rows.columns">
           <td><c:expr value="$column"/></td>
         </c:forEach>
       </tr>
  @@ -80,13 +82,13 @@
   
   <table border="1">
     <tr>
  -    <c:forEach var="metaData" begin="1" items="$deejays.metaData.columns">
  +    <c:forEach var="metaData" items="$deejays.metaData.columns">
         <th><c:expr value="$metaData.name"/> </th>
       </c:forEach>
     </tr>
  -  <c:forEach var="rows" begin="1" items="$deejays.rows">
  +  <c:forEach var="rows" items="$deejays.rows">
       <tr>
  -      <c:forEach var="column" begin="1" items="$rows.columns">
  +      <c:forEach var="column" items="$rows.columns">
           <td><c:expr value="$column"/></td>
         </c:forEach>
       </tr>
  
  
  
  1.2       +7 -4      jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/sql/ResultImpl.java
  
  Index: ResultImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/sql/ResultImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ResultImpl.java	2001/12/11 22:13:51	1.1
  +++ ResultImpl.java	2001/12/19 01:48:58	1.2
  @@ -66,6 +66,7 @@
    * instance for each column in the row. 
    *
    * @author Hans Bergsten
  + * @author Justyna Horwat
    */
   
   public class ResultImpl implements Result {
  @@ -96,7 +97,7 @@
   	while (rs.next()) {
               beginRow++;
               if (beginRow >= startRow) {
  -                Column[] columns = new ColumnImpl[noOfColumns + 1];
  +                Column[] columns = new ColumnImpl[noOfColumns];
   
   	        // JDBC uses 1 as the lowest index!
   	        for (int i = 1; i <= noOfColumns; i++) {
  @@ -104,7 +105,8 @@
   		    if (rs.wasNull()) {
   		        value = null;
   		    }
  -                    columns[i] = new ColumnImpl(value, resultMD.get(i));
  +                    // 0-based indexing to be consistent w/JSTL 
  +                    columns[i-1] = new ColumnImpl(value, resultMD.get(i-1));
   	        }
               Row currentRow = new RowImpl(columns);
               rows.add(currentRow);
  @@ -123,12 +125,13 @@
               return null;
           }
   
  -        Row[] rowArray = new Row[rows.size() + 1];
  +        Row[] rowArray = new Row[rows.size()];
           int index = 0;
   	Iterator i = rows.iterator();
   	while (i.hasNext()) {
  -            index++;
  +            // 0-based indexing to be consistent w/JSTL 
               rowArray[index] = (Row) i.next();
  +            index++;
   	}
           return rowArray;
       }
  
  
  
  1.2       +3 -2      jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/sql/RowImpl.java
  
  Index: RowImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/sql/RowImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RowImpl.java	2001/12/11 22:13:51	1.1
  +++ RowImpl.java	2001/12/19 01:48:58	1.2
  @@ -64,6 +64,7 @@
    * Used by the <code>ResultImpl</code> to cache the result set </p>
    *
    * @author Hans Bergsten
  + * @author Justyna Horwat
    */
   
   public class RowImpl implements Row {
  @@ -87,7 +88,7 @@
        * @return the Column object of the named column
        */
       public Column get(String name) {
  -	for (int i=1; i < columns.length; i++) {
  +	for (int i=0; i < columns.length; i++) {
               try {
   	        if (name.equalsIgnoreCase(columns[i].getName())) {
   	            return columns[i];
  @@ -107,7 +108,7 @@
        * @return the Column object of the indexed column
        */
       public Column get(int index) {
  -        if ((index > 0) && (index <= columns.length)) {
  +        if ((index >= 0) && (index < columns.length)) {
   	    return columns[index];
           }
           return null;
  
  
  
  1.2       +6 -5      jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/sql/ResultMetaDataImpl.java
  
  Index: ResultMetaDataImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-taglibs/standard/src/org/apache/taglibs/standard/tag/common/sql/ResultMetaDataImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ResultMetaDataImpl.java	2001/12/11 22:13:51	1.1
  +++ ResultMetaDataImpl.java	2001/12/19 01:48:58	1.2
  @@ -64,6 +64,7 @@
    * of this class are used by the <code>ResultImpl</code> instances.</p>
    *
    * @author Hans Bergsten
  + * @author Justyna Horwat
    */
   public class ResultMetaDataImpl implements ResultMetaData {
       private ColumnMetaData[] columnMD;
  @@ -76,8 +77,7 @@
        */
       public ResultMetaDataImpl (ResultSetMetaData rsmd) throws SQLException {
   	int noOfColumns = rsmd.getColumnCount();
  -	// JDBC uses 1 as the lowest index!
  -	columnMD = new ColumnMetaData[noOfColumns + 1];
  +	columnMD = new ColumnMetaData[noOfColumns];
   	getMetaDataCache(rsmd);
       }
   
  @@ -90,7 +90,7 @@
        * @return the ColumnMetaData object of the named column
        */
       public ColumnMetaData get(String name) {
  -        for (int i = 1; i <= columnMD.length; i++) {
  +        for (int i = 0; i < columnMD.length; i++) {
               try {
   	        if (name.equals(columnMD[i].getName())) {
   	            return columnMD[i];
  @@ -110,7 +110,7 @@
        * @return the ColumnMetaData object of the indexed column
        */
       public ColumnMetaData get(int index) {
  -        if ((index > 0) && (index <= columnMD.length)) {
  +        if ((index >= 0) && (index < columnMD.length)) {
               return (ColumnMetaData) columnMD[index];
           }
           return null;
  @@ -256,7 +256,8 @@
   	    catch (SQLException e) {
   		((ColumnMetaDataImpl)md).setClassNameException(e);
   	    }
  -	    columnMD[i] = md;
  +            // 0-based indexing to be consistent w/JSTL
  +	    columnMD[i-1] = md;
   	}
   	return;
       }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>