ValidationCellProcessor.java
package com.github.mygreen.supercsv.cellprocessor;
import org.supercsv.cellprocessor.CellProcessorAdaptor;
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.util.CsvContext;
import com.github.mygreen.supercsv.exception.SuperCsvValidationException;
import com.github.mygreen.supercsv.util.Utils;
/**
* 入力値検証用の{@link CellProcessor}のベースとなるクラス。
*
* @version 2.0
* @author T.TSUCHIE
*
*/
public abstract class ValidationCellProcessor extends CellProcessorAdaptor {
/**
* 検証エラー時のメッセージ
*/
protected String validationMessage;
/**
* チェインの最後に実行される{@link CellProcessor}のインスタンスを作成するコンストラクタ。
*/
protected ValidationCellProcessor() {
super();
}
/**
* チェインの次に実行される{@link CellProcessor}を指定してインスタンスを作成するコンストラクタ。
*
* @param next チェインで次に実行される{@link CellProcessor}
* @throws NullPointerException {@literal if next is null.}
*/
protected ValidationCellProcessor(final CellProcessor next) {
super(next);
}
/**
* 検証エラー時のメッセージを取得します。
* @return エラーメッセージ。
*/
public String getValidationMessage() {
return validationMessage;
}
/**
* 検証エラー時のメッセージを設定する。
* @param validationMessage エラー時のメッセージ。
*/
public void setValidationMessage(String validationMessage) {
this.validationMessage = validationMessage;
}
/**
* 標準の検証用のメッセージを取得する。
* @return {@literal {クラス名.violated}}の形式。
*/
public String getDefaultValidationMessage() {
return String.format("{%s.violated}", getClass().getName());
}
/**
* {@link SuperCsvValidationException.Builder}のインスタンスを作成する。
* @param context CsvContext CSVのコンテキスト。
* @return 予め検証用のメッセージは設定された状態で作成される。
* ただし、{@link #getValidationMessage()}がnullまたは空の場合、{@link #getDefaultValidationMessage()}が設定される。
*/
public SuperCsvValidationException.Builder createValidationException(final CsvContext context) {
String message = getValidationMessage();
if(Utils.isEmpty(message)) {
message = getDefaultValidationMessage();
}
return new SuperCsvValidationException.Builder(context, this)
.validationMessage(message);
}
}