1 /*
2 * Copyright 1996-2005 Sun Microsystems, Inc. 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. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26 package java.sql;
27
28 /**
29 * An exception thrown as a <code>DataTruncation</code> exception
30 * (on writes) or reported as a
31 * <code>DataTruncation</code> warning (on reads)
32 * when a data values is unexpectedly truncated for reasons other than its having
33 * execeeded <code>MaxFieldSize</code>.
34 *
35 * <P>The SQLstate for a <code>DataTruncation</code> during read is <code>01004</code>.
36 * <P>The SQLstate for a <code>DataTruncation</code> during write is <code>22001</code>.
37 */
38
39 public class DataTruncation extends SQLWarning {
40
41 /**
42 * Creates a <code>DataTruncation</code> object
43 * with the SQLState initialized
44 * to 01004 when <code>read</code> is set to <code>true</code> and 22001
45 * when <code>read</code> is set to <code>false</code>,
46 * the reason set to "Data truncation", the
47 * vendor code set to 0, and
48 * the other fields set to the given values.
49 * The <code>cause</code> is not initialized, and may subsequently be
50 * initialized by a call to the
51 * {@link Throwable#initCause(java.lang.Throwable)} method.
52 * <p>
53 *
54 * @param index The index of the parameter or column value
55 * @param parameter true if a parameter value was truncated
56 * @param read true if a read was truncated
57 * @param dataSize the original size of the data
58 * @param transferSize the size after truncation
59 */
60 public DataTruncation(int index, boolean parameter,
61 boolean read, int dataSize,
62 int transferSize) {
63 super("Data truncation", read == true?"01004":"22001");
64 this.index = index;
65 this.parameter = parameter;
66 this.read = read;
67 this.dataSize = dataSize;
68 this.transferSize = transferSize;
69
70 }
71
72 /**
73 * Creates a <code>DataTruncation</code> object
74 * with the SQLState initialized
75 * to 01004 when <code>read</code> is set to <code>true</code> and 22001
76 * when <code>read</code> is set to <code>false</code>,
77 * the reason set to "Data truncation", the
78 * vendor code set to 0, and
79 * the other fields set to the given values.
80 * <p>
81 *
82 * @param index The index of the parameter or column value
83 * @param parameter true if a parameter value was truncated
84 * @param read true if a read was truncated
85 * @param dataSize the original size of the data
86 * @param transferSize the size after truncation
87 * @param cause the underlying reason for this <code>DataTruncation</code>
88 * (which is saved for later retrieval by the <code>getCause()</code> method);
89 * may be null indicating the cause is non-existent or unknown.
90 *
91 * @since 1.6
92 */
93 public DataTruncation(int index, boolean parameter,
94 boolean read, int dataSize,
95 int transferSize, Throwable cause) {
96 super("Data truncation", read == true?"01004":"22001",cause);
97 this.index = index;
98 this.parameter = parameter;
99 this.read = read;
100 this.dataSize = dataSize;
101 this.transferSize = transferSize;
102 }
103
104 /**
105 * Retrieves the index of the column or parameter that was truncated.
106 *
107 * <P>This may be -1 if the column or parameter index is unknown, in
108 * which case the <code>parameter</code> and <code>read</code> fields should be ignored.
109 *
110 * @return the index of the truncated paramter or column value
111 */
112 public int getIndex() {
113 return index;
114 }
115
116 /**
117 * Indicates whether the value truncated was a parameter value or
118 * a column value.
119 *
120 * @return <code>true</code> if the value truncated was a parameter;
121 * <code>false</code> if it was a column value
122 */
123 public boolean getParameter() {
124 return parameter;
125 }
126
127 /**
128 * Indicates whether or not the value was truncated on a read.
129 *
130 * @return <code>true</code> if the value was truncated when read from
131 * the database; <code>false</code> if the data was truncated on a write
132 */
133 public boolean getRead() {
134 return read;
135 }
136
137 /**
138 * Gets the number of bytes of data that should have been transferred.
139 * This number may be approximate if data conversions were being
140 * performed. The value may be <code>-1</code> if the size is unknown.
141 *
142 * @return the number of bytes of data that should have been transferred
143 */
144 public int getDataSize() {
145 return dataSize;
146 }
147
148 /**
149 * Gets the number of bytes of data actually transferred.
150 * The value may be <code>-1</code> if the size is unknown.
151 *
152 * @return the number of bytes of data actually transferred
153 */
154 public int getTransferSize() {
155 return transferSize;
156 }
157
158 /**
159 * @serial
160 */
161 private int index;
162
163 /**
164 * @serial
165 */
166 private boolean parameter;
167
168 /**
169 * @serial
170 */
171 private boolean read;
172
173 /**
174 * @serial
175 */
176 private int dataSize;
177
178 /**
179 * @serial
180 */
181 private int transferSize;
182
183 /**
184 * @serial
185 */
186 private static final long serialVersionUID = 6464298989504059473L;
187
188 }