XlsRecordOption.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. /**
  8.  * {@link XlsHorizontalRecords}や{@link XlsVerticalRecords}の書き込み時のレコードの操作を指定するためのアノテーションです。
  9.  *
  10.  * @since 2.0
  11.  * @author T.TSUCHIE
  12.  *
  13.  */
  14. @Target({ElementType.METHOD, ElementType.FIELD})
  15. @Retention(RetentionPolicy.RUNTIME)
  16. @Documented
  17. public @interface XlsRecordOption {

  18.     /**
  19.      * 書き込み時にJavaオブジェクトのレコード数に対して、シートのレコード数が足りない場合の操作を指定します。
  20.      * <p>ただし、{@link XlsVerticalRecords}の場合、{@link OverOperation#Insert}は対応していません。</p>
  21.      *
  22.      * <pre class="highlight"><code class="java">
  23.      * {@literal @XlsSheet(name="Users")}
  24.      * // 書き込むデータ
  25.      * {@literal List<UserRecord> data = new ArrayList<>()};
  26.      * data.add(new UserRecord(1, "山田 太郎"));
  27.      * data.add(new UserRecord(2, "山田 花子"));
  28.      * data.add(new UserRecord(3, "鈴木 一郎"));
  29.      *
  30.      * // マッピングの定義
  31.      * public class SampleSheet {
  32.      *
  33.      *     {@literal @XlsHorizontalRecords(tableLabel="ユーザ一覧")}
  34.      *     {@literal @XlsRecordOption(overOperation=OverOperation.Insert)}
  35.      *     private {@literal List<UserRecord>} records;
  36.      *
  37.      * }
  38.      * </code></pre>
  39.      *
  40.      * <div class="picture">
  41.      *    <img src="doc-files/RecordOption_overOperation.png" alt="">
  42.      *    <p>属性overOperationの概要</p>
  43.      * </div>
  44.      *
  45.      * @return {@link OverOperation#Break}の場合、足りないレコードがあるとそこで処理を終了します。
  46.      */
  47.     OverOperation overOperation() default OverOperation.Break;

  48.     /**
  49.      * 書き込み時にJavaオブジェクトのレコード数に対して、シートのレコード数が余っている場合の操作を指定します。
  50.      *
  51.      * <p>ただし、{@link XlsVerticalRecords}の場合、{@link RemainedOperation#Delete}は対応していません。</p>
  52.      *
  53.      * <pre class="highlight"><code class="java">
  54.      * {@literal @XlsSheet(name="Users")}
  55.      * // 書き込むデータ
  56.      * {@literal List<UserRecord> data = new ArrayList<>()};
  57.      * data.add(new UserRecord(1, "山田 太郎"));
  58.      * data.add(new UserRecord(2, "山田 花子"));
  59.      *
  60.      * // マッピングの定義
  61.      * public class SampleSheet {
  62.      *
  63.      *     {@literal @XlsHorizontalRecords(tableLabel="ユーザ一覧")}
  64.      *     {@literal @XlsRecordOption(remainedOperation=RemainedOperation.Clear)}
  65.      *     private {@literal List<UserRecord>} records;
  66.      *
  67.      * }
  68.      * </code></pre>
  69.      *
  70.      * <div class="picture">
  71.      *    <img src="doc-files/RecordOption_remainedOperation.png" alt="">
  72.      *    <p>属性remainedOperationの概要</p>
  73.      * </div>
  74.      *
  75.      * @return {@link RemainedOperation#None}の場合、余っているレコードがあっても何もしません。
  76.      */
  77.     RemainedOperation remainedOperation() default RemainedOperation.None;

  78.     /**
  79.      * アノテーション {@link XlsHorizontalRecords}や{@link XlsVerticalRecords}で、
  80.      * 書き込み時にデータのレコード数に対してシートのレコードが足りない場合の操作を指定します。
  81.      *
  82.      * @since 2.0
  83.      * @author T.TSUCHIE
  84.      *
  85.      */
  86.     public static enum OverOperation {

  87.         /** 前のセルをコピーします */
  88.         Copy,

  89.         /** 次のセルの前に行または列を挿入します */
  90.         Insert,

  91.         /** レコードの書き込みを中断します */
  92.         Break,
  93.         ;

  94.     }

  95.     /**
  96.      * アノテーション {@link XlsHorizontalRecords}や{@link XlsVerticalRecords}で、
  97.      * 書き込み時にデータのレコード数に対してシートのレコードが余っている際の操作を指定します。
  98.      *
  99.      * @since 2.0
  100.      * @author T.TSUCHIE
  101.      *
  102.      */
  103.     public static enum RemainedOperation {

  104.         /** セルの値をクリアします */
  105.         Clear,

  106.         /** 行または列を削除します */
  107.         Delete,

  108.         /** 何もしません */
  109.         None,
  110.         ;

  111.     }
  112. }