Require.java
package com.github.mygreen.supercsv.cellprocessor.constraint;
import org.supercsv.cellprocessor.ift.BoolCellProcessor;
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.cellprocessor.ift.DateCellProcessor;
import org.supercsv.cellprocessor.ift.DoubleCellProcessor;
import org.supercsv.cellprocessor.ift.LongCellProcessor;
import org.supercsv.cellprocessor.ift.StringCellProcessor;
import org.supercsv.util.CsvContext;
import com.github.mygreen.supercsv.cellprocessor.ValidationCellProcessor;
/**
* 値が必須かどうかチェックする制約のCellProcessor。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public class Require extends ValidationCellProcessor
implements BoolCellProcessor, DateCellProcessor, DoubleCellProcessor, LongCellProcessor, StringCellProcessor {
private final boolean considerEmpty;
private final boolean considerBlank;
public Require(final boolean considerEmpty, final boolean considerBlank) {
super();
this.considerEmpty = considerEmpty;
this.considerBlank = considerBlank;
}
public Require(final boolean considerEmpty, final boolean considerBlank, final CellProcessor next) {
super(next);
this.considerEmpty = considerEmpty;
this.considerBlank = considerBlank;
}
@Override
public <T> T execute(final Object value, final CsvContext context) {
if (!validate(value)){
throw createValidationException(context)
.message("null or empty value encountered")
.messageVariables("considerEmpty", considerEmpty)
.messageVariables("considerBlank", considerBlank)
.rejectedValue(value)
.build();
}
return next.execute(value, context);
}
private boolean validate(final Object value) {
if(value == null) {
return false;
}
if(value instanceof String) {
final String strValue = (String)value;
if(considerEmpty && strValue.isEmpty()) {
return false;
}
if(considerBlank && strValue.trim().isEmpty()) {
return false;
}
}
return true;
}
/**
* 空文字を考慮するかどうか。
* @return trueの場合、空文字を考慮します。
*/
public boolean isConsiderEmpty() {
return considerEmpty;
}
/**
* 空白文字を考慮するかどうか。
* @return trueの場合、空白文字を考慮します。
*/
public boolean isConsiderBlank() {
return considerBlank;
}
}