@Target(value={FIELD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented @Repeatable(value=CsvFixedSize.List.class) @CsvComposition @CsvMultiPad(size=0, cases=Write, order=1000) @CsvOneSideTrim(cases=Read) public @interface CsvFixedSize
このアノテーションは、次の合成のアノテーションによって、構成されています。
CsvMultiPad
によって、パディングします。CsvOneSideTrim
によって、トリムします。size()
で文字のサイズを指定します。paddingProcessor()
で処理方式を指定します。
CharWidthPaddingProcessor
は、文字の幅(半角文字のサイズ=1、全角文字のサイズ=2)として書き込み時にパディングします。
rightAlign()
によって、右寄せか左寄せか指定します。
@CsvBean
public class SampleCsv {
// 右詰めする
@CsvColumn(number=1)
@CsvFixedSize(size=10, rightAlign=true)
private Integer value;
// 全角空白で埋める。
// ただし、文字の幅(半角のサイズ=1、全角のサイズ=2)として処理する。
@CsvColumn(number=2)
@CsvFullChar
@CsvFixedSize(size=20, padChar=' ', paddingProcessor=CharWidthPaddingProcessor.class)
private String userName;
// 他のオブジェクト型への変換を行う
@CsvColumn(number=3)
@CsvFixedSize(size=10, padChar='_')
@CsvDateTimeFormat(pattern="uuuu-MM-dd")
private LocalDate birthday;
// 指定した文字長を超えた場合、切り落とす。
@CsvColumn(number=4, label="コメント")
@CsvFixedSize(size=20, chopped=true)
private String comment;
// getter/setterは省略
}
修飾子とタイプ | 必須要素と説明 |
---|---|
int |
size
カラムのサイズを指定します。
|
修飾子とタイプ | 任意要素と説明 |
---|---|
boolean |
chopped
パディング時に指定したカラムの長さを超えた場合、切り出すかどうか指定します。
|
Class<?>[] |
groups
グループのクラスを指定します。
|
char |
padChar
パディングする際の文字を指定します。
|
Class<? extends PaddingProcessor> |
paddingProcessor
パディングの処理方法を指定します。
|
boolean |
rightAlign
右寄せをするかどうか指定します。
|
@CsvOverridesAttribute(annotation=CsvMultiPad.class, name="size") public abstract int size
値は1以上を指定する必要があります。
サイズは考え型によってバイト数、文字幅など異なるため、
属性paddingProcessor()
によって、変更することができます。
@CsvOverridesAttribute(annotation=CsvMultiPad.class,name="padChar") @CsvOverridesAttribute(annotation=CsvOneSideTrim.class,name="trimChar") public abstract char padChar
@CsvOverridesAttribute(annotation=CsvMultiPad.class, name="chopped") public abstract boolean chopped
@CsvOverridesAttribute(annotation=CsvMultiPad.class, name="paddingProcessor") public abstract Class<? extends PaddingProcessor> paddingProcessor
PaddingProcessor
を実装したクラス指定します。
標準では次の実装が提供されています。
SimplePaddingProcessor
:文字の種別にかかわらず1文字としてカウントしてパディングします。CharWidthPaddingProcessor
:文字の幅(半角は1文字、全角は2文字)によってカウントしてパディングします。ByteSizePaddingProcessor
:バイト数によってカウントしてパディングします。@CsvOverridesAttribute(annotation=CsvMultiPad.class,name="rightAlign") @CsvOverridesAttribute(annotation=CsvOneSideTrim.class,name="leftAlign") public abstract boolean rightAlign
public abstract Class<?>[] groups
処理ごとに適用するアノテーションを切り替えたい場合に指定します。
DefaultGroup
が適用され全ての処理に適用されます。Copyright © 2022 mygreen. All rights reserved.