RowDataStatic.java
上传用户:sxlinghang
上传日期:2022-07-20
资源大小:1405k
文件大小:5k
源码类别:

数据库编程

开发平台:

Java

  1. /*
  2.    Copyright (C) 2002 MySQL AB
  3.       This program is free software; you can redistribute it and/or modify
  4.       it under the terms of the GNU General Public License as published by
  5.       the Free Software Foundation; either version 2 of the License, or
  6.       (at your option) any later version.
  7.       This program is distributed in the hope that it will be useful,
  8.       but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  10.       GNU General Public License for more details.
  11.       You should have received a copy of the GNU General Public License
  12.       along with this program; if not, write to the Free Software
  13.       Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  14.  */
  15. package com.mysql.jdbc;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. /**
  19.  * Represents an in-memory result set
  20.  *
  21.  * @author dgan
  22.  * @version $Id: RowDataStatic.java,v 1.10.2.3 2003/10/03 16:29:44 mmatthew Exp $
  23.  */
  24. public class RowDataStatic implements RowData {
  25.     private List rows;
  26.     private int index;
  27.     private ResultSet owner;
  28.     /**
  29.      * Creates a new RowDataStatic object.
  30.      *
  31.      * @param rows DOCUMENT ME!
  32.      */
  33.     public RowDataStatic(ArrayList rows) {
  34.         this.index = -1;
  35.         this.rows = rows;
  36.     }
  37.     /**
  38.      * Returns true if we got the last element.
  39.      * @return DOCUMENT ME!
  40.      */
  41.     public boolean isAfterLast() {
  42.         return this.index >= rows.size();
  43.     }
  44.     /**
  45.      * DOCUMENT ME!
  46.      *
  47.      * @param atIndex DOCUMENT ME!
  48.      *
  49.      * @return DOCUMENT ME!
  50.      */
  51.     public byte[][] getAt(int atIndex) {
  52.         if ((atIndex < 0) || (atIndex >= rows.size())) {
  53.             return null;
  54.         } else {
  55.             return (byte[][]) rows.get(atIndex);
  56.         }
  57.     }
  58.     /**
  59.      * Returns if iteration has not occured yet.
  60.      * @return DOCUMENT ME!
  61.      */
  62.     public boolean isBeforeFirst() {
  63.         return (this.index == -1) && (this.rows.size() != 0);
  64.     }
  65.     /**
  66.      * DOCUMENT ME!
  67.      *
  68.      * @param newIndex DOCUMENT ME!
  69.      */
  70.     public void setCurrentRow(int newIndex) {
  71.         this.index = newIndex;
  72.     }
  73. /**
  74.  * @see com.mysql.jdbc.RowData#setOwner(com.mysql.jdbc.ResultSet)
  75.  */
  76. public void setOwner(ResultSet rs) {
  77. this.owner = rs;
  78. }
  79. /**
  80.  * @see com.mysql.jdbc.RowData#getOwner()
  81.  */
  82. public ResultSet getOwner() {
  83. return this.owner;
  84. }
  85.     /**
  86.      * DOCUMENT ME!
  87.      *
  88.      * @return DOCUMENT ME!
  89.      */
  90.     public int getCurrentRowNumber() {
  91.         return this.index;
  92.     }
  93.     /**
  94.      * DOCUMENT ME!
  95.      *
  96.      * @return DOCUMENT ME!
  97.      */
  98.     public boolean isDynamic() {
  99.         return false;
  100.     }
  101.     /**
  102.      * DOCUMENT ME!
  103.      *
  104.      * @return DOCUMENT ME!
  105.      */
  106.     public boolean isEmpty() {
  107.         return rows.size() == 0;
  108.     }
  109.     /**
  110.      * DOCUMENT ME!
  111.      *
  112.      * @return DOCUMENT ME!
  113.      */
  114.     public boolean isFirst() {
  115.         return this.index == 0;
  116.     }
  117.     /**
  118.      * DOCUMENT ME!
  119.      *
  120.      * @return DOCUMENT ME!
  121.      */
  122.     public boolean isLast() {
  123.         //
  124.         // You can never be on the 'last' row of
  125.         // an empty result set
  126.         //
  127.         if (rows.size() == 0) {
  128.             return false;
  129.         }
  130.         return (this.index == (rows.size() - 1));
  131.     }
  132.     /**
  133.      * DOCUMENT ME!
  134.      *
  135.      * @param row DOCUMENT ME!
  136.      */
  137.     public void addRow(byte[][] row) {
  138.         rows.add(row);
  139.     }
  140.     /**
  141.      * Moves to after last.
  142.      */
  143.     public void afterLast() {
  144.         this.index = rows.size();
  145.     }
  146.     /**
  147.      * Moves to before first.
  148.      */
  149.     public void beforeFirst() {
  150.         this.index = -1;
  151.     }
  152.     /**
  153.      * DOCUMENT ME!
  154.      */
  155.     public void beforeLast() {
  156.         this.index = rows.size() - 2;
  157.     }
  158.     /**
  159.      * DOCUMENT ME!
  160.      */
  161.     public void close() {
  162.     }
  163.     /**
  164.      * DOCUMENT ME!
  165.      *
  166.      * @return DOCUMENT ME!
  167.      */
  168.     public boolean hasNext() {
  169.         boolean hasMore = (this.index + 1) < rows.size();
  170.         return hasMore;
  171.     }
  172.     /**
  173.      * DOCUMENT ME!
  174.      *
  175.      * @param rows DOCUMENT ME!
  176.      */
  177.     public void moveRowRelative(int rows) {
  178.         this.index += rows;
  179.     }
  180.     /**
  181.      * DOCUMENT ME!
  182.      *
  183.      * @return DOCUMENT ME!
  184.      */
  185.     public byte[][] next() {
  186.         this.index++;
  187.         if (this.index < rows.size()) {
  188.             return (byte[][]) rows.get(this.index);
  189.         } else {
  190.             return null;
  191.         }
  192.     }
  193.     /**
  194.      * DOCUMENT ME!
  195.      *
  196.      * @param atIndex DOCUMENT ME!
  197.      */
  198.     public void removeRow(int atIndex) {
  199.         rows.remove(atIndex);
  200.     }
  201.     /**
  202.      * DOCUMENT ME!
  203.      *
  204.      * @return DOCUMENT ME!
  205.      */
  206.     public int size() {
  207.         return rows.size();
  208.     }
  209. }