TextParser.java

package com.github.mygreen.supercsv.cellprocessor.format;

import java.util.Collections;
import java.util.Map;
import java.util.Optional;

/**
 * 文字列をパースしてオブジェクトに変換するインタフェース。
 * 
 * @since 2.0
 * @param <T> オブジェクトのタイプ
 * @author T.TSUCHIE
 *
 */
@FunctionalInterface
public interface TextParser<T> {
    
    /**
     * 書式を取得します。
     * @return 書式を持たない場合は空を返します。
     */
    default Optional<String> getPattern() {
        return Optional.empty();
    }
    
    /**
     * パース時のエラーメッセージ中の変数を取得します。
     * @return 
     */
    default Map<String, Object> getMessageVariables() {
        return Collections.emptyMap();
    }
    
    /**
     * パース時のエラーメッセージを取得します。
     * @return メッセージが内場合は空を返します。
     */
    default Optional<String> getValidationMessage() {
        return Optional.empty();
    }
    
    /**
     * 文字列をパースして、オブジェクトに変換する。
     * <p>実装する際には、API経由などでパースした際に発生した例外は、{@link TextParseException}でラップするしてください。
     *   <br>{@link TextParseException}でラップすると、{@link ParseProcessor}でエラーオブジェクトに変換されます。
     * </p>
     * 
     * @param text パース対象の文字列。
     * @return 変換された値。
     * @throws TextParseException パースに失敗した際にスローされます。
     */
    T parse(String text);
    
}