XlsCellOption.java

  1. package com.gh.mygreen.xlsmapper.annotation;

  2. import java.lang.annotation.Documented;
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;

  7. import org.apache.poi.ss.usermodel.HorizontalAlignment;
  8. import org.apache.poi.ss.usermodel.VerticalAlignment;

  9. /**
  10.  * 書き込み時のセルの配置などのを指定するためのアノテーションです。
  11.  *
  12.  * @since 2.0
  13.  * @author T.TSUCHIE
  14.  *
  15.  */
  16. @Target({ElementType.METHOD, ElementType.FIELD})
  17. @Retention(RetentionPolicy.RUNTIME)
  18. @Documented
  19. public @interface XlsCellOption {

  20.     /**
  21.      * 'true'のとき書き込み時にセルの「折り返し設定」を有効にします。
  22.      * 'false'の場合は、既存の折り返し設定は変更せずに、テンプレートファイルの設定を引き継ぎます。
  23.      * <p>属性{@link #wrapText()}と{@link #shrinkToFit()}の両方の値をtrueに指定する場合、
  24.      *    {@link #shrinkToFit()}の設定が優先され、「縮小して全体を表示する」が有効になります。
  25.      * </p>
  26.      *
  27.      * <pre class="highlight"><code class="java">
  28.      * public class SampleRecord {
  29.      *
  30.      *     {@literal @XlsColumn(columnName="ID")}
  31.      *     {@literal @XlsCellOption(wrapText=true)} // 「縮小して全体を表示する」が有効になる。
  32.      *     private int id;
  33.      *
  34.      * }
  35.      * </code></pre>
  36.      *
  37.      * @return trueの場合、「折り返し設定」が有効になります。
  38.      */
  39.     boolean wrapText() default false;

  40.     /**
  41.      * 'true'のとき書き込み時にセルの「縮小して表示」を有効にします。
  42.      * 'false'の場合は、既存の縮小して表示は変更せずに、テンプレートファイルの設定を引き継ぎます。
  43.      * <p>属性{@link #wrapText()}と{@link #shrinkToFit()}の両方の値をtrueに指定する場合、
  44.      *    {@link #shrinkToFit()}の設定が優先され、「縮小して全体を表示する」が有効になります。
  45.      * </p>
  46.      *
  47.      * <pre class="highlight"><code class="java">
  48.      * public class SampleRecord {
  49.      *
  50.      *     {@literal @XlsColumn(columnName="名前")}
  51.      *     {@literal @XlsCellOption(shrinkToFit=true)} //「折り返して全体を表示する」が有効になる。
  52.      *     private String name;
  53.      *
  54.      *     {@literal @XlsColumn(columnName="備考")}
  55.      *     {@literal @XlsCellOption(shrinkToFit=false)} // 設定しない場合は、テンプレート設定が有効になる。
  56.      *     private String comment;
  57.      *
  58.      * }
  59.      * </code></pre>
  60.      *
  61.      * @return trueの場合、「縮小して表示」が有効になります。
  62.      */
  63.     boolean shrinkToFit() default false;

  64.     /**
  65.      * インデントを指定します。
  66.      * <p>インデントが指定可能な横位置(左詰め/右詰め/均等割り付け)のときのみ有効になります。</p>
  67.      *
  68.      * <pre class="highlight"><code class="java">
  69.      * public class SampleRecord {
  70.      *
  71.      *     // インデント可能な横位置と一緒にインデントを指定します。
  72.      *     {@literal @XlsColumn(columnName="名前")}
  73.      *     {@literal @XlsCellOption(horizontalAlign=HorizontalAlign.Left, indent=2)}
  74.      *     private String name;
  75.      *
  76.      * }
  77.      * </code></pre>
  78.      *
  79.      * @return 0以上の値を設定します。-1以下のとき値は現在の設定を引き継ぎます。
  80.      */
  81.     short indent() default -1;

  82.     /**
  83.      * セルの横位置を指定します。
  84.      *
  85.      * <pre class="highlight"><code class="java">
  86.      * public class SampleRecord {
  87.      *
  88.      *     {@literal @XlsColumn(columnName="名前")}
  89.      *     {@literal @XlsCellOption(horizontalAlign=HorizontalAlign.Center)}
  90.      *     private String name;
  91.      *
  92.      * }
  93.      * </code></pre>
  94.      *
  95.      * @return セルの横位置を表す列挙型 {@link HorizontalAlign}を指定します。
  96.      */
  97.     HorizontalAlign horizontalAlign() default HorizontalAlign.Default;

  98.     /**
  99.      * セルの縦位置を指定します。
  100.      *
  101.      * <pre class="highlight"><code class="java">
  102.      * public class SampleRecord {
  103.      *
  104.      *     {@literal @XlsColumn(columnName="名前")}
  105.      *     {@literal @XlsCellOption(verticalAlign=VerticalAlign.Top)}
  106.      *     private String name;
  107.      *
  108.      * }
  109.      * </code></pre>
  110.      *
  111.      * @return セルの縦位置を表す列挙型 {@link VerticalAlign}を指定します。
  112.      */
  113.     VerticalAlign verticalAlign() default VerticalAlign.Default;

  114.     /**
  115.      * セルの横位置のタイプ
  116.      *
  117.      * @since 2.0
  118.      * @author T.TSUCHIE
  119.      *
  120.      */
  121.     public enum HorizontalAlign {

  122.         /** デフォルト(既存の設定を引き継ぐ) */
  123.         Default(null),
  124.         /** 標準 */
  125.         General(HorizontalAlignment.GENERAL),
  126.         /** 左詰め(インデント) */
  127.         Left(HorizontalAlignment.LEFT),
  128.         /** 中央揃え */
  129.         Center(HorizontalAlignment.CENTER),
  130.         /** 右詰め(インデント) */
  131.         Right(HorizontalAlignment.RIGHT),
  132.         /** 繰り返し */
  133.         Fill(HorizontalAlignment.FILL),
  134.         /** 両端揃え */
  135.         Justify(HorizontalAlignment.JUSTIFY),
  136.         /** 選択範囲内で中央 */
  137.         CenterSelection(HorizontalAlignment.CENTER_SELECTION),
  138.         /** 均等割り付け(インデント) */
  139.         Distributed(HorizontalAlignment.DISTRIBUTED)
  140.         ;

  141.         private final HorizontalAlignment poiAlignType;

  142.         private HorizontalAlign(HorizontalAlignment poiAlignType) {
  143.             this.poiAlignType = poiAlignType;
  144.         }

  145.         public HorizontalAlignment poiAlignType() {
  146.             return poiAlignType;
  147.         }

  148.     }

  149.     /**
  150.      * セルの縦位置のタイプ
  151.      *
  152.      * @since 2.0
  153.      * @author T.TSUCHIE
  154.      *
  155.      */
  156.     public enum VerticalAlign {

  157.         /** デフォルト(既存の設定を引き継ぐ) */
  158.         Default(null),
  159.         /** 上詰め */
  160.         Top(VerticalAlignment.TOP),
  161.         /** 中央揃え */
  162.         Center(VerticalAlignment.CENTER),
  163.         /** 下詰め */
  164.         Bottom(VerticalAlignment.BOTTOM),
  165.         /** 両端揃え */
  166.         Justify(VerticalAlignment.JUSTIFY),
  167.         /** 均等割り付け */
  168.         Distibuted(VerticalAlignment.DISTRIBUTED)
  169.         ;

  170.         private final VerticalAlignment poiAlignType;

  171.         private VerticalAlign(VerticalAlignment poiAlignType) {
  172.             this.poiAlignType = poiAlignType;
  173.         }

  174.         public VerticalAlignment poiAlignType() {
  175.             return poiAlignType;
  176.         }
  177.     }

  178. }