Skip to content

Commit 76da16e

Browse files
committed
Start Refactoring the API
1 parent 281b01b commit 76da16e

32 files changed

Lines changed: 674 additions & 421 deletions
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
import java.sql.Types;
4+
5+
public abstract class BaseConverter<TSourceType> implements IConverter<TSourceType> {
6+
7+
public Object convert(TSourceType value) {
8+
if(value == null) {
9+
return null;
10+
}
11+
12+
return internalConvert(value);
13+
}
14+
15+
public abstract Object internalConvert(TSourceType value);
16+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
import java.math.BigDecimal;
4+
import java.time.LocalDate;
5+
6+
public class BigDecimalConverter extends BaseConverter<BigDecimal> {
7+
8+
private final int scale;
9+
10+
public BigDecimalConverter(int scale) {
11+
this.scale = scale;
12+
}
13+
14+
@Override
15+
public Object internalConvert(BigDecimal value) {
16+
return value.setScale(scale, BigDecimal.ROUND_HALF_UP);
17+
}
18+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
import java.math.BigInteger;
4+
5+
public class BigIntegerConverter extends BaseConverter<BigInteger> {
6+
@Override
7+
public Object internalConvert(BigInteger value) {
8+
return value.longValueExact();
9+
}
10+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
public class BooleanConverter extends BaseConverter<Boolean> {
4+
@Override
5+
public Object internalConvert(Boolean value) {
6+
return value;
7+
}
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
public class CharacterConverter extends BaseConverter<Character> {
4+
@Override
5+
public Object internalConvert(Character value) {
6+
return value;
7+
}
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
public class DoubleConverter extends BaseConverter<Double> {
4+
@Override
5+
public Object internalConvert(Double value) {
6+
return value;
7+
}
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
public class FloatConverter extends BaseConverter<Float> {
4+
@Override
5+
public Object internalConvert(Float value) {
6+
return value;
7+
}
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
public interface IConverter<TSourceType> {
4+
5+
Object convert(TSourceType value);
6+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
import java.sql.Timestamp;
4+
import java.time.Instant;
5+
6+
public class InstantConverter extends BaseConverter<Instant> {
7+
8+
@Override
9+
public Object internalConvert(Instant value) {
10+
11+
if (value == null) {
12+
return null;
13+
}
14+
15+
Timestamp castedResult = new Timestamp(value.toEpochMilli());
16+
17+
// Round to the nearest 100 nanoseconds, the precision that SQL server can handle:
18+
castedResult.setNanos((value.getNano()/100)*100);
19+
20+
return castedResult;
21+
};
22+
23+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package de.bytefish.jsqlserverbulkinsert.converters;
2+
3+
public class IntegerConverter extends BaseConverter<Integer> {
4+
@Override
5+
public Object internalConvert(Integer value) {
6+
return value;
7+
}
8+
}

0 commit comments

Comments
 (0)