1
2
3
4
5
6 package dev.metaschema.core.metapath.item.atomic.impl;
7
8 import java.math.BigDecimal;
9 import java.math.BigInteger;
10
11 import dev.metaschema.core.datatype.adapter.DecimalAdapter;
12 import dev.metaschema.core.metapath.item.atomic.IIntegerItem;
13 import edu.umd.cs.findbugs.annotations.NonNull;
14
15
16
17
18
19 public abstract class AbstractIntegerItem
20 extends AbstractDecimalItem<BigInteger>
21 implements IIntegerItem {
22
23
24
25
26
27
28 protected AbstractIntegerItem(@NonNull BigInteger value) {
29 super(value);
30 }
31
32 @Override
33 public boolean toEffectiveBoolean() {
34 return !BigInteger.ZERO.equals(asInteger());
35 }
36
37 @Override
38 public BigDecimal asDecimal() {
39 return new BigDecimal(getValue(), DecimalAdapter.mathContext());
40 }
41
42 @Override
43 public BigInteger asInteger() {
44 return getValue();
45 }
46
47 @Override
48 public int hashCode() {
49 return asInteger().hashCode();
50 }
51
52 @Override
53 public boolean equals(Object obj) {
54 return this == obj
55 || obj instanceof IIntegerItem && compareTo((IIntegerItem) obj) == 0;
56 }
57 }