1 package com.github.mygreen.supercsv.cellprocessor.format;
2
3 import java.util.Collections;
4 import java.util.Map;
5 import java.util.Optional;
6
7 /**
8 * 文字列をパースしてオブジェクトに変換するインタフェース。
9 *
10 * @since 2.0
11 * @param <T> オブジェクトのタイプ
12 * @author T.TSUCHIE
13 *
14 */
15 @FunctionalInterface
16 public interface TextParser<T> {
17
18 /**
19 * 書式を取得します。
20 * @return 書式を持たない場合は空を返します。
21 */
22 default Optional<String> getPattern() {
23 return Optional.empty();
24 }
25
26 /**
27 * パース時のエラーメッセージ中の変数を取得します。
28 * @return
29 */
30 default Map<String, Object> getMessageVariables() {
31 return Collections.emptyMap();
32 }
33
34 /**
35 * パース時のエラーメッセージを取得します。
36 * @return メッセージが内場合は空を返します。
37 */
38 default Optional<String> getValidationMessage() {
39 return Optional.empty();
40 }
41
42 /**
43 * 文字列をパースして、オブジェクトに変換する。
44 * <p>実装する際には、API経由などでパースした際に発生した例外は、{@link TextParseException}でラップするしてください。
45 * <br>{@link TextParseException}でラップすると、{@link ParseProcessor}でエラーオブジェクトに変換されます。
46 * </p>
47 *
48 * @param text パース対象の文字列。
49 * @return 変換された値。
50 * @throws TextParseException パースに失敗した際にスローされます。
51 */
52 T parse(String text);
53
54 }