All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.mygreen.supercsv.annotation.conversion.CsvMultiPad Maven / Gradle / Ivy

Go to download

CSVのJavaライブラリであるSuperCSVに、アノテーション機能を追加したライブラリです。

There is a newer version: 2.3
Show newest version
package com.github.mygreen.supercsv.annotation.conversion;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.github.mygreen.supercsv.annotation.DefaultGroup;
import com.github.mygreen.supercsv.builder.BuildCase;
import com.github.mygreen.supercsv.cellprocessor.conversion.CharWidthPaddingProcessor;
import com.github.mygreen.supercsv.cellprocessor.conversion.PaddingProcessor;
import com.github.mygreen.supercsv.cellprocessor.conversion.SimplePaddingProcessor;

/**
 * パディングするためのアノテーションです。
 * 

アノテーション {@link CsvLeftPad}や{@link CsvRightPad}より、柔軟に指定ができます。

* *

基本的な使い方

* *
    *
  • 属性 {@link #size()}で、パディングするサイズを指定します。 *
    変換対象の文字長が属性{@link #size()}の値を超える場合、パディングは行いません。 *
  • *
  • 属性{@link #padChar()}でパディング文字を指定することができます。 *
    デフォルトでは、半角空白がパディング文字です。 *
  • *
  • 文字サイズは、考え型によって変わるため、{@link #paddingProcessor()} で処理方式を指定します。 *
    例えば、{@link CharWidthPaddingProcessor}は、文字の幅(半角の長さ=1、全角の長さ=2)として書き込み時にパディングします。 *
  • *
  • アノテーション{@link CsvTrim}と併用する際には、処理結果が互いに変換対象となるため、 * 属性{@link #cases()}や{@link #groups()}で適用するケースを分けるようにしてください。 *
  • *
* *

 * {@literal @CsvBean}
 * public class SampleCsv {
 *     
 *     // 値が[10]の場合、結果は、[   10]となります。
 *     {@literal @CsvColumn(number=1)}
 *     {@literal @CsvMultiPad(size=5)}
 *     private Integer id;
 *     
 *     // パディング文字を変更する場合
 *     {@literal @CsvColumn(number=2)}
 *     {@literal @CsvMultiPad(size=5, padChar='_')}
 *     private Integer number;
 *     
 *     // パディングする際の処理方法を指定する場合
 *     {@literal @CsvColumn(number=2)}
 *     {@literal @CsvMultiPad(size=5, padChar=' ', paddingProcessor=CharWidthPaddingProcessor.class)}
 *     private String name;
 *     
 *     // 書き込み時のみ適用する場合
 *     {@literal @CsvColumn(number=4)}
 *     {@literal @CsvTrim(cases=BuildCase.Read)}
 *     {@literal @CsvMultiPad(size=20, cases=BuildCase.Write)}
 *     private String comment;
 *     
 *     // getter/setterは省略
 * }
 * 
* * @since 2.1 * @author T.TSUCHIE * */ @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Repeatable(CsvMultiPad.List.class) @CsvConversion(value={}) public @interface CsvMultiPad { /** * パディングするサイズを指定します。 *

値は1以上を指定する必要があります。

*

カラムのサイズは考え型によってバイト数、文字幅など異なるため、 * 属性{@link #paddingProcessor()}によって、変更することができます。 *

* * @return パディングのサイズ */ int size(); /** * パディングする際の文字を指定します。 * @return パディングの文字。 */ char padChar() default ' '; /** * 右寄せをするかどうか指定します。 *
falseの場合は、左詰めです。 * * @return trueのときは右側に詰め、パディング文字は左側に追加されます。 */ boolean rightAlign() default false; /** * 指定したカラムの長さを超えた場合、切り出すかどうか指定します。 * @return 指定したカラムの長さを超えた場合、切り出すかどうか。 * */ boolean chopped() default false; /** * パディングの処理方法を指定します。 *

{@link PaddingProcessor}を実装したクラス指定します。

* * @return パディング処理の実装クラスを指定します。 */ Class paddingProcessor() default SimplePaddingProcessor.class; /** * 適用するケースを指定します。 * @return 何も指定しない場合は全てのケースに適用されます。 */ BuildCase[] cases() default {}; /** * グループのクラスを指定します。 *

処理ごとに適用するアノテーションを切り替えたい場合に指定します。 * @return 指定しない場合は、{@link DefaultGroup}が適用され全ての処理に適用されます。 */ Class[] groups() default {}; /** * アノテーションの処理順序の定義。 * @return 値が大きいほど後に実行されます。 * 値が同じ場合は、アノテーションのクラス名の昇順になります。 */ int order() default 0; @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @interface List { CsvMultiPad[] value(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy