SqlTimeCellConverterFactory.java
package com.gh.mygreen.xlsmapper.cellconverter.impl;
import java.sql.Time;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import com.gh.mygreen.xlsmapper.Configuration;
import com.gh.mygreen.xlsmapper.cellconverter.CellConverter;
import com.gh.mygreen.xlsmapper.fieldaccessor.FieldAccessor;
/**
* {@link Time} を処理する {@link CellConverter} を作成するためのファクトリクラス。
* @since 2.0
* @author T.TSUCHIE
*
*/
public class SqlTimeCellConverterFactory extends AbstractDateCellConverterFactory<Time> {
@Override
public SqlTimeCellConverter create(final FieldAccessor field, final Configuration config) {
final SqlTimeCellConverter cellConverter = new SqlTimeCellConverter(field, config, this);
setupCellConverter(cellConverter, field, config);
return cellConverter;
}
/**
* {@inheritDoc}
* 基準となる日付をExcelの1900年1月0日=1899年12月31日として、パースする。
*/
@Override
protected Time parseString(final DateFormat formatter, final String text) throws ParseException {
Date date = formatter.parse(text);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(1899, 12-1, 31);
return convertTypeValue(cal.getTime());
}
@Override
protected Time convertTypeValue(Date date) {
return new Time(date.getTime());
}
@Override
protected String getDefaultJavaPattern() {
return "HH:mm:ss";
}
@Override
protected String getDefaultExcelPattern() {
return "HH:mm:ss";
}
public class SqlTimeCellConverter extends AbstractDateCellConverter<Time> {
private final SqlTimeCellConverterFactory convererFactory;
private SqlTimeCellConverter(final FieldAccessor field, final Configuration config,
final SqlTimeCellConverterFactory convererFactory) {
super(field, config);
this.convererFactory = convererFactory;
}
@Override
protected Time convertTypeValue(final Date value) {
return convererFactory.convertTypeValue(value);
}
}
}