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 import org.kuali.rice.core.api.util.type.KualiDecimal;
22 import org.kuali.rice.core.api.util.type.KualiPercent;
23
24 import javax.xml.bind.annotation.XmlAccessType;
25 import javax.xml.bind.annotation.XmlAccessorType;
26 import javax.xml.bind.annotation.XmlRootElement;
27 import javax.xml.bind.annotation.XmlType;
28 import javax.xml.bind.annotation.XmlValue;
29 import java.math.BigDecimal;
30
31
32
33
34
35
36
37
38 @XmlRootElement(name = CriteriaKualiDecimalValue.Constants.ROOT_ELEMENT_NAME)
39 @XmlAccessorType(XmlAccessType.NONE)
40 @XmlType(name = CriteriaKualiDecimalValue.Constants.TYPE_NAME)
41 public final class CriteriaKualiDecimalValue implements CriteriaValue<KualiDecimal> {
42
43 @XmlValue
44 private final BigDecimal value;
45
46 CriteriaKualiDecimalValue() {
47 this.value = null;
48 }
49
50 CriteriaKualiDecimalValue(KualiDecimal value) {
51 validateValue(value);
52 this.value = safeInstance(value);
53 this.value.setScale(KualiDecimal.SCALE);
54 }
55
56 CriteriaKualiDecimalValue(double value) {
57 validateValue(value);
58 this.value = new KualiDecimal(value).bigDecimalValue();
59 }
60
61 CriteriaKualiDecimalValue(int value) {
62 validateValue(value);
63 this.value = new KualiDecimal(value).bigDecimalValue();
64 }
65
66 CriteriaKualiDecimalValue(String value) {
67 validateValue(value);
68 this.value = new KualiDecimal(value).bigDecimalValue();
69 }
70
71
72 CriteriaKualiDecimalValue(BigDecimal value) {
73 validateValue(value);
74 this.value = new KualiDecimal(value).bigDecimalValue();
75 }
76
77 private static void validateValue(Object value) {
78 if (value == null) {
79 throw new IllegalArgumentException("Value cannot be null.");
80 }
81 }
82
83
84
85
86
87
88
89
90
91
92
93 private static BigDecimal safeInstance(KualiDecimal val) {
94 return new BigDecimal(val.bigDecimalValue().toPlainString());
95 }
96
97 @Override
98 public KualiDecimal getValue() {
99 return new KualiDecimal(this.value);
100 }
101
102 @Override
103 public int hashCode() {
104 return HashCodeBuilder.reflectionHashCode(this);
105 }
106
107 @Override
108 public boolean equals(Object obj) {
109 return EqualsBuilder.reflectionEquals(obj, this);
110 }
111
112 @Override
113 public String toString() {
114 return ToStringBuilder.reflectionToString(this);
115 }
116
117
118
119
120 static class Constants {
121 final static String ROOT_ELEMENT_NAME = "kualiDecimalValue";
122 final static String TYPE_NAME = "CriteriaKualiDecimalValueType";
123 }
124
125 }