CustomFunctions.java
package com.gh.mygreen.xlsmapper.expression;
import java.util.Arrays;
import java.util.Collection;
import java.util.stream.Collectors;
import org.apache.poi.ss.util.CellReference;
/**
* EL式中で利用可能なEL関数。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public class CustomFunctions {
/**
* 列番号を英字名に変換します。
* @param column 列番号(1から始まる)
* @return 列の英字名
*/
public static String colToAlpha(final int column) {
return CellReference.convertNumToColString(column-1);
}
/**
* 文字列がnullの場合に空文字に変換する。
* <pre class="highlight"><code class="java">
* CustomFunctions.defaultString(null) = ""
* CustomFunctions.defaultString("") = ""
* CustomFunctions.defaultString("abc") = "abc"
* </code></pre>
*
* @param text 判定対象の文字列
* @return 非nullの場合は、引数の値をそのまま返す。
*/
public static String defaultString(final String text) {
if(text == null) {
return "";
}
return text;
}
/**
* int型の配列の値を結合する。
* @param array 結合対象の配列
* @param delimiter 区切り文字
* @return 結合した文字列を返す。結合の対象の配列がnulの場合、空文字を返す。
*/
public static String join(final int[] array, final String delimiter) {
if(array == null || array.length == 0) {
return "";
}
String value = Arrays.stream(array)
.boxed()
.map(String::valueOf)
.collect(Collectors.joining(defaultString(delimiter)));
return value;
}
/**
* 配列の値を結合する。
* @param array 結合対象の配列
* @param delimiter 区切り文字
* @return 結合した文字列を返す。結合の対象の配列がnulの場合、空文字を返す。
*/
public static String join(final Object[] array, final String delimiter) {
if(array == null || array.length == 0) {
return "";
}
String value = Arrays.stream(array)
.map(v -> v.toString())
.collect(Collectors.joining(defaultString(delimiter)));
return value;
}
/**
* コレクションの値を結合する。
* @param collection 結合対象のコレクション
* @param delimiter 区切り文字
* @return 結合した文字列を返す。結合の対象のコレクションがnulの場合、空文字を返す。
*/
public static String join(final Collection<?> collection, final String delimiter) {
if(collection == null || collection.isEmpty()) {
return "";
}
String value = collection.stream()
.map(v -> v.toString())
.collect(Collectors.joining(defaultString(delimiter)));
return value;
}
}