PropertyPath.java
- package com.gh.mygreen.xlsmapper.util;
- import java.io.Serializable;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 解析済みのプロパティ式のオブジェクト。
- *
- * @since 1.0
- * @author T.TSUCHIE
- *
- */
- public class PropertyPath implements Serializable {
-
- /** serialVersionUID */
- private static final long serialVersionUID = -4273945900442385415L;
-
- /**
- * 解析元のパス
- */
- private final String path;
-
- /**
- * パスを解析してトークンに分解した結果。
- */
- private final List<Token> tokens;
-
- /**
- * 解析元のパスを指定するコンストラクタ。
- * @param path 解析元のパス
- * @throws IllegalArgumentException path is null or empty.
- */
- public PropertyPath(final String path) {
- ArgUtils.notEmpty(path, "path");
- this.path = path;
- this.tokens = new ArrayList<>();
- }
-
- /**
- * 解析元のパスを取得する。
- * @return
- */
- public String getPath() {
- return path;
- }
-
- /**
- * トークンを追加する。
- * @param token
- */
- public void add(final Token token) {
- this.tokens.add(token);
- }
-
- /**
- * トークンに分割した結果を取得する。
- * @return
- */
- public List<Token> getPathAsToken() {
- return new ArrayList<>(tokens);
- }
-
- /**
- * パスを分割したもの。
- * @since 1.0
- * @author T.TSUCHIE
- *
- */
- public static class Token implements Serializable {
-
- /** serialVersionUID */
- private static final long serialVersionUID = 2281725403723210214L;
-
- /** トークンの文字 */
- private final String token;
-
- /**
- * エスケープ文字を除去したした文字
- */
- private final String value;
-
- public Token(String token) {
- this.token = token;
- this.value = Utils.removeEscapeChar(token, '\\');
- }
-
- /**
- * トークンの値を取得する
- * @return
- */
- public String getToken() {
- return token;
- }
-
- /**
- * エスケープ文字を取得する。
- * @return
- */
- public String getValue() {
- return value;
- }
-
- /**
- * 括弧で囲まれた条件の書式'[キー]'を表すトークン。
- */
- public static class Key extends Token {
-
- /** serialVersionUID */
- private static final long serialVersionUID = -5951809427315756202L;
- public Key(String value) {
- super(value);
- }
-
- /**
- * 括弧を除いた条件の値の取得。
- * @return
- */
- public String getKey() {
- int length = getValue().length();
- return getValue().substring(1, length-1);
- }
-
- }
-
- /**
- * パスの区切り文字"."を表すトークン。
- *
- */
- public static class Separator extends Token {
-
- /** serialVersionUID */
- private static final long serialVersionUID = -9021975741257702192L;
-
- public Separator() {
- super(".");
- }
-
- }
-
- /**
- * プロパティ名を表すトークン。
- *
- */
- public static class Name extends Token {
-
- /** serialVersionUID */
- private static final long serialVersionUID = -1196971215805919815L;
-
- public Name(String value) {
- super(value);
- }
-
- }
- }
-
- }