XlsRecordOption.java
package com.gh.mygreen.xlsmapper.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* {@link XlsHorizontalRecords}や{@link XlsVerticalRecords}の書き込み時のレコードの操作を指定するためのアノテーションです。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface XlsRecordOption {
/**
* 書き込み時にJavaオブジェクトのレコード数に対して、シートのレコード数が足りない場合の操作を指定します。
* <p>ただし、{@link XlsVerticalRecords}の場合、{@link OverOperation#Insert}は対応していません。</p>
*
* <pre class="highlight"><code class="java">
* {@literal @XlsSheet(name="Users")}
* // 書き込むデータ
* {@literal List<UserRecord> data = new ArrayList<>()};
* data.add(new UserRecord(1, "山田 太郎"));
* data.add(new UserRecord(2, "山田 花子"));
* data.add(new UserRecord(3, "鈴木 一郎"));
*
* // マッピングの定義
* public class SampleSheet {
*
* {@literal @XlsHorizontalRecords(tableLabel="ユーザ一覧")}
* {@literal @XlsRecordOption(overOperation=OverOperation.Insert)}
* private {@literal List<UserRecord>} records;
*
* }
* </code></pre>
*
* <div class="picture">
* <img src="doc-files/RecordOption_overOperation.png" alt="">
* <p>属性overOperationの概要</p>
* </div>
*
* @return {@link OverOperation#Break}の場合、足りないレコードがあるとそこで処理を終了します。
*/
OverOperation overOperation() default OverOperation.Break;
/**
* 書き込み時にJavaオブジェクトのレコード数に対して、シートのレコード数が余っている場合の操作を指定します。
*
* <p>ただし、{@link XlsVerticalRecords}の場合、{@link RemainedOperation#Delete}は対応していません。</p>
*
* <pre class="highlight"><code class="java">
* {@literal @XlsSheet(name="Users")}
* // 書き込むデータ
* {@literal List<UserRecord> data = new ArrayList<>()};
* data.add(new UserRecord(1, "山田 太郎"));
* data.add(new UserRecord(2, "山田 花子"));
*
* // マッピングの定義
* public class SampleSheet {
*
* {@literal @XlsHorizontalRecords(tableLabel="ユーザ一覧")}
* {@literal @XlsRecordOption(remainedOperation=RemainedOperation.Clear)}
* private {@literal List<UserRecord>} records;
*
* }
* </code></pre>
*
* <div class="picture">
* <img src="doc-files/RecordOption_remainedOperation.png" alt="">
* <p>属性remainedOperationの概要</p>
* </div>
*
* @return {@link RemainedOperation#None}の場合、余っているレコードがあっても何もしません。
*/
RemainedOperation remainedOperation() default RemainedOperation.None;
/**
* アノテーション {@link XlsHorizontalRecords}や{@link XlsVerticalRecords}で、
* 書き込み時にデータのレコード数に対してシートのレコードが足りない場合の操作を指定します。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public static enum OverOperation {
/** 前のセルをコピーします */
Copy,
/** 次のセルの前に行または列を挿入します */
Insert,
/** レコードの書き込みを中断します */
Break,
;
}
/**
* アノテーション {@link XlsHorizontalRecords}や{@link XlsVerticalRecords}で、
* 書き込み時にデータのレコード数に対してシートのレコードが余っている際の操作を指定します。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public static enum RemainedOperation {
/** セルの値をクリアします */
Clear,
/** 行または列を削除します */
Delete,
/** 何もしません */
None,
;
}
}