1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.core.api.criteria;
17
18 import org.apache.commons.lang.builder.EqualsBuilder;
19 import org.apache.commons.lang.builder.HashCodeBuilder;
20 import org.apache.commons.lang.builder.ToStringBuilder;
21
22 import javax.xml.bind.annotation.XmlAccessType;
23 import javax.xml.bind.annotation.XmlAccessorType;
24 import javax.xml.bind.annotation.XmlRootElement;
25 import javax.xml.bind.annotation.XmlType;
26 import javax.xml.bind.annotation.XmlValue;
27 import java.math.BigInteger;
28
29
30
31
32
33
34
35
36 @XmlRootElement(name = CriteriaIntegerValue.Constants.ROOT_ELEMENT_NAME)
37 @XmlAccessorType(XmlAccessType.NONE)
38 @XmlType(name = CriteriaIntegerValue.Constants.TYPE_NAME)
39 public final class CriteriaIntegerValue implements CriteriaValue<BigInteger> {
40
41 @XmlValue
42 private BigInteger value;
43
44 CriteriaIntegerValue() {
45 this.value = null;
46 }
47
48 CriteriaIntegerValue(BigInteger value) {
49 validateValue(value);
50 this.value = safeInstance(value);
51 }
52
53 CriteriaIntegerValue(Number value) {
54 validateValue(value);
55 this.value = BigInteger.valueOf(value.longValue());
56 }
57
58 private static void validateValue(Object value) {
59 if (value == null) {
60 throw new IllegalArgumentException("Value cannot be null.");
61 }
62 }
63
64
65
66
67
68
69
70
71
72 private static BigInteger safeInstance(BigInteger val) {
73 if (val.getClass() != BigInteger.class) {
74 return new BigInteger(val.toByteArray());
75 }
76 return val;
77 }
78
79 @Override
80 public BigInteger getValue() {
81 return value;
82 }
83
84 @Override
85 public int hashCode() {
86 return HashCodeBuilder.reflectionHashCode(this);
87 }
88
89 @Override
90 public boolean equals(Object obj) {
91 return EqualsBuilder.reflectionEquals(obj, this);
92 }
93
94 @Override
95 public String toString() {
96 return ToStringBuilder.reflectionToString(this);
97 }
98
99
100
101
102 static class Constants {
103 final static String ROOT_ELEMENT_NAME = "integerValue";
104 final static String TYPE_NAME = "CriteriaIntegerValueType";
105 }
106
107 }