2 Copyright 2010 Sun Microsystems, Inc.
3 All rights reserved. Use is subject to license terms.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; version 2 of the License.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 package testsuite.clusterj;
21 import com.mysql.clusterj.ClusterJDatastoreException;
22 import com.mysql.clusterj.ClusterJUserException;
23 import testsuite.clusterj.model.NullValues;
25 public class NullValuesTest extends AbstractClusterJModelTest {
27 protected static final String tablename = "nullvalues";
28 protected static final int numberOfPropertyTypes = 7;
29 protected static final int numberOfFieldsPerProperty = 12;
31 /** The sum of the following values is the switch index into the
32 * field setting method.
34 protected static final int DATABASE_NOT_NULL = 0; // if the column is defined as not nullable
35 protected static final int DATABASE_NULL = 1; // if the column is defined as nullable
36 protected static final String[] databaseNull =
37 new String[] {"DATABASE_NOT_NULL", "DATABASE_NULL"};
38 protected static final int DATABASE_NO_DEFAULT = 0; // if the column has no default value in the database schema
39 protected static final int DATABASE_DEFAULT = 2; // if the column has a default value in the database schema
40 protected static final String[] databaseDefault =
41 new String[] {"DATABASE_NO_DEFAULT", "DATABASE_DEFAULT"};
42 protected static final int NULLVALUE_NONE = 0; // if the property is NullValue.NONE
43 protected static final int NULLVALUE_EXCEPTION = 4; // if the property is NullValue.EXCEPTION
44 protected static final int NULLVALUE_DEFAULT = 8; // if the property is NullValue.DEFAULT
45 protected static final String[] nullValue =
46 new String[] {"NULL_VALUE_NONE", "NULL_VALUE_EXCEPTION", "NULL_VALUE_DEFAULT"};
48 protected static final String[] propertyTypes = new String[] {
49 "Integer", "Long", "Short", "Byte", "String", "Float", "Double"};
52 public void localSetUp() {
53 createSessionFactory();
54 session = sessionFactory.getSession();
55 session.deletePersistentAll(NullValues.class);
56 addTearDownClasses(NullValues.class);
59 /** Test that the behavior of the NullValue annotation is effective.
60 * For each column type, test the NullValue annotation behavior for
62 * NullValue.NONE: nothing is done by ClusterJ, so the behavior of the
63 * database takes over, which might result in an exception
64 * or a default value being written
65 * NullValue.EXCEPTION: ClusterJ throws an exception
66 * NullValue.DEFAULT: ClusterJ sets the value to the default value as
67 * defined in ClusterJ metadata
68 * The test makes use of a class, NullValues, that contains properties
69 * of all nullable types and all NullValue annotations on those types.
70 * Each property is assigned a number for the test.
75 tx = session.currentTransaction();
76 // make sure we can commit a legal instance.
79 NullValues instance = createValidInstance();
82 session.makePersistent(instance);
85 instance = session.find(NullValues.class, id);
86 session.deletePersistent(instance);
89 // iterate all property and field types and set the value of the
90 // field to null and then commit.
91 for (int propertyType = 0; propertyType < numberOfPropertyTypes; ++propertyType) {
92 for (int fieldIndex = 0; fieldIndex < numberOfFieldsPerProperty; ++fieldIndex) {
93 NullValues instance = createValidInstance();
94 int id = propertyType * numberOfFieldsPerProperty + fieldIndex;
95 //System.out.println("id: " + id);
99 // set one property to null value
100 setValue(instance, propertyType, fieldIndex, true);
101 // and see what happens
102 session.makePersistent(instance);
104 //System.out.println("no exception for: " + id + " " + decodeValues(id));
105 if (expectedException(id, null)) {
106 error("Expected exception not thrown for case " +
107 decodeType(propertyType) + ": " + decodeValues(id));
109 } catch (Exception e) {
110 // see if this is an expected exception
111 //System.out.println("exception for: " + id + " " + decodeValues(id));
112 if (!expectedException(id, e)) {
113 error("Unexpected exception from commit for case " +
114 decodeType(propertyType) + ": " + decodeValues(id)
115 + " " + e.toString());
118 continue; // if an exception was caught, don't try to verify the instance
126 instance = session.find(NullValues.class, id);
127 verifyNullValues(propertyType, fieldIndex, id, instance);
129 } catch (Exception e) {
130 error("Unexpected exception from find for case" +
131 decodeType(propertyType) + ": " + decodeValues(id)
132 + " " + e.toString());
140 protected NullValues createValidInstance() {
141 NullValues instance = session.newInstance(NullValues.class);
142 for (int propertyType = 0; propertyType < numberOfPropertyTypes; ++propertyType) {
143 for (int fieldIndex = 0; fieldIndex < numberOfFieldsPerProperty; ++fieldIndex) {
144 // set all properties to non-null values
145 setValue(instance, propertyType, fieldIndex, false);
151 protected int whatDatabaseDefault(int id) {
152 return ((id % numberOfFieldsPerProperty) & 2) >> 1;
155 protected int whatDatabaseNull(int id) {
156 return (id % numberOfFieldsPerProperty) & 1;
159 protected int whatNullValue(int id) {
160 return ((id % numberOfFieldsPerProperty) & 12) >> 2;
163 private String decodeValues(int id) {
164 // protected static final int DATABASE_NOT_NULL = 0; // if the column is defined as not nullable
165 // protected static final int DATABASE_NULL = 1; // if the column is defined as nullable
166 String databaseNullResult = databaseNull[whatDatabaseNull(id)];
167 // protected static final int DATABASE_NO_DEFAULT = 0; // if the column has no default value in the database schema
168 // protected static final int DATABASE_DEFAULT = 2; // if the column has a default value in the database schema
169 String databaseDefaultResult = databaseDefault[whatDatabaseDefault(id)];
170 // protected static final int NULLVALUE_NONE = 0; // if the property is NullValue.NONE
171 // protected static final int NULLVALUE_EXCEPTION = 4; // if the property is NullValue.EXCEPTION
172 // protected static final int NULLVALUE_DEFAULT = 8; // if the property is NullValue.DEFAULT
173 String nullValueResult = nullValue[whatNullValue(id)];
174 return databaseNullResult + " " +
175 databaseDefaultResult + " " +
179 private String decodeType(int type) {
180 return propertyTypes[type];
183 private boolean expectedException(int id, Exception e) {
184 // if DATABASE_NOT_NULL and NULL_VALUE_NONE => ClusterJDatastoreException
185 // the database exception might have been wrapped
186 Throwable t = e==null?null:e.getCause();
187 if (whatDatabaseNull(id) == 0 &&
188 (whatNullValue(id) == 0)) {
190 e instanceof ClusterJDatastoreException) {
192 } else if (t instanceof Exception) {
193 return expectedException(id, (Exception)t);
198 // if NULL_VALUE_EXCEPTION => ClusterJUserException
199 if (whatNullValue(id) == 1) {
201 e instanceof ClusterJUserException) {
207 // else no exception is expected
211 private void verifyNullValues(int propertyType, int fieldIndex, int id, NullValues instance) {
212 Object value = getValue(instance, propertyType, fieldIndex);
213 if (whatDatabaseNull(id) == DATABASE_NULL
214 && (whatDatabaseDefault(id) == DATABASE_NO_DEFAULT)
215 && (whatNullValue(id) == NULLVALUE_NONE)
217 // should store a null in the database for this case
218 errorIfNotEqual("For id " + id + " propertyType " + propertyType + " fieldIndex " + fieldIndex + " instance was " + (instance==null?"null":instance.toString() + " value was " + ((value==null)?"null ":value + " of type " + value.getClass().getName() + " " ) + decodeValues(id)), null, value);
222 /** Set the value of a specific field to either a null or not-null value.
224 * @param instance the instance to set values for
225 * @param propertyType the property type
226 * @param fieldIndex the field within the property
227 * @param nullValue set to a null value
229 private void setValue(NullValues instance, int propertyType, int fieldIndex, boolean nullValue) {
230 switch(propertyType) {
233 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
234 instance.setIntNotNullNoDefaultNullValueNone(nullValue?null:0); break;
235 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
236 instance.setIntNullNoDefaultNullValueNone(nullValue?null:0); break;
237 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
238 instance.setIntNotNullDefaultNullValueNone(nullValue?null:0); break;
239 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
240 instance.setIntNullDefaultNullValueNone(nullValue?null:0); break;
241 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
242 instance.setIntNotNullNoDefaultNullValueException(nullValue?null:0); break;
243 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
244 instance.setIntNullNoDefaultNullValueException(nullValue?null:0); break;
245 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
246 instance.setIntNotNullDefaultNullValueException(nullValue?null:0); break;
247 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
248 instance.setIntNullDefaultNullValueException(nullValue?null:0); break;
249 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
250 instance.setIntNotNullNoDefaultNullValueDefault(nullValue?null:0); break;
251 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
252 instance.setIntNullNoDefaultNullValueDefault(nullValue?null:0); break;
253 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
254 instance.setIntNotNullDefaultNullValueDefault(nullValue?null:0); break;
255 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
256 instance.setIntNullDefaultNullValueDefault(nullValue?null:0); break;
258 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
263 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
264 instance.setLongNotNullNoDefaultNullValueNone(nullValue?null:0L); break;
265 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
266 instance.setLongNullNoDefaultNullValueNone(nullValue?null:0L); break;
267 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
268 instance.setLongNotNullDefaultNullValueNone(nullValue?null:0L); break;
269 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
270 instance.setLongNullDefaultNullValueNone(nullValue?null:0L); break;
271 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
272 instance.setLongNotNullNoDefaultNullValueException(nullValue?null:0L); break;
273 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
274 instance.setLongNullNoDefaultNullValueException(nullValue?null:0L); break;
275 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
276 instance.setLongNotNullDefaultNullValueException(nullValue?null:0L); break;
277 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
278 instance.setLongNullDefaultNullValueException(nullValue?null:0L); break;
279 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
280 instance.setLongNotNullNoDefaultNullValueDefault(nullValue?null:0L); break;
281 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
282 instance.setLongNullNoDefaultNullValueDefault(nullValue?null:0L); break;
283 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
284 instance.setLongNotNullDefaultNullValueDefault(nullValue?null:0L); break;
285 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
286 instance.setLongNullDefaultNullValueDefault(nullValue?null:0L); break;
288 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
292 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
293 instance.setShortNotNullNoDefaultNullValueNone(nullValue?null:(short)0); break;
294 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
295 instance.setShortNullNoDefaultNullValueNone(nullValue?null:(short)0); break;
296 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
297 instance.setShortNotNullDefaultNullValueNone(nullValue?null:(short)0); break;
298 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
299 instance.setShortNullDefaultNullValueNone(nullValue?null:(short)0); break;
300 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
301 instance.setShortNotNullNoDefaultNullValueException(nullValue?null:(short)0); break;
302 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
303 instance.setShortNullNoDefaultNullValueException(nullValue?null:(short)0); break;
304 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
305 instance.setShortNotNullDefaultNullValueException(nullValue?null:(short)0); break;
306 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
307 instance.setShortNullDefaultNullValueException(nullValue?null:(short)0); break;
308 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
309 instance.setShortNotNullNoDefaultNullValueDefault(nullValue?null:(short)0); break;
310 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
311 instance.setShortNullNoDefaultNullValueDefault(nullValue?null:(short)0); break;
312 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
313 instance.setShortNotNullDefaultNullValueDefault(nullValue?null:(short)0); break;
314 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
315 instance.setShortNullDefaultNullValueDefault(nullValue?null:(short)0); break;
317 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
321 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
322 instance.setByteNotNullNoDefaultNullValueNone(nullValue?null:(byte)0); break;
323 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
324 instance.setByteNullNoDefaultNullValueNone(nullValue?null:(byte)0); break;
325 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
326 instance.setByteNotNullDefaultNullValueNone(nullValue?null:(byte)0); break;
327 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
328 instance.setByteNullDefaultNullValueNone(nullValue?null:(byte)0); break;
329 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
330 instance.setByteNotNullNoDefaultNullValueException(nullValue?null:(byte)0); break;
331 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
332 instance.setByteNullNoDefaultNullValueException(nullValue?null:(byte)0); break;
333 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
334 instance.setByteNotNullDefaultNullValueException(nullValue?null:(byte)0); break;
335 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
336 instance.setByteNullDefaultNullValueException(nullValue?null:(byte)0); break;
337 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
338 instance.setByteNotNullNoDefaultNullValueDefault(nullValue?null:(byte)0); break;
339 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
340 instance.setByteNullNoDefaultNullValueDefault(nullValue?null:(byte)0); break;
341 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
342 instance.setByteNotNullDefaultNullValueDefault(nullValue?null:(byte)0); break;
343 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
344 instance.setByteNullDefaultNullValueDefault(nullValue?null:(byte)0); break;
346 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
350 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
351 instance.setStringNotNullNoDefaultNullValueNone(nullValue?null:"0"); break;
352 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
353 instance.setStringNullNoDefaultNullValueNone(nullValue?null:"0"); break;
354 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
355 instance.setStringNotNullDefaultNullValueNone(nullValue?null:"0"); break;
356 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
357 instance.setStringNullDefaultNullValueNone(nullValue?null:"0"); break;
358 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
359 instance.setStringNotNullNoDefaultNullValueException(nullValue?null:"0"); break;
360 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
361 instance.setStringNullNoDefaultNullValueException(nullValue?null:"0"); break;
362 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
363 instance.setStringNotNullDefaultNullValueException(nullValue?null:"0"); break;
364 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
365 instance.setStringNullDefaultNullValueException(nullValue?null:"0"); break;
366 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
367 instance.setStringNotNullNoDefaultNullValueDefault(nullValue?null:"0"); break;
368 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
369 instance.setStringNullNoDefaultNullValueDefault(nullValue?null:"0"); break;
370 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
371 instance.setStringNotNullDefaultNullValueDefault(nullValue?null:"0"); break;
372 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
373 instance.setStringNullDefaultNullValueDefault(nullValue?null:"0"); break;
375 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
380 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
381 instance.setFloatNotNullNoDefaultNullValueNone(nullValue?null:0.0F); break;
382 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
383 instance.setFloatNullNoDefaultNullValueNone(nullValue?null:0.0F); break;
384 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
385 instance.setFloatNotNullDefaultNullValueNone(nullValue?null:0.0F); break;
386 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
387 instance.setFloatNullDefaultNullValueNone(nullValue?null:0.0F); break;
388 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
389 instance.setFloatNotNullNoDefaultNullValueException(nullValue?null:0.0F); break;
390 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
391 instance.setFloatNullNoDefaultNullValueException(nullValue?null:0.0F); break;
392 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
393 instance.setFloatNotNullDefaultNullValueException(nullValue?null:0.0F); break;
394 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
395 instance.setFloatNullDefaultNullValueException(nullValue?null:0.0F); break;
396 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
397 instance.setFloatNotNullNoDefaultNullValueDefault(nullValue?null:0.0F); break;
398 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
399 instance.setFloatNullNoDefaultNullValueDefault(nullValue?null:0.0F); break;
400 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
401 instance.setFloatNotNullDefaultNullValueDefault(nullValue?null:0.0F); break;
402 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
403 instance.setFloatNullDefaultNullValueDefault(nullValue?null:0.0F); break;
405 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
410 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
411 instance.setDoubleNotNullNoDefaultNullValueNone(nullValue?null:0.0D); break;
412 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
413 instance.setDoubleNullNoDefaultNullValueNone(nullValue?null:0.0D); break;
414 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
415 instance.setDoubleNotNullDefaultNullValueNone(nullValue?null:0.0D); break;
416 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
417 instance.setDoubleNullDefaultNullValueNone(nullValue?null:0.0D); break;
418 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
419 instance.setDoubleNotNullNoDefaultNullValueException(nullValue?null:0.0D); break;
420 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
421 instance.setDoubleNullNoDefaultNullValueException(nullValue?null:0.0D); break;
422 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
423 instance.setDoubleNotNullDefaultNullValueException(nullValue?null:0.0D); break;
424 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
425 instance.setDoubleNullDefaultNullValueException(nullValue?null:0.0D); break;
426 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
427 instance.setDoubleNotNullNoDefaultNullValueDefault(nullValue?null:0.0D); break;
428 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
429 instance.setDoubleNullNoDefaultNullValueDefault(nullValue?null:0.0D); break;
430 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
431 instance.setDoubleNotNullDefaultNullValueDefault(nullValue?null:0.0D); break;
432 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
433 instance.setDoubleNullDefaultNullValueDefault(nullValue?null:0.0D); break;
435 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
439 throw new IllegalArgumentException("Illegal property type " + propertyType);
443 /** Get the value of a specific field.
445 * @param instance the instance to get values for
446 * @param propertyType the property type
447 * @param fieldIndex the field within the property
449 private Object getValue(NullValues instance, int propertyType, int fieldIndex) {
450 if (instance == null)
452 switch(propertyType) {
455 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
456 return instance.getIntNotNullNoDefaultNullValueNone();
457 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
458 return instance.getIntNullNoDefaultNullValueNone();
459 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
460 return instance.getIntNotNullDefaultNullValueNone();
461 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
462 return instance.getIntNullDefaultNullValueNone();
463 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
464 return instance.getIntNotNullNoDefaultNullValueException();
465 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
466 return instance.getIntNullNoDefaultNullValueException();
467 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
468 return instance.getIntNotNullDefaultNullValueException();
469 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
470 return instance.getIntNullDefaultNullValueException();
471 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
472 return instance.getIntNotNullNoDefaultNullValueDefault();
473 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
474 return instance.getIntNullNoDefaultNullValueDefault();
475 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
476 return instance.getIntNotNullDefaultNullValueDefault();
477 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
478 return instance.getIntNullDefaultNullValueDefault();
480 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
485 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
486 return instance.getLongNotNullNoDefaultNullValueNone();
487 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
488 return instance.getLongNullNoDefaultNullValueNone();
489 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
490 return instance.getLongNotNullDefaultNullValueNone();
491 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
492 return instance.getLongNullDefaultNullValueNone();
493 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
494 return instance.getLongNotNullNoDefaultNullValueException();
495 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
496 return instance.getLongNullNoDefaultNullValueException();
497 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
498 return instance.getLongNotNullDefaultNullValueException();
499 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
500 return instance.getLongNullDefaultNullValueException();
501 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
502 return instance.getLongNotNullNoDefaultNullValueDefault();
503 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
504 return instance.getLongNullNoDefaultNullValueDefault();
505 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
506 return instance.getLongNotNullDefaultNullValueDefault();
507 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
508 return instance.getLongNullDefaultNullValueDefault();
510 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
514 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
515 return instance.getShortNotNullNoDefaultNullValueNone();
516 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
517 return instance.getShortNullNoDefaultNullValueNone();
518 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
519 return instance.getShortNotNullDefaultNullValueNone();
520 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
521 return instance.getShortNullDefaultNullValueNone();
522 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
523 return instance.getShortNotNullNoDefaultNullValueException();
524 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
525 return instance.getShortNullNoDefaultNullValueException();
526 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
527 return instance.getShortNotNullDefaultNullValueException();
528 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
529 return instance.getShortNullDefaultNullValueException();
530 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
531 return instance.getShortNotNullNoDefaultNullValueDefault();
532 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
533 return instance.getShortNullNoDefaultNullValueDefault();
534 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
535 return instance.getShortNotNullDefaultNullValueDefault();
536 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
537 return instance.getShortNullDefaultNullValueDefault();
539 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
543 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
544 return instance.getByteNotNullNoDefaultNullValueNone();
545 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
546 return instance.getByteNullNoDefaultNullValueNone();
547 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
548 return instance.getByteNotNullDefaultNullValueNone();
549 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
550 return instance.getByteNullDefaultNullValueNone();
551 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
552 return instance.getByteNotNullNoDefaultNullValueException();
553 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
554 return instance.getByteNullNoDefaultNullValueException();
555 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
556 return instance.getByteNotNullDefaultNullValueException();
557 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
558 return instance.getByteNullDefaultNullValueException();
559 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
560 return instance.getByteNotNullNoDefaultNullValueDefault();
561 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
562 return instance.getByteNullNoDefaultNullValueDefault();
563 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
564 return instance.getByteNotNullDefaultNullValueDefault();
565 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
566 return instance.getByteNullDefaultNullValueDefault();
568 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
572 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
573 return instance.getStringNotNullNoDefaultNullValueNone();
574 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
575 return instance.getStringNullNoDefaultNullValueNone();
576 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
577 return instance.getStringNotNullDefaultNullValueNone();
578 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
579 return instance.getStringNullDefaultNullValueNone();
580 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
581 return instance.getStringNotNullNoDefaultNullValueException();
582 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
583 return instance.getStringNullNoDefaultNullValueException();
584 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
585 return instance.getStringNotNullDefaultNullValueException();
586 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
587 return instance.getStringNullDefaultNullValueException();
588 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
589 return instance.getStringNotNullNoDefaultNullValueDefault();
590 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
591 return instance.getStringNullNoDefaultNullValueDefault();
592 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
593 return instance.getStringNotNullDefaultNullValueDefault();
594 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
595 return instance.getStringNullDefaultNullValueDefault();
597 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
602 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
603 return instance.getFloatNotNullNoDefaultNullValueNone();
604 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
605 return instance.getFloatNullNoDefaultNullValueNone();
606 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
607 return instance.getFloatNotNullDefaultNullValueNone();
608 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
609 return instance.getFloatNullDefaultNullValueNone();
610 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
611 return instance.getFloatNotNullNoDefaultNullValueException();
612 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
613 return instance.getFloatNullNoDefaultNullValueException();
614 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
615 return instance.getFloatNotNullDefaultNullValueException();
616 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
617 return instance.getFloatNullDefaultNullValueException();
618 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
619 return instance.getFloatNotNullNoDefaultNullValueDefault();
620 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
621 return instance.getFloatNullNoDefaultNullValueDefault();
622 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
623 return instance.getFloatNotNullDefaultNullValueDefault();
624 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
625 return instance.getFloatNullDefaultNullValueDefault();
627 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
632 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
633 return instance.getDoubleNotNullNoDefaultNullValueNone();
634 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_NONE:
635 return instance.getDoubleNullNoDefaultNullValueNone();
636 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
637 return instance.getDoubleNotNullDefaultNullValueNone();
638 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_NONE:
639 return instance.getDoubleNullDefaultNullValueNone();
640 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
641 return instance.getDoubleNotNullNoDefaultNullValueException();
642 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_EXCEPTION:
643 return instance.getDoubleNullNoDefaultNullValueException();
644 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
645 return instance.getDoubleNotNullDefaultNullValueException();
646 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_EXCEPTION:
647 return instance.getDoubleNullDefaultNullValueException();
648 case DATABASE_NOT_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
649 return instance.getDoubleNotNullNoDefaultNullValueDefault();
650 case DATABASE_NULL + DATABASE_NO_DEFAULT + NULLVALUE_DEFAULT:
651 return instance.getDoubleNullNoDefaultNullValueDefault();
652 case DATABASE_NOT_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
653 return instance.getDoubleNotNullDefaultNullValueDefault();
654 case DATABASE_NULL + DATABASE_DEFAULT + NULLVALUE_DEFAULT:
655 return instance.getDoubleNullDefaultNullValueDefault();
657 throw new IllegalArgumentException("Illegal field index " + fieldIndex);
661 throw new IllegalArgumentException("Illegal property type " + propertyType);