CustomFunctions.java

  1. package com.gh.mygreen.xlsmapper.expression;

  2. import java.util.Arrays;
  3. import java.util.Collection;
  4. import java.util.stream.Collectors;

  5. import org.apache.poi.ss.util.CellReference;

  6. /**
  7.  * EL式中で利用可能なEL関数。
  8.  *
  9.  * @since 2.0
  10.  * @author T.TSUCHIE
  11.  *
  12.  */
  13. public class CustomFunctions {
  14.    
  15.     /**
  16.      * 列番号を英字名に変換します。
  17.      * @param column 列番号(1から始まる)
  18.      * @return 列の英字名
  19.      */
  20.     public static String colToAlpha(final int column) {
  21.         return CellReference.convertNumToColString(column-1);
  22.     }
  23.    
  24.     /**
  25.      * 文字列がnullの場合に空文字に変換する。
  26.      * <pre class="highlight"><code class="java">
  27.      *     CustomFunctions.defaultString(null) = ""
  28.      *     CustomFunctions.defaultString("") = ""
  29.      *     CustomFunctions.defaultString("abc") = "abc"
  30.      * </code></pre>
  31.      *
  32.      * @param text 判定対象の文字列
  33.      * @return 非nullの場合は、引数の値をそのまま返す。
  34.      */
  35.     public static String defaultString(final String text) {
  36.         if(text == null) {
  37.             return "";
  38.         }
  39.        
  40.         return text;
  41.     }
  42.    
  43.     /**
  44.      * int型の配列の値を結合する。
  45.      * @param array 結合対象の配列
  46.      * @param delimiter 区切り文字
  47.      * @return 結合した文字列を返す。結合の対象の配列がnulの場合、空文字を返す。
  48.      */
  49.     public static String join(final int[] array, final String delimiter) {
  50.        
  51.         if(array == null || array.length == 0) {
  52.             return "";
  53.         }
  54.        
  55.         String value = Arrays.stream(array)
  56.                 .boxed()
  57.                 .map(String::valueOf)
  58.                 .collect(Collectors.joining(defaultString(delimiter)));
  59.        
  60.         return value;
  61.     }
  62.    
  63.     /**
  64.      * 配列の値を結合する。
  65.      * @param array 結合対象の配列
  66.      * @param delimiter 区切り文字
  67.      * @return 結合した文字列を返す。結合の対象の配列がnulの場合、空文字を返す。
  68.      */
  69.     public static String join(final Object[] array, final String delimiter) {
  70.        
  71.         if(array == null || array.length == 0) {
  72.             return "";
  73.         }
  74.        
  75.         String value = Arrays.stream(array)
  76.                 .map(v -> v.toString())
  77.                 .collect(Collectors.joining(defaultString(delimiter)));
  78.        
  79.         return value;
  80.     }
  81.    
  82.     /**
  83.      * コレクションの値を結合する。
  84.      * @param collection 結合対象のコレクション
  85.      * @param delimiter 区切り文字
  86.      * @return 結合した文字列を返す。結合の対象のコレクションがnulの場合、空文字を返す。
  87.      */
  88.     public static String join(final Collection<?> collection, final String delimiter) {
  89.        
  90.         if(collection == null || collection.isEmpty()) {
  91.             return "";
  92.         }
  93.        
  94.         String value = collection.stream()
  95.                 .map(v -> v.toString())
  96.                 .collect(Collectors.joining(defaultString(delimiter)));
  97.        
  98.         return value;
  99.     }
  100.    
  101. }