1. /*
  2. * @(#)SerialArray.java 1.9 04/05/29
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package javax.sql.rowset.serial;
  8. import java.sql.*;
  9. import java.io.*;
  10. import java.util.Map;
  11. import java.net.URL;
  12. /**
  13. * A serialized version of an <code>Array</code>
  14. * object, which is the mapping in the Java programming language of an SQL
  15. * <code>ARRAY</code> value.
  16. * <P>
  17. * The <code>SerialArray</code> class provides a constructor for creating
  18. * a <code>SerialArray</code> instance from an <code>Array</code> object,
  19. * methods for getting the base type and the SQL name for the base type, and
  20. * methods for copying all or part of a <code>SerialArray</code> object.
  21. * <P>
  22. * Note: In order for this class to function correctly, a connection to the
  23. * data source
  24. * must be available in order for the SQL <code>Array</code> object to be
  25. * materialized (have all of its elements brought to the client server)
  26. * if necessary. At this time, logical pointers to the data in the data source,
  27. * such as locators, are not currently supported.
  28. */
  29. public class SerialArray implements Array, Serializable, Cloneable {
  30. /**
  31. * A serialized array in which each element is an <code>Object</code>
  32. * in the Java programming language that represents an element
  33. * in the SQL <code>ARRAY</code> value.
  34. * @serial
  35. */
  36. private Object[] elements;
  37. /**
  38. * The SQL type of the elements in this <code>SerialArray</code> object. The
  39. * type is expressed as one of the constants from the class
  40. * <code>java.sql.Types</code>.
  41. * @serial
  42. */
  43. private int baseType;
  44. /**
  45. * The type name used by the DBMS for the elements in the SQL <code>ARRAY</code>
  46. * value that this <code>SerialArray</code> object represents.
  47. * @serial
  48. */
  49. private String baseTypeName;
  50. /**
  51. * The number of elements in this <code>SerialArray</code> object, which
  52. * is also the number of elements in the SQL <code>ARRAY</code> value
  53. * that this <code>SerialArray</code> object represents.
  54. * @serial
  55. */
  56. private int len;
  57. /**
  58. * Constructs a new <code>SerialArray</code> object from the given
  59. * <code>Array</code> object, using the given type map for the custom
  60. * mapping of each element when the elements are SQL UDTs.
  61. * <P>
  62. * This method does custom mapping if the array elements are a UDT
  63. * and the given type map has an entry for that UDT.
  64. * Custom mapping is recursive,
  65. * meaning that if, for instance, an element of an SQL structured type
  66. * is an SQL structured type that itself has an element that is an SQL
  67. * structured type, each structured type that has a custom mapping will be
  68. * mapped according to the given type map.
  69. * <P>
  70. * The new <code>SerialArray</code>
  71. * object contains the same elements as the <code>Array</code> object
  72. * from which it is built, except when the base type is the SQL type
  73. * <code>STRUCT</code>, <code>ARRAY</code>, <code>BLOB</code>,
  74. * <code>CLOB</code>, <code>DATALINK</code> or <code>JAVA_OBJECT</code>.
  75. * In this case, each element in the new
  76. * <code>SerialArray</code> object is the appropriate serialized form,
  77. * that is, a <code>SerialStruct</code>, <code>SerialArray</code>,
  78. * <code>SerialBlob</code>, <code>SerialClob</code>,
  79. * <code>SerialDatalink</code>, or <code>SerialJavaObject</code> object.
  80. * <P>
  81. * Note: (1) The <code>Array</code> object from which a <code>SerialArray</code>
  82. * object is created must have materialized the SQL <code>ARRAY</code> value's
  83. * data on the client before it is passed to the constructor. Otherwise,
  84. * the new <code>SerialArray</code> object will contain no data.
  85. * <p>
  86. * Note: (2) If the <code>Array</code> contains <code>java.sql.Types.JAVA_OBJECT</code>
  87. * types, the <code>SerialJavaObject</code> constructor is called where checks
  88. * are made to ensure this object is serializable.
  89. * <p>
  90. * Note: (3) The <code>Array</code> object supplied to this constructor cannot
  91. * return <code>null</code> for any <code>Array.getArray()</code> methods.
  92. * <code>SerialArray</code> cannot serialize null array values.
  93. *
  94. *
  95. * @param array the <code>Array</code> object to be serialized
  96. * @param map a <code>java.util.Map</code> object in which
  97. * each entry consists of 1) a <code>String</code> object
  98. * giving the fully qualified name of a UDT (an SQL structured type or
  99. * distinct type) and 2) the
  100. * <code>Class</code> object for the <code>SQLData</code> implementation
  101. * that defines how the UDT is to be mapped. The <i>map</i>
  102. * parameter does not have any effect for <code>Blob</code>,
  103. * <code>Clob</code>, <code>DATALINK</code>, or
  104. * <code>JAVA_OBJECT</code> types.
  105. * @throws SerialException if an error occurs serializing the
  106. * <code>Array</code> object
  107. * @throws SQLException if a database access error occurs or if the
  108. * <i>array</i> or the <i>map</i> values are <code>null</code>
  109. */
  110. public SerialArray(Array array, Map<String,Class<?>> map)
  111. throws SerialException, SQLException
  112. {
  113. if ((array == null) || (map == null)) {
  114. throw new SQLException("Cannot instantiate a SerialArray " +
  115. "object with null parameters");
  116. }
  117. if ((elements = (Object[])array.getArray()) == null) {
  118. throw new SQLException("Invalid Array object. Calls to Array.getArray() " +
  119. "return null value which cannot be serialized");
  120. }
  121. elements = (Object[])array.getArray(map);
  122. baseType = array.getBaseType();
  123. baseTypeName = array.getBaseTypeName();
  124. len = elements.length;
  125. switch (baseType) {
  126. case java.sql.Types.STRUCT:
  127. for (int i = 0; i < len; i++) {
  128. elements[i] = new SerialStruct((Struct)elements[i], map);
  129. }
  130. break;
  131. case java.sql.Types.ARRAY:
  132. for (int i = 0; i < len; i++) {
  133. elements[i] = new SerialArray((Array)elements[i], map);
  134. }
  135. break;
  136. case java.sql.Types.BLOB:
  137. for (int i = 0; i < len; i++) {
  138. elements[i] = new SerialBlob((Blob)elements[i]);
  139. }
  140. break;
  141. case java.sql.Types.CLOB:
  142. for (int i = 0; i < len; i++) {
  143. elements[i] = new SerialClob((Clob)elements[i]);
  144. }
  145. break;
  146. case java.sql.Types.DATALINK:
  147. for (int i = 0; i < len; i++) {
  148. elements[i] = new SerialDatalink((URL)elements[i]);
  149. }
  150. break;
  151. case java.sql.Types.JAVA_OBJECT:
  152. for (int i = 0; i < len; i++) {
  153. elements[i] = new SerialJavaObject((Object)elements[i]);
  154. }
  155. default:
  156. ;
  157. }
  158. }
  159. /**
  160. * Constructs a new <code>SerialArray</code> object from the given
  161. * <code>Array</code> object.
  162. * <P>
  163. * This constructor does not do custom mapping. If the base type of the array
  164. * is an SQL structured type and custom mapping is desired, the constructor
  165. * <code>SerialArray(Array array, Map map)</code> should be used.
  166. * <P>
  167. * The new <code>SerialArray</code>
  168. * object contains the same elements as the <code>Array</code> object
  169. * from which it is built, except when the base type is the SQL type
  170. * <code>BLOB</code>,
  171. * <code>CLOB</code>, <code>DATALINK</code> or <code>JAVA_OBJECT</code>.
  172. * In this case, each element in the new
  173. * <code>SerialArray</code> object is the appropriate serialized form,
  174. * that is, a <code>SerialBlob</code>, <code>SerialClob</code>,
  175. * <code>SerialDatalink</code>, or <code>SerialJavaObject</code> object.
  176. * <P>
  177. * Note: (1) The <code>Array</code> object from which a <code>SerialArray</code>
  178. * object is created must have materialized the SQL <code>ARRAY</code> value's
  179. * data on the client before it is passed to the constructor. Otherwise,
  180. * the new <code>SerialArray</code> object will contain no data.
  181. * <p>
  182. * Note: (2) The <code>Array</code> object supplied to this constructor cannot
  183. * return <code>null</code> for any <code>Array.getArray()</code> methods.
  184. * <code>SerialArray</code> cannot serialize <code>null</code> array values.
  185. *
  186. * @param array the <code>Array</code> object to be serialized
  187. * @throws SerialException if an error occurs serializing the
  188. * <code>Array</code> object
  189. * @throws SQLException if a database access error occurs or the
  190. * <i>array</i> parameter is <code>null</code>.
  191. */
  192. public SerialArray(Array array) throws SerialException, SQLException {
  193. if (array == null) {
  194. throw new SQLException("Cannot instantiate a SerialArray " +
  195. "object with a null Array object");
  196. }
  197. if ((elements = (Object[])array.getArray()) == null) {
  198. throw new SQLException("Invalid Array object. Calls to Array.getArray() " +
  199. "return null value which cannot be serialized");
  200. }
  201. //elements = (Object[])array.getArray();
  202. baseType = array.getBaseType();
  203. baseTypeName = array.getBaseTypeName();
  204. len = elements.length;
  205. switch (baseType) {
  206. case java.sql.Types.BLOB:
  207. for (int i = 0; i < len; i++) {
  208. elements[i] = new SerialBlob((Blob)elements[i]);
  209. }
  210. break;
  211. case java.sql.Types.CLOB:
  212. for (int i = 0; i < len; i++) {
  213. elements[i] = new SerialClob((Clob)elements[i]);
  214. }
  215. break;
  216. case java.sql.Types.DATALINK:
  217. for (int i = 0; i < len; i++) {
  218. elements[i] = new SerialDatalink((URL)elements[i]);
  219. }
  220. break;
  221. case java.sql.Types.JAVA_OBJECT:
  222. for (int i = 0; i < len; i++) {
  223. elements[i] = new SerialJavaObject((Object)elements[i]);
  224. }
  225. default:
  226. ;
  227. }
  228. }
  229. /**
  230. * Returns a new array that is a copy of this <code>SerialArray</code>
  231. * object.
  232. *
  233. * @return a copy of this <code>SerialArray</code> object as an
  234. * <code>Object</code> in the Java programming language
  235. * @throws SerialException if an error occurs retrieving a copy of
  236. * this <code>SerialArray</code> object
  237. */
  238. public Object getArray() throws SerialException {
  239. Object dst = new Object[len];
  240. System.arraycopy((Object)elements, 0, dst, 0, len);
  241. return dst;
  242. }
  243. //[if an error occurstype map used??]
  244. /**
  245. * Returns a new array that is a copy of this <code>SerialArray</code>
  246. * object, using the given type map for the custom
  247. * mapping of each element when the elements are SQL UDTs.
  248. * <P>
  249. * This method does custom mapping if the array elements are a UDT
  250. * and the given type map has an entry for that UDT.
  251. * Custom mapping is recursive,
  252. * meaning that if, for instance, an element of an SQL structured type
  253. * is an SQL structured type that itself has an element that is an SQL
  254. * structured type, each structured type that has a custom mapping will be
  255. * mapped according to the given type map.
  256. *
  257. * @param map a <code>java.util.Map</code> object in which
  258. * each entry consists of 1) a <code>String</code> object
  259. * giving the fully qualified name of a UDT and 2) the
  260. * <code>Class</code> object for the <code>SQLData</code> implementation
  261. * that defines how the UDT is to be mapped
  262. * @return a copy of this <code>SerialArray</code> object as an
  263. * <code>Object</code> in the Java programming language
  264. * @throws SerialException if an error occurs
  265. */
  266. public Object getArray(Map<String, Class<?>> map) throws SerialException {
  267. Object dst[] = new Object[len];
  268. System.arraycopy((Object)elements, 0, dst, 0, len);
  269. return dst;
  270. }
  271. /**
  272. * Returns a new array that is a copy of a slice
  273. * of this <code>SerialArray</code> object, starting with the
  274. * element at the given index and containing the given number
  275. * of consecutive elements.
  276. *
  277. * @param index the index into this <code>SerialArray</code> object
  278. * of the first element to be copied;
  279. * the index of the first element is <code>0</code>
  280. * @param count the number of consecutive elements to be copied, starting
  281. * at the given index
  282. * @return a copy of the designated elements in this <code>SerialArray</code>
  283. * object as an <code>Object</code> in the Java programming language
  284. * @throws SerialException if an error occurs
  285. */
  286. public Object getArray(long index, int count) throws SerialException {
  287. Object dst = new Object[count];
  288. System.arraycopy((Object)elements, (int)index, dst, 0, count);
  289. return dst;
  290. }
  291. /**
  292. * Returns a new array that is a copy of a slice
  293. * of this <code>SerialArray</code> object, starting with the
  294. * element at the given index and containing the given number
  295. * of consecutive elements.
  296. * <P>
  297. * This method does custom mapping if the array elements are a UDT
  298. * and the given type map has an entry for that UDT.
  299. * Custom mapping is recursive,
  300. * meaning that if, for instance, an element of an SQL structured type
  301. * is an SQL structured type that itself has an element that is an SQL
  302. * structured type, each structured type that has a custom mapping will be
  303. * mapped according to the given type map.
  304. *
  305. * @param index the index into this <code>SerialArray</code> object
  306. * of the first element to be copied; the index of the
  307. * first element in the array is <code>0</code>
  308. * @param count the number of consecutive elements to be copied, starting
  309. * at the given index
  310. * @param map a <code>java.util.Map</code> object in which
  311. * each entry consists of 1) a <code>String</code> object
  312. * giving the fully qualified name of a UDT and 2) the
  313. * <code>Class</code> object for the <code>SQLData</code> implementation
  314. * that defines how the UDT is to be mapped
  315. * @return a copy of the designated elements in this <code>SerialArray</code>
  316. * object as an <code>Object</code> in the Java programming language
  317. * @throws SerialException if an error occurs
  318. */
  319. public Object getArray(long index, int count, Map<String,Class<?>> map)
  320. throws SerialException
  321. {
  322. Object dst = new Object[count];
  323. System.arraycopy((Object)elements, (int)index, dst, 0, count);
  324. return dst;
  325. }
  326. /**
  327. * Retrieves the SQL type of the elements in this <code>SerialArray</code>
  328. * object. The <code>int</code> returned is one of the constants in the class
  329. * <code>java.sql.Types</code>.
  330. *
  331. * @return one of the constants in <code>java.sql.Types</code>, indicating
  332. * the SQL type of the elements in this <code>SerialArray</code> object
  333. * @throws SerialException if an error occurs
  334. */
  335. public int getBaseType() throws SerialException {
  336. return baseType;
  337. }
  338. /**
  339. * Retrieves the DBMS-specific type name for the elements in this
  340. * <code>SerialArray</code> object.
  341. *
  342. * @return the SQL type name used by the DBMS for the base type of this
  343. * <code>SerialArray</code> object
  344. * @throws SerialException if an error occurs
  345. */
  346. public String getBaseTypeName() throws SerialException {
  347. return baseTypeName;
  348. }
  349. /**
  350. * Retrieves a <code>ResultSet</code> object holding the elements of
  351. * the subarray that starts at
  352. * index <i>index</i> and contains up to <i>count</i> successive elements.
  353. * This method uses the connection's type map to map the elements of
  354. * the array if the map contains
  355. * an entry for the base type. Otherwise, the standard mapping is used.
  356. *
  357. * @param index the index into this <code>SerialArray</code> object
  358. * of the first element to be copied; the index of the
  359. * first element in the array is <code>0</code>
  360. * @param count the number of consecutive elements to be copied, starting
  361. * at the given index
  362. * @return a <code>ResultSet</code> object containing the designated
  363. * elements in this <code>SerialArray</code> object, with a
  364. * separate row for each element
  365. * @throws SerialException, which in turn throws an
  366. * <code>UnsupportedOperationException</code>, if this method is called
  367. */
  368. public ResultSet getResultSet(long index, int count) throws SerialException {
  369. throw new UnsupportedOperationException();
  370. }
  371. /**
  372. *
  373. * Retrieves a <code>ResultSet</code> object that contains all of
  374. * the elements of the SQL <code>ARRAY</code>
  375. * value represented by this <code>SerialArray</code> object. This method uses
  376. * the specified map for type map customizations unless the base type of the
  377. * array does not match a user-defined type (UDT) in <i>map</code>, in
  378. * which case it uses the
  379. * standard mapping. This version of the method <code>getResultSet</code>
  380. * uses either the given type map or the standard mapping; it never uses the
  381. * type map associated with the connection.
  382. *
  383. * @param map a <code>java.util.Map</code> object in which
  384. * each entry consists of 1) a <code>String</code> object
  385. * giving the fully qualified name of a UDT and 2) the
  386. * <code>Class</code> object for the <code>SQLData</code> implementation
  387. * that defines how the UDT is to be mapped
  388. * @return a <code>ResultSet</code> object containing all of the
  389. * elements in this <code>SerialArray</code> object, with a
  390. * separate row for each element
  391. * @throws SerialException, which in turn throws an
  392. * <code>UnsupportedOperationException</code>, if this method is called
  393. */
  394. public ResultSet getResultSet(Map<String, Class<?>> map)
  395. throws SerialException
  396. {
  397. throw new UnsupportedOperationException();
  398. }
  399. /**
  400. * Retrieves a <code>ResultSet</code> object that contains all of
  401. * the elements in the <code>ARRAY</code> value that this
  402. * <code>SerialArray</code> object represents.
  403. * If appropriate, the elements of the array are mapped using the connection's
  404. * type map; otherwise, the standard mapping is used.
  405. *
  406. * @return a <code>ResultSet</code> object containing all of the
  407. * elements in this <code>SerialArray</code> object, with a
  408. * separate row for each element
  409. * @throws SerialException if called, which in turn throws an
  410. * <code>UnsupportedOperationException</code>, if this method is called
  411. */
  412. public ResultSet getResultSet() throws SerialException {
  413. throw new UnsupportedOperationException();
  414. }
  415. /**
  416. * Retrieves a result set holding the elements of the subarray that starts at
  417. * Retrieves a <code>ResultSet</code> object that contains a subarray of the
  418. * elements in this <code>SerialArray</code> object, starting at
  419. * index <i>index</i> and containing up to <i>count</i> successive
  420. * elements. This method uses
  421. * the specified map for type map customizations unless the base type of the
  422. * array does not match a user-defined type (UDT) in <i>map</i>, in
  423. * which case it uses the
  424. * standard mapping. This version of the method <code>getResultSet</code> uses
  425. * either the given type map or the standard mapping; it never uses the type
  426. * map associated with the connection.
  427. *
  428. * @param index the index into this <code>SerialArray</code> object
  429. * of the first element to be copied; the index of the
  430. * first element in the array is <code>0</code>
  431. * @param count the number of consecutive elements to be copied, starting
  432. * at the given index
  433. * @param map a <code>java.util.Map</code> object in which
  434. * each entry consists of 1) a <code>String</code> object
  435. * giving the fully qualified name of a UDT and 2) the
  436. * <code>Class</code> object for the <code>SQLData</code> implementation
  437. * that defines how the UDT is to be mapped
  438. * @return a <code>ResultSet</code> object containing the designated
  439. * elements in this <code>SerialArray</code> object, with a
  440. * separate row for each element
  441. * @throws SerialException if called, which in turn throws an
  442. * <code>UnsupportedOperationException</code>
  443. */
  444. public ResultSet getResultSet(long index, int count,
  445. Map<String,Class<?>> map)
  446. throws SerialException
  447. {
  448. throw new UnsupportedOperationException();
  449. }
  450. /**
  451. * Internal ResultSet implementation to serve getResultSet(XXX) methods.
  452. *
  453. * Suggest we return a READ_ONLY array to start. We can migrate to a updatable
  454. * ResultSet later.
  455. */
  456. private class InternalResultSetImpl implements java.sql.ResultSet {
  457. /**
  458. * Signature coverage for internal ResultSet implementation.
  459. */
  460. public boolean absolute(int row) throws SQLException {
  461. return false;
  462. }
  463. /**
  464. * Signature coverage for internal ResultSet implementation.
  465. */
  466. public void afterLast() throws SQLException {
  467. }
  468. /**
  469. * Signature coverage for internal ResultSet implementation.
  470. */
  471. public void beforeFirst() throws SQLException {
  472. }
  473. /**
  474. * Signature coverage for internal ResultSet implementation.
  475. */
  476. public void cancelRowUpdates() throws SQLException {
  477. }
  478. /**
  479. * Signature coverage for internal ResultSet implementation.
  480. */
  481. public void clearWarnings() throws SQLException {
  482. }
  483. /**
  484. * Signature coverage for internal ResultSet implementation.
  485. */
  486. public void close() throws SQLException {
  487. }
  488. /**
  489. * Signature coverage for internal ResultSet implementation.
  490. */
  491. public void deleteRow() throws SQLException {
  492. }
  493. /**
  494. * Signature coverage for internal ResultSet implementation.
  495. */
  496. public int findColumn(String columnName) throws SQLException {
  497. return 0;
  498. }
  499. /**
  500. * Signature coverage for internal ResultSet implementation.
  501. */
  502. public boolean first() throws SQLException {
  503. return false;
  504. }
  505. /**
  506. * Signature coverage for internal ResultSet implementation.
  507. */
  508. public Array getArray(int i) throws SQLException {
  509. return null;
  510. }
  511. /**
  512. * Signature coverage for internal ResultSet implementation.
  513. */
  514. public Array getArray(String colName) throws SQLException {
  515. return null;
  516. }
  517. /**
  518. * Signature coverage for internal ResultSet implementation.
  519. */
  520. public java.io.InputStream getAsciiStream(String columnName) throws SQLException {
  521. return null;
  522. }
  523. /**
  524. * Signature coverage for internal ResultSet implementation.
  525. */
  526. public java.io.InputStream getAsciiStream(int columnIndex) throws SQLException {
  527. return null;
  528. }
  529. /**
  530. * Signature coverage for internal ResultSet implementation.
  531. */
  532. public java.math.BigDecimal getBigDecimal(String columnName) throws SQLException {
  533. return null;
  534. }
  535. /**
  536. * Signature coverage for internal ResultSet implementation.
  537. */
  538. public java.math.BigDecimal getBigDecimal(int columnIndex) throws SQLException {
  539. return null;
  540. }
  541. /**
  542. * Signature coverage for internal ResultSet implementation.
  543. */
  544. public java.math.BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException {
  545. return null;
  546. }
  547. /**
  548. * Signature coverage for internal ResultSet implementation.
  549. */
  550. public java.math.BigDecimal getBigDecimal(String columnName, int scale) throws SQLException {
  551. return null;
  552. }
  553. /**
  554. * Signature coverage for internal ResultSet implementation.
  555. */
  556. public java.io.InputStream getBinaryStream(int columnIndex) throws SQLException {
  557. return null;
  558. }
  559. /**
  560. * Signature coverage for internal ResultSet implementation.
  561. */
  562. public java.io.InputStream getBinaryStream(String columnName) throws SQLException {
  563. return null;
  564. }
  565. /**
  566. * Signature coverage for internal ResultSet implementation.
  567. */
  568. public Blob getBlob(int i) throws SQLException {
  569. return null;
  570. }
  571. /**
  572. * Signature coverage for internal ResultSet implementation.
  573. */
  574. public Blob getBlob(String colName) throws SQLException {
  575. return null;
  576. }
  577. /**
  578. * Signature coverage for internal ResultSet implementation.
  579. */
  580. public boolean getBoolean(int columnIndex) throws SQLException {
  581. return false;
  582. }
  583. /**
  584. * Signature coverage for internal ResultSet implementation.
  585. */
  586. public boolean getBoolean(String columnName) throws SQLException {
  587. return false;
  588. }
  589. /**
  590. * Signature coverage for internal ResultSet implementation.
  591. */
  592. public byte getByte(int columnIndex) throws SQLException {
  593. return 0;
  594. }
  595. /**
  596. * Signature coverage for internal ResultSet implementation.
  597. */
  598. public byte getByte(String columnName) throws SQLException {
  599. return 0;
  600. }
  601. /**
  602. * Signature coverage for internal ResultSet implementation.
  603. */
  604. public byte[] getBytes(int columnIndex) throws SQLException {
  605. return null;
  606. }
  607. /**
  608. * Signature coverage for internal ResultSet implementation.
  609. */
  610. public byte[] getBytes(String columnName) throws SQLException {
  611. return null;
  612. }
  613. /**
  614. * Signature coverage for internal ResultSet implementation.
  615. */
  616. public java.io.Reader getCharacterStream(int columnIndex) throws SQLException {
  617. return null;
  618. }
  619. /**
  620. * Signature coverage for internal ResultSet implementation.
  621. */
  622. public java.io.Reader getCharacterStream(String columnName) throws SQLException {
  623. return null;
  624. }
  625. /**
  626. * Signature coverage for internal ResultSet implementation.
  627. */
  628. public Clob getClob(int i) throws SQLException {
  629. return null;
  630. }
  631. /**
  632. * Signature coverage for internal ResultSet implementation.
  633. */
  634. public Clob getClob(String colName) throws SQLException {
  635. return null;
  636. }
  637. /**
  638. * Signature coverage for internal ResultSet implementation.
  639. */
  640. public int getConcurrency() throws SQLException {
  641. return 0;
  642. }
  643. /**
  644. * Signature coverage for internal ResultSet implementation.
  645. */
  646. public String getCursorName() throws SQLException {
  647. return null;
  648. }
  649. /**
  650. * Signature coverage for internal ResultSet implementation.
  651. */
  652. public java.sql.Date getDate(int columnIndex) throws SQLException {
  653. return null;
  654. }
  655. /**
  656. * Signature coverage for internal ResultSet implementation.
  657. */
  658. public java.sql.Date getDate(String columnName) throws SQLException {
  659. return null;
  660. }
  661. /**
  662. * Signature coverage for internal ResultSet implementation.
  663. */
  664. public java.sql.Date getDate(int columnIndex, java.util.Calendar cal) throws SQLException {
  665. return null;
  666. }
  667. /**
  668. * Signature coverage for internal ResultSet implementation.
  669. */
  670. public java.sql.Date getDate(String columnName, java.util.Calendar cal) throws SQLException {
  671. return null;
  672. }
  673. /**
  674. * Signature coverage for internal ResultSet implementation.
  675. */
  676. public double getDouble(int columnIndex) throws SQLException {
  677. return 0;
  678. }
  679. /**
  680. * Signature coverage for internal ResultSet implementation.
  681. */
  682. public double getDouble(String columnName) throws SQLException {
  683. return 0;
  684. }
  685. /**
  686. * Signature coverage for internal ResultSet implementation.
  687. */
  688. public int getFetchDirection() throws SQLException {
  689. return 0;
  690. }
  691. /**
  692. * Signature coverage for internal ResultSet implementation.
  693. */
  694. public int getFetchSize() throws SQLException {
  695. return 0;
  696. }
  697. /**
  698. * Signature coverage for internal ResultSet implementation.
  699. */
  700. public float getFloat(int columnIndex) throws SQLException {
  701. return 0;
  702. }
  703. /**
  704. * Signature coverage for internal ResultSet implementation.
  705. */
  706. public float getFloat(String columnName) throws SQLException {
  707. return 0;
  708. }
  709. /**
  710. * Signature coverage for internal ResultSet implementation.
  711. */
  712. public int getInt(String columnName) throws SQLException {
  713. return 0;
  714. }
  715. /**
  716. * Signature coverage for internal ResultSet implementation.
  717. */
  718. public int getInt(int columnIndex) throws SQLException {
  719. return 0;
  720. }
  721. /**
  722. * Signature coverage for internal ResultSet implementation.
  723. */
  724. public long getLong(int columnIndex) throws SQLException {
  725. return 0;
  726. }
  727. /**
  728. * Signature coverage for internal ResultSet implementation.
  729. */
  730. public long getLong(String columnName) throws SQLException {
  731. return 0;
  732. }
  733. /**
  734. * Signature coverage for internal ResultSet implementation.
  735. */
  736. public ResultSetMetaData getMetaData() throws SQLException {
  737. return null;
  738. }
  739. /**
  740. * Signature coverage for internal ResultSet implementation.
  741. */
  742. public Object getObject(int columnIndex) throws SQLException {
  743. return null;
  744. }
  745. /**
  746. * Signature coverage for internal ResultSet implementation.
  747. */
  748. public Object getObject(String columnName) throws SQLException {
  749. return null;
  750. }
  751. /**
  752. * Signature coverage for internal ResultSet implementation.
  753. */
  754. public Object getObject(int i, java.util.Map<String,Class<?>> map)
  755. throws SQLException
  756. {
  757. return null;
  758. }
  759. /**
  760. * Signature coverage for internal ResultSet implementation.
  761. */
  762. public Object getObject(String colName, java.util.Map<String,Class<?>> map)
  763. throws SQLException
  764. {
  765. return null;
  766. }
  767. /**
  768. * Signature coverage for internal ResultSet implementation.
  769. */
  770. public Ref getRef(int i) throws SQLException {
  771. return null;
  772. }
  773. /**
  774. * Signature coverage for internal ResultSet implementation.
  775. */
  776. public Ref getRef(String colName) throws SQLException {
  777. return null;
  778. }
  779. /**
  780. * Signature coverage for internal ResultSet implementation.
  781. */
  782. public int getRow() throws SQLException {
  783. return 0;
  784. }
  785. /**
  786. * Signature coverage for internal ResultSet implementation.
  787. */
  788. public short getShort(String columnName) throws SQLException {
  789. return 0;
  790. }
  791. /**
  792. * Signature coverage for internal ResultSet implementation.
  793. */
  794. public short getShort(int columnIndex) throws SQLException {
  795. return 0;
  796. }
  797. /**
  798. * Signature coverage for internal ResultSet implementation.
  799. */
  800. public Statement getStatement() throws SQLException {
  801. return null;
  802. }
  803. /**
  804. * Signature coverage for internal ResultSet implementation.
  805. */
  806. public String getString(String columnName) throws SQLException {
  807. return null;
  808. }
  809. /**
  810. * Signature coverage for internal ResultSet implementation.
  811. */
  812. public String getString(int columnIndex) throws SQLException {
  813. return null;
  814. }
  815. /**
  816. * Signature coverage for internal ResultSet implementation.
  817. */
  818. public java.sql.Time getTime(String columnName) throws SQLException {
  819. return null;
  820. }
  821. /**
  822. * Signature coverage for internal ResultSet implementation.
  823. */
  824. public java.sql.Time getTime(int columnIndex) throws SQLException {
  825. return null;
  826. }
  827. /**
  828. * Signature coverage for internal ResultSet implementation.
  829. */
  830. public java.sql.Time getTime(String columnName, java.util.Calendar cal) throws SQLException {
  831. return null;
  832. }
  833. /**
  834. * Signature coverage for internal ResultSet implementation.
  835. */
  836. public java.sql.Time getTime(int columnIndex, java.util.Calendar cal) throws SQLException {
  837. return null;
  838. }
  839. /**
  840. * Signature coverage for internal ResultSet implementation.
  841. */
  842. public java.sql.Timestamp getTimestamp(String columnName) throws SQLException {
  843. return null;
  844. }
  845. /**
  846. * Signature coverage for internal ResultSet implementation.
  847. */
  848. public java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException {
  849. return null;
  850. }
  851. /**
  852. * Signature coverage for internal ResultSet implementation.
  853. */
  854. public java.sql.Timestamp getTimestamp(String columnName, java.util.Calendar cal) throws SQLException {
  855. return null;
  856. }
  857. /**
  858. * Signature coverage for internal ResultSet implementation.
  859. */
  860. public java.sql.Timestamp getTimestamp(int columnIndex, java.util.Calendar cal) throws SQLException {
  861. return null;
  862. }
  863. /**
  864. * Signature coverage for internal ResultSet implementation.
  865. */
  866. public int getType() throws SQLException {
  867. return 0;
  868. }
  869. /**
  870. * Signature coverage for internal ResultSet implementation.
  871. */
  872. public java.net.URL getURL(int columnIndex) throws SQLException {
  873. return null;
  874. }
  875. /**
  876. * Signature coverage for internal ResultSet implementation.
  877. */
  878. public java.net.URL getURL(String columnName) throws SQLException {
  879. return null;
  880. }
  881. /**
  882. * Signature coverage for internal ResultSet implementation.
  883. */
  884. public java.io.InputStream getUnicodeStream(String columnName) throws SQLException {
  885. return null;
  886. }
  887. /**
  888. * Signature coverage for internal ResultSet implementation.
  889. */
  890. public java.io.InputStream getUnicodeStream(int columnIndex) throws SQLException {
  891. return null;
  892. }
  893. /**
  894. * Signature coverage for internal ResultSet implementation.
  895. */
  896. public SQLWarning getWarnings() throws SQLException {
  897. return null;
  898. }
  899. /**
  900. * Signature coverage for internal ResultSet implementation.
  901. */
  902. public void insertRow() throws SQLException {
  903. }
  904. /**
  905. * Signature coverage for internal ResultSet implementation.
  906. */
  907. public boolean isAfterLast() throws SQLException {
  908. return false;
  909. }
  910. /**
  911. * Signature coverage for internal ResultSet implementation.
  912. */
  913. public boolean isBeforeFirst() throws SQLException {
  914. return false;
  915. }
  916. /**
  917. * Signature coverage for internal ResultSet implementation.
  918. */
  919. public boolean isFirst() throws SQLException {
  920. return false;
  921. }
  922. /**
  923. * Signature coverage for internal ResultSet implementation.
  924. */
  925. public boolean isLast() throws SQLException {
  926. return false;
  927. }
  928. /**
  929. * Signature coverage for internal ResultSet implementation.
  930. */
  931. public boolean last() throws SQLException {
  932. return false;
  933. }
  934. /**
  935. * Signature coverage for internal ResultSet implementation.
  936. */
  937. public void moveToCurrentRow() throws SQLException {
  938. }
  939. /**
  940. * Signature coverage for internal ResultSet implementation.
  941. */
  942. public void moveToInsertRow() throws SQLException {
  943. }
  944. /**
  945. * Signature coverage for internal ResultSet implementation.
  946. */
  947. public boolean next() throws SQLException {
  948. return false;
  949. }
  950. /**
  951. * Signature coverage for internal ResultSet implementation.
  952. */
  953. public boolean previous() throws SQLException {
  954. return false;
  955. }
  956. /**
  957. * Signature coverage for internal ResultSet implementation.
  958. */
  959. public void refreshRow() throws SQLException {
  960. }
  961. /**
  962. * Signature coverage for internal ResultSet implementation.
  963. */
  964. public boolean relative(int rows) throws SQLException {
  965. return false;
  966. }
  967. /**
  968. * Signature coverage for internal ResultSet implementation.
  969. */
  970. public boolean rowDeleted() throws SQLException {
  971. return false;
  972. }
  973. /**
  974. * Signature coverage for internal ResultSet implementation.
  975. */
  976. public boolean rowInserted() throws SQLException {
  977. return false;
  978. }
  979. /**
  980. * Signature coverage for internal ResultSet implementation.
  981. */
  982. public boolean rowUpdated() throws SQLException {
  983. return false;
  984. }
  985. /**
  986. * Signature coverage for internal ResultSet implementation.
  987. */
  988. public void setFetchDirection(int direction) throws SQLException {
  989. }
  990. /**
  991. * Signature coverage for internal ResultSet implementation.
  992. */
  993. public void setFetchSize(int rows) throws SQLException {
  994. }
  995. /**
  996. * Signature coverage for internal ResultSet implementation.
  997. */
  998. public void updateArray(String columnName, java.sql.Array x) throws SQLException {
  999. }
  1000. /**
  1001. * Signature coverage for internal ResultSet implementation.
  1002. */
  1003. public void updateArray(int columnIndex, java.sql.Array x) throws SQLException {
  1004. }
  1005. /**
  1006. * Signature coverage for internal ResultSet implementation.
  1007. */
  1008. public void updateAsciiStream(String columnName, java.io.InputStream x, int length) throws SQLException {
  1009. }
  1010. /**
  1011. * Signature coverage for internal ResultSet implementation.
  1012. */
  1013. public void updateAsciiStream(int columnIndex, java.io.InputStream x, int length) throws SQLException {
  1014. }
  1015. /**
  1016. * Signature coverage for internal ResultSet implementation.
  1017. */
  1018. public void updateBigDecimal(String columnName, java.math.BigDecimal x) throws SQLException {
  1019. }
  1020. /**
  1021. * Signature coverage for internal ResultSet implementation.
  1022. */
  1023. public void updateBigDecimal(int columnIndex, java.math.BigDecimal x) throws SQLException {
  1024. }
  1025. /**
  1026. * Signature coverage for internal ResultSet implementation.
  1027. */
  1028. public void updateBinaryStream(int columnIndex, java.io.InputStream x, int length) throws SQLException {
  1029. }
  1030. /**
  1031. * Signature coverage for internal ResultSet implementation.
  1032. */
  1033. public void updateBinaryStream(String columnName, java.io.InputStream x, int length) throws SQLException {
  1034. }
  1035. /**
  1036. * Signature coverage for internal ResultSet implementation.
  1037. */
  1038. public void updateBlob(int columnIndex, java.sql.Blob x) throws SQLException {
  1039. }
  1040. /**
  1041. * Signature coverage for internal ResultSet implementation.
  1042. */
  1043. public void updateBlob(String columnName, java.sql.Blob x) throws SQLException {
  1044. }
  1045. /**
  1046. * Signature coverage for internal ResultSet implementation.
  1047. */
  1048. public void updateBoolean(int columnIndex, boolean x) throws SQLException {
  1049. }
  1050. /**
  1051. * Signature coverage for internal ResultSet implementation.
  1052. */
  1053. public void updateBoolean(String columnName, boolean x) throws SQLException {
  1054. }
  1055. /**
  1056. * Signature coverage for internal ResultSet implementation.
  1057. */
  1058. public void updateByte(int columnIndex, byte x) throws SQLException {
  1059. }
  1060. /**
  1061. * Signature coverage for internal ResultSet implementation.
  1062. */
  1063. public void updateByte(String columnName, byte x) throws SQLException {
  1064. }
  1065. /**
  1066. * Signature coverage for internal ResultSet implementation.
  1067. */
  1068. public void updateBytes(int columnIndex, byte[] x) throws SQLException {
  1069. }
  1070. /**
  1071. * Signature coverage for internal ResultSet implementation.
  1072. */
  1073. public void updateBytes(String columnName, byte[] x) throws SQLException {
  1074. }
  1075. /**
  1076. * Signature coverage for internal ResultSet implementation.
  1077. */
  1078. public void updateCharacterStream(int columnIndex, java.io.Reader x, int length) throws SQLException {
  1079. }
  1080. /**
  1081. * Signature coverage for internal ResultSet implementation.
  1082. */
  1083. public void updateCharacterStream(String columnName, java.io.Reader reader, int length) throws SQLException {
  1084. }
  1085. /**
  1086. * Signature coverage for internal ResultSet implementation.
  1087. */
  1088. public void updateClob(String columnName, java.sql.Clob x) throws SQLException {
  1089. }
  1090. /**
  1091. * Signature coverage for internal ResultSet implementation.
  1092. */
  1093. public void updateClob(int columnIndex, java.sql.Clob x) throws SQLException {
  1094. }
  1095. /**
  1096. * Signature coverage for internal ResultSet implementation.
  1097. */
  1098. public void updateDate(int columnIndex, java.sql.Date x) throws SQLException {
  1099. }
  1100. /**
  1101. * Signature coverage for internal ResultSet implementation.
  1102. */
  1103. public void updateDate(String columnName, java.sql.Date x) throws SQLException {
  1104. }
  1105. /**
  1106. * Signature coverage for internal ResultSet implementation.
  1107. */
  1108. public void updateDouble(int columnIndex, double x) throws SQLException {
  1109. }
  1110. /**
  1111. * Signature coverage for internal ResultSet implementation.
  1112. */
  1113. public void updateDouble(String columnName, double x) throws SQLException {
  1114. }
  1115. /**
  1116. * Signature coverage for internal ResultSet implementation.
  1117. */
  1118. public void updateFloat(String columnName, float x) throws SQLException {
  1119. }
  1120. /**
  1121. * Signature coverage for internal ResultSet implementation.
  1122. */
  1123. public void updateFloat(int columnIndex, float x) throws SQLException {
  1124. }
  1125. /**
  1126. * Signature coverage for internal ResultSet implementation.
  1127. */
  1128. public void updateInt(String columnName, int x) throws SQLException {
  1129. }
  1130. /**
  1131. * Signature coverage for internal ResultSet implementation.
  1132. */
  1133. public void updateInt(int columnIndex, int x) throws SQLException {
  1134. }
  1135. /**
  1136. * Signature coverage for internal ResultSet implementation.
  1137. */
  1138. public void updateLong(int columnIndex, long x) throws SQLException {
  1139. }
  1140. /**
  1141. * Signature coverage for internal ResultSet implementation.
  1142. */
  1143. public void updateLong(String columnName, long x) throws SQLException {
  1144. }
  1145. /**
  1146. * Signature coverage for internal ResultSet implementation.
  1147. */
  1148. public void updateNull(String columnName) throws SQLException {
  1149. }
  1150. /**
  1151. * Signature coverage for internal ResultSet implementation.
  1152. */
  1153. public void updateNull(int columnIndex) throws SQLException {
  1154. }
  1155. /**
  1156. * Signature coverage for internal ResultSet implementation.
  1157. */
  1158. public void updateObject(String columnName, Object x) throws SQLException {
  1159. }
  1160. /**
  1161. * Signature coverage for internal ResultSet implementation.
  1162. */
  1163. public void updateObject(int columnIndex, Object x) throws SQLException {
  1164. }
  1165. /**
  1166. * Signature coverage for internal ResultSet implementation.
  1167. */
  1168. public void updateObject(int columnIndex, Object x, int scale) throws SQLException {
  1169. }
  1170. /**
  1171. * Signature coverage for internal ResultSet implementation.
  1172. */
  1173. public void updateObject(String columnName, Object x, int scale) throws SQLException {
  1174. }
  1175. /**
  1176. * Signature coverage for internal ResultSet implementation.
  1177. */
  1178. public void updateRef(int columnIndex, java.sql.Ref x) throws SQLException {
  1179. }
  1180. /**
  1181. * Signature coverage for internal ResultSet implementation.
  1182. */
  1183. public void updateRef(String columnName, java.sql.Ref x) throws SQLException {
  1184. }
  1185. /**
  1186. * Signature coverage for internal ResultSet implementation.
  1187. */
  1188. public void updateRow() throws SQLException {
  1189. }
  1190. /**
  1191. * Signature coverage for internal ResultSet implementation.
  1192. */
  1193. public void updateShort(int columnIndex, short x) throws SQLException {
  1194. }
  1195. /**
  1196. * Signature coverage for internal ResultSet implementation.
  1197. */
  1198. public void updateShort(String columnName, short x) throws SQLException {
  1199. }
  1200. /**
  1201. * Signature coverage for internal ResultSet implementation.
  1202. */
  1203. public void updateString(int columnIndex, String x) throws SQLException {
  1204. }
  1205. public void updateString(String columnName, String x) throws SQLException {
  1206. }
  1207. /**
  1208. * Signature coverage for internal ResultSet implementation.
  1209. */
  1210. public void updateTime(String columnName, java.sql.Time x) throws SQLException {
  1211. }
  1212. /**
  1213. * Signature coverage for internal ResultSet implementation.
  1214. */
  1215. public void updateTime(int columnIndex, java.sql.Time x) throws SQLException {
  1216. }
  1217. /**
  1218. * Signature coverage for internal ResultSet implementation.
  1219. */
  1220. public void updateTimestamp(String columnName, java.sql.Timestamp x) throws SQLException {
  1221. }
  1222. /**
  1223. * Signature coverage for internal ResultSet implementation.
  1224. */
  1225. public void updateTimestamp(int columnIndex, java.sql.Timestamp x) throws SQLException {
  1226. }
  1227. public boolean wasNull() throws SQLException {
  1228. return false;
  1229. }
  1230. }
  1231. /**
  1232. * The identifier that assists in the serialization of this <code>SerialArray</code>
  1233. * object.
  1234. */
  1235. static final long serialVersionUID = -8466174297270688520L;
  1236. }