XlsCellOption.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;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
/**
* 書き込み時のセルの配置などのを指定するためのアノテーションです。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface XlsCellOption {
/**
* 'true'のとき書き込み時にセルの「折り返し設定」を有効にします。
* 'false'の場合は、既存の折り返し設定は変更せずに、テンプレートファイルの設定を引き継ぎます。
* <p>属性{@link #wrapText()}と{@link #shrinkToFit()}の両方の値をtrueに指定する場合、
* {@link #shrinkToFit()}の設定が優先され、「縮小して全体を表示する」が有効になります。
* </p>
*
* <pre class="highlight"><code class="java">
* public class SampleRecord {
*
* {@literal @XlsColumn(columnName="ID")}
* {@literal @XlsCellOption(wrapText=true)} // 「縮小して全体を表示する」が有効になる。
* private int id;
*
* }
* </code></pre>
*
* @return trueの場合、「折り返し設定」が有効になります。
*/
boolean wrapText() default false;
/**
* 'true'のとき書き込み時にセルの「縮小して表示」を有効にします。
* 'false'の場合は、既存の縮小して表示は変更せずに、テンプレートファイルの設定を引き継ぎます。
* <p>属性{@link #wrapText()}と{@link #shrinkToFit()}の両方の値をtrueに指定する場合、
* {@link #shrinkToFit()}の設定が優先され、「縮小して全体を表示する」が有効になります。
* </p>
*
* <pre class="highlight"><code class="java">
* public class SampleRecord {
*
* {@literal @XlsColumn(columnName="名前")}
* {@literal @XlsCellOption(shrinkToFit=true)} //「折り返して全体を表示する」が有効になる。
* private String name;
*
* {@literal @XlsColumn(columnName="備考")}
* {@literal @XlsCellOption(shrinkToFit=false)} // 設定しない場合は、テンプレート設定が有効になる。
* private String comment;
*
* }
* </code></pre>
*
* @return trueの場合、「縮小して表示」が有効になります。
*/
boolean shrinkToFit() default false;
/**
* インデントを指定します。
* <p>インデントが指定可能な横位置(左詰め/右詰め/均等割り付け)のときのみ有効になります。</p>
*
* <pre class="highlight"><code class="java">
* public class SampleRecord {
*
* // インデント可能な横位置と一緒にインデントを指定します。
* {@literal @XlsColumn(columnName="名前")}
* {@literal @XlsCellOption(horizontalAlign=HorizontalAlign.Left, indent=2)}
* private String name;
*
* }
* </code></pre>
*
* @return 0以上の値を設定します。-1以下のとき値は現在の設定を引き継ぎます。
*/
short indent() default -1;
/**
* セルの横位置を指定します。
*
* <pre class="highlight"><code class="java">
* public class SampleRecord {
*
* {@literal @XlsColumn(columnName="名前")}
* {@literal @XlsCellOption(horizontalAlign=HorizontalAlign.Center)}
* private String name;
*
* }
* </code></pre>
*
* @return セルの横位置を表す列挙型 {@link HorizontalAlign}を指定します。
*/
HorizontalAlign horizontalAlign() default HorizontalAlign.Default;
/**
* セルの縦位置を指定します。
*
* <pre class="highlight"><code class="java">
* public class SampleRecord {
*
* {@literal @XlsColumn(columnName="名前")}
* {@literal @XlsCellOption(verticalAlign=VerticalAlign.Top)}
* private String name;
*
* }
* </code></pre>
*
* @return セルの縦位置を表す列挙型 {@link VerticalAlign}を指定します。
*/
VerticalAlign verticalAlign() default VerticalAlign.Default;
/**
* セルの横位置のタイプ
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public enum HorizontalAlign {
/** デフォルト(既存の設定を引き継ぐ) */
Default(null),
/** 標準 */
General(HorizontalAlignment.GENERAL),
/** 左詰め(インデント) */
Left(HorizontalAlignment.LEFT),
/** 中央揃え */
Center(HorizontalAlignment.CENTER),
/** 右詰め(インデント) */
Right(HorizontalAlignment.RIGHT),
/** 繰り返し */
Fill(HorizontalAlignment.FILL),
/** 両端揃え */
Justify(HorizontalAlignment.JUSTIFY),
/** 選択範囲内で中央 */
CenterSelection(HorizontalAlignment.CENTER_SELECTION),
/** 均等割り付け(インデント) */
Distributed(HorizontalAlignment.DISTRIBUTED)
;
private final HorizontalAlignment poiAlignType;
private HorizontalAlign(HorizontalAlignment poiAlignType) {
this.poiAlignType = poiAlignType;
}
public HorizontalAlignment poiAlignType() {
return poiAlignType;
}
}
/**
* セルの縦位置のタイプ
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public enum VerticalAlign {
/** デフォルト(既存の設定を引き継ぐ) */
Default(null),
/** 上詰め */
Top(VerticalAlignment.TOP),
/** 中央揃え */
Center(VerticalAlignment.CENTER),
/** 下詰め */
Bottom(VerticalAlignment.BOTTOM),
/** 両端揃え */
Justify(VerticalAlignment.JUSTIFY),
/** 均等割り付け */
Distibuted(VerticalAlignment.DISTRIBUTED)
;
private final VerticalAlignment poiAlignType;
private VerticalAlign(VerticalAlignment poiAlignType) {
this.poiAlignType = poiAlignType;
}
public VerticalAlignment poiAlignType() {
return poiAlignType;
}
}
}