EnumPath.java

  1. package com.github.mygreen.sqlmapper.metamodel;

  2. import com.github.mygreen.sqlmapper.metamodel.expression.EnumExpression;


  3. /**
  4.  * 列挙型のプロパティを表現します。
  5.  *
  6.  *
  7.  * @author T.TSUCHIE
  8.  *
  9.  * @param <T> 列挙型のタイプ
  10.  */
  11. public class EnumPath<T extends Enum<T>> extends EnumExpression<T> implements PropertyPath<T> {

  12.     private final PathMixin<T> pathMixin;

  13.     /**
  14.      * プロパティの情報を指定してインスタンスを作成する。
  15.      * @param mixin プロパティの情報
  16.      */
  17.     protected EnumPath(PathMixin<T> mixin) {
  18.         super(mixin);
  19.         this.pathMixin = mixin;
  20.     }

  21.     /**
  22.      * プロパティが所属するエンティティの情報とプロパティ名を指定してインスタンスを作成する。
  23.      * @param type 列挙型のクラスタイプ
  24.      * @param parent プロパティが属するエンティティのパス情報。
  25.      * @param propertyName プロパティ名
  26.      */
  27.     public EnumPath(Class<? extends T> type, Path<?> parent, String propertyName) {
  28.         this(new PathMixin<>(type, PathMetaUtils.forProperty(parent, propertyName)));
  29.     }

  30.     @Override
  31.     public PathMeta getPathMeta() {
  32.         return pathMixin.getPathMeta();
  33.     }

  34.     @Override
  35.     public <C> void accept(Visitor<C> visitor, C context) {
  36.         visitor.visit(pathMixin, context);
  37.     }
  38. }