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;
/**
* シートのマッピング対象のルートクラス(JavaBeans)に付与するアノテーション。
* <p>マッピング対象のシートをシート番号、シート名、シート名に対する正規表現のいずれかで指定します。</p>
*
*
* @author Naoki Takezoe
* @author T.TSUCHIE
*
*/
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface XlsSheet {
/**
* シート名を指定します。
*
* <pre class="highlight"><code class="java">
* {@literal @XlsSheet(name="Users")}
* public class SampleSheet {
* ...
* }
* </code></pre>
*
* @return シート名
*/
String name() default "";
/**
* シート名を正規表現で指定します。
* <p>同じ形式の複数のシートを同時にマッピングする際に指定します。<p>
*
* <pre class="highlight"><code class="java">
* {@literal @XlsSheet(regex="Sheet_[0-9]+")}
* public class SampleSheet {
* ・・・
* }
* </code></pre>
*
* <p>書き込み時に正規表現によるマッピングを行う際には、アノテーション{@link XlsSheetName}を利用して、
* 一意に関連づける必要があります。</p>
* <pre class="highlight"><code class="java">
* // マッピング用クラスの定義
* {@literal @XlsSheet(regex="Sheet_[0-9]+")}
* public class SampleSheet {
*
* // シート名をマッピングするフィールド
* {@literal @XlsSheetName}
* private String sheetName;
* ・・・
*
* }
*
* // 書き込み時に、シート名を設定して、一意に関連づけます。
* SampleSheet sheet1 = new SampleSheet();
* sheet1.sheetName = "Sheet_1"; // シート名の設定
*
* SampleSheet sheet2 = new SampleSheet();
* sheet2.sheetName = "Sheet_2"; // シート名の設定
*
* SampleSheet sheet3 = new SampleSheet();
* sheet3.sheetName = "Sheet_3"; // シート名の設定
*
* // 複数のシートの書き込み
* XlsMapper xlsMapper = new XlsMapper();
* xlsMapper.saveMultiple(new FileInputStream("template.xls"),
* new FileOutputStream("out.xls"),
* new Object[]{sheet1, sheet2, sheet3}
* );
* </code></pre>
*
* @return シート名の正規表現
*/
String regex() default "";
/**
* マッピング対象のシートを番号で指定します。
* <p>シート番号は0から始まります。</p>
*
* <pre class="highlight"><code class="java">
* {@literal @XlsSheet(number=0)}
* public class SampleSheet {
* ...
* }
* </code></pre>
*
* @return シート番号
*/
int number() default -1;
}