com.github.mygreen.supercsv.validation.CsvFieldValidator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of super-csv-annotation Show documentation
Show all versions of super-csv-annotation Show documentation
CSVのJavaライブラリであるSuperCSVに、アノテーション機能を追加したライブラリです。
package com.github.mygreen.supercsv.validation;
import java.util.HashMap;
import java.util.Map;
import org.supercsv.util.CsvContext;
import com.github.mygreen.supercsv.cellprocessor.format.TextPrinter;
/**
* フィールドに対するValidator
*
* @since 2.0
* @author T.TSUCHIE
*
*/
@FunctionalInterface
public interface CsvFieldValidator {
/**
* メッセージ変数を取得する。
* デフォルトの場合、下記の値が設定される。
*
* - lineNumber : カラムの値に改行が含まれている場合を考慮した実際の行番号です。1から始まります。
* - rowNumber : CSVの行番号です。1から始まります。
* - columnNumber : CSVの列番号です。1から始まります。
* - label : カラムの見出し名です。
* - value : 実際のカラムの値です。
* - printer : カラムの値に対数するフォーマッタです。{@link TextPrinter#print(Object)}でvalue値を文字列に変換します。
*
*
* @param field フィールド情報
* @return メッセージ変数のマップ。
*/
default Map createMessageVariables(final CsvField field) {
final CsvContext csvContext = field.getValidationContext().getCsvContext();
final Map variables = new HashMap<>();
variables.put("lineNumber", csvContext.getLineNumber());
variables.put("rowNumber", csvContext.getRowNumber());
variables.put("columnNumber", field.getColumnNumber());
variables.put("label", field.getLabel());
variables.put("validatedValue", field.getValue());
variables.put("printer", field.getColumnMapping().getFormatter());
return variables;
}
/**
* フィールドの値の入力値検証を行います。
* @param bindingErrors エラー情報。
* @param field フィールド情報
*/
void validate(CsvBindingErrors bindingErrors, CsvField field);
}