SqlTimeCellConverterFactory.java

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

  2. import java.sql.Time;
  3. import java.text.DateFormat;
  4. import java.text.ParseException;
  5. import java.util.Calendar;
  6. import java.util.Date;

  7. import com.gh.mygreen.xlsmapper.Configuration;
  8. import com.gh.mygreen.xlsmapper.cellconverter.CellConverter;
  9. import com.gh.mygreen.xlsmapper.fieldaccessor.FieldAccessor;

  10. /**
  11.  * {@link Time} を処理する {@link CellConverter} を作成するためのファクトリクラス。
  12.  * @since 2.0
  13.  * @author T.TSUCHIE
  14.  *
  15.  */
  16. public class SqlTimeCellConverterFactory extends AbstractDateCellConverterFactory<Time> {

  17.     @Override
  18.     public SqlTimeCellConverter create(final FieldAccessor field, final Configuration config) {

  19.         final SqlTimeCellConverter cellConverter = new SqlTimeCellConverter(field, config, this);
  20.         setupCellConverter(cellConverter, field, config);

  21.         return cellConverter;
  22.     }

  23.     /**
  24.      * {@inheritDoc}
  25.      * 基準となる日付をExcelの1900年1月0日=1899年12月31日として、パースする。
  26.      */
  27.     @Override
  28.     protected Time parseString(final DateFormat formatter, final String text) throws ParseException {
  29.         Date date = formatter.parse(text);
  30.         Calendar cal = Calendar.getInstance();
  31.         cal.setTime(date);
  32.         cal.set(1899, 12-1, 31);

  33.         return convertTypeValue(cal.getTime());
  34.     }

  35.     @Override
  36.     protected Time convertTypeValue(Date date) {
  37.         return new Time(date.getTime());
  38.     }

  39.     @Override
  40.     protected String getDefaultJavaPattern() {
  41.         return "HH:mm:ss";
  42.     }

  43.     @Override
  44.     protected String getDefaultExcelPattern() {
  45.         return "HH:mm:ss";
  46.     }

  47.     public class SqlTimeCellConverter extends AbstractDateCellConverter<Time> {

  48.         private final SqlTimeCellConverterFactory convererFactory;

  49.         private SqlTimeCellConverter(final FieldAccessor field, final Configuration config,
  50.                 final SqlTimeCellConverterFactory convererFactory) {
  51.             super(field, config);
  52.             this.convererFactory = convererFactory;
  53.         }

  54.         @Override
  55.         protected Time convertTypeValue(final Date value) {
  56.             return convererFactory.convertTypeValue(value);
  57.         }

  58.     }

  59. }