BigIntegerCellConverterFactory.java

  1. package com.gh.mygreen.xlsmapper.cellconverter.impl;

  2. import java.math.BigDecimal;
  3. import java.math.BigInteger;
  4. import java.math.RoundingMode;

  5. import com.gh.mygreen.xlsmapper.Configuration;
  6. import com.gh.mygreen.xlsmapper.cellconverter.CellConverter;
  7. import com.gh.mygreen.xlsmapper.fieldaccessor.FieldAccessor;

  8. /**
  9.  * {@link BigInteger}型を処理する{@link CellConverter}を作成するクラス。
  10.  *
  11.  * @since 2.0
  12.  * @author T.TSUCHIE
  13.  *
  14.  */
  15. public class BigIntegerCellConverterFactory extends AbstractNumberCellConverterFactory<BigInteger> {
  16.    
  17.     @Override
  18.     public BigIntegerCellConverter create(final FieldAccessor field, final Configuration config) {
  19.        
  20.         final BigIntegerCellConverter cellConverter = new BigIntegerCellConverter(field, config, this);
  21.         setupCellConverter(cellConverter, field, config);
  22.        
  23.         return cellConverter;
  24.        
  25.     }
  26.    
  27.     @Override
  28.     protected BigInteger convertTypeValue(final BigDecimal value) throws NumberFormatException, ArithmeticException {
  29.         BigDecimal decimal = value.setScale(0, RoundingMode.HALF_UP);
  30.         return decimal.toBigIntegerExact();
  31.     }
  32.    
  33.     public class BigIntegerCellConverter extends AbstractNumberCellConverter<BigInteger> {
  34.        
  35.         private final BigIntegerCellConverterFactory convererFactory;
  36.        
  37.         private BigIntegerCellConverter(final FieldAccessor field, final Configuration config,
  38.                 final BigIntegerCellConverterFactory convererFactory) {
  39.            
  40.             super(field, config);
  41.             this.convererFactory = convererFactory;
  42.         }
  43.        
  44.         @Override
  45.         protected BigInteger convertTypeValue(final BigDecimal value) {
  46.             return convererFactory.convertTypeValue(value);
  47.         }
  48.        
  49.     }
  50.    
  51. }