Skip to content

Commit

Permalink
refs #27
Browse files Browse the repository at this point in the history
リスト型にマッピングする際に、トリム処理が有効でかつ各項目のが空の場合無視する処理が有効な場合、空の項目を無視するかどうかの判定にトリム処理を反映させるよう修正。
  • Loading branch information
mygreen committed May 6, 2015
1 parent d48d3b8 commit 585eb09
Showing 1 changed file with 22 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
Expand Down Expand Up @@ -42,8 +44,13 @@ public List toObject(final Cell cell, final FieldAdaptor adaptor, final XlsMappe
itemClass = adaptor.getLoadingGenericClassType();
}

final List list = convertList(cellValue, itemClass, converterAnno, anno);
return list;
try {
final List list = convertList(cellValue, itemClass, converterAnno, anno);
return list;
} catch(NumberFormatException e) {
throw newTypeBindException(e, cell, adaptor, cellValue)
.addAllMessageVars(createTypeErrorMessageVars(anno));
}
}

@SuppressWarnings("unchecked")
Expand All @@ -57,13 +64,12 @@ protected List<?> convertList(final String value, Class<?> itemClass, final XlsC

for(String item : split) {

if(anno.ignoreEmptyItem() && Utils.isEmpty(item)) {
String strVal = Utils.trim(item, converterAnno);
if(anno.ignoreEmptyItem() && Utils.isEmpty(strVal)) {
continue;
}

String strVal = Utils.trim(item, converterAnno);
list.add(Utils.convertToObject(strVal, itemClass));

}
return list;

Expand Down Expand Up @@ -95,6 +101,17 @@ public boolean ignoreEmptyItem() {
};
}

/**
* 型変換エラー時のメッセージ変数の作成
*/
private Map<String, Object> createTypeErrorMessageVars(final XlsArrayConverter anno) {

final Map<String, Object> vars = new LinkedHashMap<>();
vars.put("separator", anno.separator());
vars.put("ignoreEmptyItem", anno.ignoreEmptyItem());
return vars;
}

protected XlsArrayConverter getLoadingAnnotation(final FieldAdaptor adaptor) {
XlsArrayConverter anno = adaptor.getLoadingAnnotation(XlsArrayConverter.class);
if(anno == null) {
Expand Down

0 comments on commit 585eb09

Please sign in to comment.