ByteSizePaddingProcessor.java
package com.github.mygreen.supercsv.cellprocessor.conversion;
import java.nio.charset.Charset;
import com.github.mygreen.supercsv.util.ArgUtils;
/**
* 文字数をバイトサイズでカウントして、パディングする。
* <p>バイト数は、エンコードによって変わるため、環境によってこのクラスを継承しクラスを使用してください。</p>
*
* @since 2.1
* @author T.TSUCHIE
*
*/
public abstract class ByteSizePaddingProcessor extends AbstractPaddingOperator {
private final Charset charset;
/**
* 文字コードを指定するコンストラクタ
* @param charset 文字コード
* @throws NullPointerException {@literal charset is null.}
*/
public ByteSizePaddingProcessor(final Charset charset) {
ArgUtils.notNull(charset, "charset");
this.charset = charset;
}
@Override
public int count(int codePoint) {
return count(String.valueOf(Character.toChars(codePoint)));
}
@Override
public int count(final String text) {
ArgUtils.notNull(text, "text");
return text.getBytes(charset).length;
}
/**
* UTF-8でエンコードしたバイト数をカウントして、パディングする。
*/
public static class Utf8 extends ByteSizePaddingProcessor {
public Utf8() {
super(Charset.forName("UTF-8"));
}
};
/**
* Windows-31j(CP932)でエンコードしたバイト数をカウントして、パディングする。
*/
public static class Windows31j extends ByteSizePaddingProcessor {
public Windows31j() {
super(Charset.forName("Windows-31j"));
}
};
/**
* EUC-JPでエンコードしたバイト数をカウントして、パディングする。
*/
public static class EucJp extends ByteSizePaddingProcessor {
public EucJp() {
super(Charset.forName("EUC-JP"));
}
};
}