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

com.github.mygreen.supercsv.builder.FixedSizeHeaderMapper Maven / Gradle / Ivy

Go to download

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

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

import java.util.Optional;

import com.github.mygreen.supercsv.annotation.conversion.CsvFixedSize;
import com.github.mygreen.supercsv.cellprocessor.conversion.PaddingProcessor;

/**
 * アノテーション{@link CsvFixedSize}を元に、ヘッダーラベル情報を処理します。
 * 

パディング文字がゼロ埋めのときや、文字数を超えたとき切り出す設定の場合、 * 意図した結果とならない場合があるため、このクラスを参考に各自実装してください。 *

* * @since 2.1 * @author T.TSUCHIE * */ public class FixedSizeHeaderMapper implements HeaderMapper { @Override public String toMap(final ColumnMapping column, final Configuration config, final Class[] groups) { // @CsvFixedSizeアノテーションを取得する final Optional fixedLengthAnno = column.getField().getAnnotationsByGroup(CsvFixedSize.class, groups) .stream().findFirst(); if(!fixedLengthAnno.isPresent()) { return column.getLabel(); } final PaddingProcessor paddingProcessor = (PaddingProcessor)config.getBeanFactory() .create(fixedLengthAnno.get().paddingProcessor()); // アノテーションが存在する場合は、その情報を使ってパディングする。 String label = fixedLengthAnno.map(anno -> paddingProcessor.pad(column.getLabel(), anno.size(), anno.padChar(), anno.rightAlign(), anno.chopped())) .orElse(column.getLabel()); return label; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy