History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/sql/BatchUpdateException.java (1 of 18352 files). Show all

Unified · Split

java/pkg/java/sql/BatchUpdateException.java+340−0
@@ -0,0 +1,340 @@
1+/*
2+ * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
3+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+ *
5+ * This code is free software; you can redistribute it and/or modify it
6+ * under the terms of the GNU General Public License version 2 only, as
7+ * published by the Free Software Foundation. Oracle designates this
8+ * particular file as subject to the "Classpath" exception as provided
9+ * by Oracle in the LICENSE file that accompanied this code.
10+ *
11+ * This code is distributed in the hope that it will be useful, but WITHOUT
12+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+ * version 2 for more details (a copy is included in the LICENSE file that
15+ * accompanied this code).
16+ *
17+ * You should have received a copy of the GNU General Public License version
18+ * 2 along with this work; if not, write to the Free Software Foundation,
19+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+ *
21+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22+ * or visit www.oracle.com if you need additional information or have any
23+ * questions.
24+ */
25+
26+package java.sql;
27+
28+import java.util.Arrays;
29+
30+/**
31+ * The subclass of {@link SQLException} thrown when an error
32+ * occurs during a batch update operation. In addition to the
33+ * information provided by {@link SQLException}, a
34+ * <code>BatchUpdateException</code> provides the update
35+ * counts for all commands that were executed successfully during the
36+ * batch update, that is, all commands that were executed before the error
37+ * occurred. The order of elements in an array of update counts
38+ * corresponds to the order in which commands were added to the batch.
39+ * <P>
40+ * After a command in a batch update fails to execute properly
41+ * and a <code>BatchUpdateException</code> is thrown, the driver
42+ * may or may not continue to process the remaining commands in
43+ * the batch. If the driver continues processing after a failure,
44+ * the array returned by the method
45+ * <code>BatchUpdateException.getUpdateCounts</code> will have
46+ * an element for every command in the batch rather than only
47+ * elements for the commands that executed successfully before
48+ * the error. In the case where the driver continues processing
49+ * commands, the array element for any command
50+ * that failed is <code>Statement.EXECUTE_FAILED</code>.
51+ * <P>
52+ * @since 1.2
53+ */
54+
55+public class BatchUpdateException extends SQLException {
56+
57+ /**
58+ * Constructs a <code>BatchUpdateException</code> object initialized with a given
59+ * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> and
60+ * <code>updateCounts</code>.
61+ * The <code>cause</code> is not initialized, and may subsequently be
62+ * initialized by a call to the
63+ * {@link Throwable#initCause(java.lang.Throwable)} method.
64+ * <p>
65+ *
66+ * @param reason a description of the error
67+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
68+ * @param vendorCode an exception code used by a particular
69+ * database vendor
70+ * @param updateCounts an array of <code>int</code>, with each element
71+ * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
72+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
73+ * the batch for JDBC drivers that continue processing
74+ * after a command failure; an update count or
75+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
76+ * prior to the failure for JDBC drivers that stop processing after a command
77+ * failure
78+ * @since 1.2
79+ */
80+ public BatchUpdateException( String reason, String SQLState, int vendorCode,
81+ int[] updateCounts ) {
82+ super(reason, SQLState, vendorCode);
83+ this.updateCounts = (updateCounts == null) ? null : Arrays.copyOf(updateCounts, updateCounts.length);
84+ }
85+
86+ /**
87+ * Constructs a <code>BatchUpdateException</code> object initialized with a given
88+ * <code>reason</code>, <code>SQLState</code> and
89+ * <code>updateCounts</code>.
90+ * The <code>cause</code> is not initialized, and may subsequently be
91+ * initialized by a call to the
92+ * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code
93+ * is initialized to 0.
94+ * <p>
95+ *
96+ * @param reason a description of the exception
97+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
98+ * @param updateCounts an array of <code>int</code>, with each element
99+ * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
100+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
101+ * the batch for JDBC drivers that continue processing
102+ * after a command failure; an update count or
103+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
104+ * prior to the failure for JDBC drivers that stop processing after a command
105+ * failure
106+ * @since 1.2
107+ */
108+ public BatchUpdateException(String reason, String SQLState,
109+ int[] updateCounts) {
110+ this(reason, SQLState, 0, updateCounts);
111+ }
112+
113+ /**
114+ * Constructs a <code>BatchUpdateException</code> object initialized with a given
115+ * <code>reason</code> and <code>updateCounts</code>.
116+ * The <code>cause</code> is not initialized, and may subsequently be
117+ * initialized by a call to the
118+ * {@link Throwable#initCause(java.lang.Throwable)} method. The
119+ * <code>SQLState</code> is initialized to <code>null</code>
120+ * and the vender code is initialized to 0.
121+ * <p>
122+ *
123+ *
124+ * @param reason a description of the exception
125+ * @param updateCounts an array of <code>int</code>, with each element
126+ * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
127+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
128+ * the batch for JDBC drivers that continue processing
129+ * after a command failure; an update count or
130+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
131+ * prior to the failure for JDBC drivers that stop processing after a command
132+ * failure
133+ * @since 1.2
134+ */
135+ public BatchUpdateException(String reason, int[] updateCounts) {
136+ this(reason, null, 0, updateCounts);
137+ }
138+
139+ /**
140+ * Constructs a <code>BatchUpdateException</code> object initialized with a given
141+ * <code>updateCounts</code>.
142+ * initialized by a call to the
143+ * {@link Throwable#initCause(java.lang.Throwable)} method. The <code>reason</code>
144+ * and <code>SQLState</code> are initialized to null and the vendor code
145+ * is initialized to 0.
146+ * <p>
147+ *
148+ * @param updateCounts an array of <code>int</code>, with each element
149+ * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
150+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
151+ * the batch for JDBC drivers that continue processing
152+ * after a command failure; an update count or
153+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
154+ * prior to the failure for JDBC drivers that stop processing after a command
155+ * failure
156+ * @since 1.2
157+ */
158+ public BatchUpdateException(int[] updateCounts) {
159+ this(null, null, 0, updateCounts);
160+ }
161+
162+ /**
163+ * Constructs a <code>BatchUpdateException</code> object.
164+ * The <code>reason</code>, <code>SQLState</code> and <code>updateCounts</code>
165+ * are initialized to <code>null</code> and the vendor code is initialized to 0.
166+ * The <code>cause</code> is not initialized, and may subsequently be
167+ * initialized by a call to the
168+ * {@link Throwable#initCause(java.lang.Throwable)} method.
169+ * <p>
170+ *
171+ * @since 1.2
172+ */
173+ public BatchUpdateException() {
174+ this(null, null, 0, null);
175+ }
176+
177+ /**
178+ * Constructs a <code>BatchUpdateException</code> object initialized with
179+ * a given <code>cause</code>.
180+ * The <code>SQLState</code> and <code>updateCounts</code>
181+ * are initialized
182+ * to <code>null</code> and the vendor code is initialized to 0.
183+ * The <code>reason</code> is initialized to <code>null</code> if
184+ * <code>cause==null</code> or to <code>cause.toString()</code> if
185+ * <code>cause!=null</code>.
186+ * @param cause the underlying reason for this <code>SQLException</code>
187+ * (which is saved for later retrieval by the <code>getCause()</code> method);
188+ * may be null indicating the cause is non-existent or unknown.
189+ * @since 1.6
190+ */
191+ public BatchUpdateException(Throwable cause) {
192+ this((cause == null ? null : cause.toString()), null, 0, null, cause);
193+ }
194+
195+ /**
196+ * Constructs a <code>BatchUpdateException</code> object initialized with a
197+ * given <code>cause</code> and <code>updateCounts</code>.
198+ * The <code>SQLState</code> is initialized
199+ * to <code>null</code> and the vendor code is initialized to 0.
200+ * The <code>reason</code> is initialized to <code>null</code> if
201+ * <code>cause==null</code> or to <code>cause.toString()</code> if
202+ * <code>cause!=null</code>.
203+ *
204+ * @param updateCounts an array of <code>int</code>, with each element
205+ * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
206+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
207+ * the batch for JDBC drivers that continue processing
208+ * after a command failure; an update count or
209+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
210+ * prior to the failure for JDBC drivers that stop processing after a command
211+ * failure
212+ * @param cause the underlying reason for this <code>SQLException</code>
213+ * (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating
214+ * the cause is non-existent or unknown.
215+ * @since 1.6
216+ */
217+ public BatchUpdateException(int []updateCounts , Throwable cause) {
218+ this((cause == null ? null : cause.toString()), null, 0, updateCounts, cause);
219+ }
220+
221+ /**
222+ * Constructs a <code>BatchUpdateException</code> object initialized with
223+ * a given <code>reason</code>, <code>cause</code>
224+ * and <code>updateCounts</code>. The <code>SQLState</code> is initialized
225+ * to <code>null</code> and the vendor code is initialized to 0.
226+ *
227+ * @param reason a description of the exception
228+ * @param updateCounts an array of <code>int</code>, with each element
229+ *indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
230+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
231+ * the batch for JDBC drivers that continue processing
232+ * after a command failure; an update count or
233+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
234+ * prior to the failure for JDBC drivers that stop processing after a command
235+ * failure
236+ * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method);
237+ * may be null indicating
238+ * the cause is non-existent or unknown.
239+ * @since 1.6
240+ */
241+ public BatchUpdateException(String reason, int []updateCounts, Throwable cause) {
242+ this(reason, null, 0, updateCounts, cause);
243+ }
244+
245+ /**
246+ * Constructs a <code>BatchUpdateException</code> object initialized with
247+ * a given <code>reason</code>, <code>SQLState</code>,<code>cause</code>, and
248+ * <code>updateCounts</code>. The vendor code is initialized to 0.
249+ *
250+ * @param reason a description of the exception
251+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
252+ * @param updateCounts an array of <code>int</code>, with each element
253+ * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
254+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
255+ * the batch for JDBC drivers that continue processing
256+ * after a command failure; an update count or
257+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
258+ * prior to the failure for JDBC drivers that stop processing after a command
259+ * failure
260+ * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method);
261+ * may be null indicating
262+ * the cause is non-existent or unknown.
263+ * @since 1.6
264+ */
265+ public BatchUpdateException(String reason, String SQLState,
266+ int []updateCounts, Throwable cause) {
267+ this(reason, SQLState, 0, updateCounts, cause);
268+ }
269+
270+ /**
271+ * Constructs a <code>BatchUpdateException</code> object initialized with
272+ * a given <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code>
273+ * <code>cause</code> and <code>updateCounts</code>.
274+ *
275+ * @param reason a description of the error
276+ * @param SQLState an XOPEN or SQL:2003 code identifying the exception
277+ * @param vendorCode an exception code used by a particular
278+ * database vendor
279+ * @param updateCounts an array of <code>int</code>, with each element
280+ *indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
281+ * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
282+ * the batch for JDBC drivers that continue processing
283+ * after a command failure; an update count or
284+ * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
285+ * prior to the failure for JDBC drivers that stop processing after a command
286+ * failure
287+ * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method);
288+ * may be null indicating
289+ * the cause is non-existent or unknown.
290+ * @since 1.6
291+ */
292+ public BatchUpdateException(String reason, String SQLState, int vendorCode,
293+ int []updateCounts,Throwable cause) {
294+ super(reason, SQLState, vendorCode, cause);
295+ this.updateCounts = (updateCounts == null) ? null : Arrays.copyOf(updateCounts, updateCounts.length);
296+ }
297+
298+ /**
299+ * Retrieves the update count for each update statement in the batch
300+ * update that executed successfully before this exception occurred.
301+ * A driver that implements batch updates may or may not continue to
302+ * process the remaining commands in a batch when one of the commands
303+ * fails to execute properly. If the driver continues processing commands,
304+ * the array returned by this method will have as many elements as
305+ * there are commands in the batch; otherwise, it will contain an
306+ * update count for each command that executed successfully before
307+ * the <code>BatchUpdateException</code> was thrown.
308+ *<P>
309+ * The possible return values for this method were modified for
310+ * the Java 2 SDK, Standard Edition, version 1.3. This was done to
311+ * accommodate the new option of continuing to process commands
312+ * in a batch update after a <code>BatchUpdateException</code> object
313+ * has been thrown.
314+ *
315+ * @return an array of <code>int</code> containing the update counts
316+ * for the updates that were executed successfully before this error
317+ * occurred. Or, if the driver continues to process commands after an
318+ * error, one of the following for every command in the batch:
319+ * <OL>
320+ * <LI>an update count
321+ * <LI><code>Statement.SUCCESS_NO_INFO</code> to indicate that the command
322+ * executed successfully but the number of rows affected is unknown
323+ * <LI><code>Statement.EXECUTE_FAILED</code> to indicate that the command
324+ * failed to execute successfully
325+ * </OL>
326+ * @since 1.3
327+ */
328+ public int[] getUpdateCounts() {
329+ return (updateCounts == null) ? null : Arrays.copyOf(updateCounts, updateCounts.length);
330+ }
331+
332+ /**
333+ * The array that describes the outcome of a batch execution.
334+ * @serial
335+ * @since 1.2
336+ */
337+ private final int[] updateCounts;
338+
339+ private static final long serialVersionUID = 5977529877145521757L;
340+}