-
Notifications
You must be signed in to change notification settings - Fork 54
/
IntegerAdapter.java
48 lines (34 loc) · 1.14 KB
/
IntegerAdapter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
* Copyright (c) 2014 Villu Ruusmann
*/
package org.dmg.pmml.adapters;
import java.math.BigInteger;
import javax.xml.bind.DatatypeConverter;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class IntegerAdapter extends XmlAdapter<String, Integer> {
@Override
public Integer unmarshal(String value){
if("0".equals(value)){
return IntegerAdapter.ZERO;
} else
if("1".equals(value)){
return IntegerAdapter.ONE;
}
BigInteger integer = DatatypeConverter.parseInteger(value);
if(!ValueUtil.checkRange(integer, IntegerAdapter.MIN_VALUE, IntegerAdapter.MAX_VALUE)){
throw new IllegalArgumentException(value);
}
return Integer.valueOf(integer.intValue());
}
@Override
public String marshal(Integer value){
if(value == null){
return null;
}
return DatatypeConverter.printInteger(BigInteger.valueOf(value.intValue()));
}
public static final Integer ZERO = Integer.valueOf(0);
public static final Integer ONE = Integer.valueOf(1);
protected static final BigInteger MIN_VALUE = BigInteger.valueOf(Integer.MIN_VALUE);
protected static final BigInteger MAX_VALUE = BigInteger.valueOf(Integer.MAX_VALUE);
}