diff --git a/core/pom.xml b/core/pom.xml index b86567b4..eefd2e0a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -110,12 +110,15 @@ ${spring-jdbc.version} + org.mockito mockito-all ${mockito.version} test + + diff --git a/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java new file mode 100644 index 00000000..e122a0cb --- /dev/null +++ b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java @@ -0,0 +1,39 @@ +package org.sql2o.converters; + +import java.math.BigInteger; + +public class BigIntegerConverter extends NumberConverter { + + + public BigIntegerConverter() { + super(false); + } + + @Override + protected BigInteger convertNumberValue(Number number) { + if(null == number){ + return null; + } + else if (number instanceof BigInteger){ + return (BigInteger)number; + } + else{ + return BigInteger.valueOf(number.intValue()); + } + + } + + @Override + protected BigInteger convertStringValue(String string) { + if(null != string) { + return BigInteger.valueOf(Integer.parseInt(string)); + }else{ + return null; + } + } + + @Override + protected String getTypeDescription() { + return BigInteger.class.toString(); + } +} diff --git a/core/src/main/java/org/sql2o/converters/Convert.java b/core/src/main/java/org/sql2o/converters/Convert.java index 68bc51fc..755d8b65 100644 --- a/core/src/main/java/org/sql2o/converters/Convert.java +++ b/core/src/main/java/org/sql2o/converters/Convert.java @@ -11,6 +11,7 @@ import java.io.ByteArrayInputStream; import java.io.InputStream; import java.math.BigDecimal; +import java.math.BigInteger; import java.util.HashMap; import java.util.Map; import java.util.ServiceLoader; @@ -54,6 +55,7 @@ private static void fillDefaults(Map, Converter> mapToFill) { mapToFill.put(byte.class, new ByteConverter(true)); mapToFill.put(BigDecimal.class, new BigDecimalConverter()); + mapToFill.put(BigInteger.class,new BigIntegerConverter()); mapToFill.put(String.class, new StringConverter()); diff --git a/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java new file mode 100644 index 00000000..efce6da1 --- /dev/null +++ b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java @@ -0,0 +1,52 @@ +package org.sql2o.converters; + + +import org.junit.Test; + + +import java.math.BigInteger; + +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.hamcrest.core.IsNull.nullValue; +import static org.junit.Assert.assertThat; + +public class BigIntegerConverterTest { + + private BigIntegerConverter bigIntegerConverter = new BigIntegerConverter(); + + @Test + public void convertNumberValue(){ + BigInteger bigInteger = bigIntegerConverter.convertNumberValue(1); + assertThat(bigInteger,equalTo(BigInteger.ONE)); + } + + @Test + public void convertBigIntegerValue(){ + BigInteger bigInteger = bigIntegerConverter.convertNumberValue(BigInteger.ONE); + assertThat(bigInteger,equalTo(BigInteger.ONE)); + } + + @Test + public void convertStringValue(){ + BigInteger bigInteger = bigIntegerConverter.convertStringValue("1"); + assertThat(bigInteger,equalTo(BigInteger.ONE)); + } + + @Test + public void convertNullValue(){ + BigInteger bigInteger; + + bigInteger = bigIntegerConverter.convertNumberValue(null); + assertThat(bigInteger,is(nullValue())); + + bigInteger = bigIntegerConverter.convertStringValue(null); + assertThat(bigInteger,is(nullValue())); + + } + + @Test + public void getTypeDescription(){ + assertThat(bigIntegerConverter.getTypeDescription(),equalTo("class java.math.BigInteger")); + } +}