2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 package com.mysql.clusterj.jdbc;
20 import java.sql.SQLException;
22 import com.mysql.clusterj.core.util.I18NHelper;
23 import com.mysql.clusterj.core.util.Logger;
24 import com.mysql.clusterj.core.util.LoggerFactoryService;
25 import com.mysql.jdbc.ResultSetInternalMethods;
27 /** This class is part of the statement interceptor contract with the MySQL JDBC connection.
28 * When a statement is intercepted and executed, an instance of this class is returned if there
29 * is only an insert/delete/update count. A sibling class, ResultSetInternalMethodsImpl, is
30 * returned if there is a real result to be iterated.
31 * This class in turn delegates to the clusterj ResultData to retrieve data from the cluster.
33 public class ResultSetInternalMethodsUpdateCount extends
34 AbstractResultSetInternalMethods {
36 /** My message translator */
37 static final I18NHelper local = I18NHelper.getInstance(ResultSetInternalMethodsUpdateCount.class);
40 static final Logger logger = LoggerFactoryService.getFactory().getInstance(ResultSetInternalMethodsUpdateCount.class);
42 /** Counts for multi-statement result */
43 private long[] counts;
45 /** The current result set for multi-statement results */
46 private int current = 0;
48 /** Construct an instance with the count to be returned.
50 * @param count the number of "rows affected"
52 public ResultSetInternalMethodsUpdateCount(long count) {
53 this.counts = new long[1];
54 this.counts[0] = count;
57 /** Construct an instance with the count to be returned.
59 * @param counts the number of "rows affected" for each row of a multi-statement result
61 public ResultSetInternalMethodsUpdateCount(long[] counts) {
66 * Returns the next ResultSet in a multi-resultset "chain", if any,
67 * null if none exists.
68 * @return the next ResultSet
71 public ResultSetInternalMethods getNextResultSet() {
72 if (++current >= counts.length) {
80 * Clears the reference to the next result set in a multi-result set
84 public void clearNextResult() {
89 public long getUpdateCount() {
90 return counts[current];
94 public long getUpdateID() {
99 public boolean reallyResult() {
104 public void realClose(boolean arg0) throws SQLException {