ArgUtils.java
package com.gh.mygreen.xlsmapper.util;
import java.util.Collection;
import java.util.Map;
/**
* 引数チェックに関するユーティリティクラス。
*
* @version 2.0
* @author T.TSUCHIE
*
*/
public class ArgUtils {
/**
* 値がnullでないかどうか検証する。
* @param arg 検証対象の値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null.}
*/
public static void notNull(final Object arg, final String name) {
if(arg == null) {
throw new IllegalArgumentException(String.format("%s should not be null.", name));
}
}
/**
* 文字列が空 or nullでないかどうか検証する。
* @param arg 検証対象の値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null || arg.isEmpty() ==true}
*/
public static void notEmpty(final String arg, final String name) {
if(arg == null || arg.isEmpty()) {
throw new IllegalArgumentException(String.format("%s should not be empty.", name));
}
}
/**
* 配列のサイズが0または、nullでないかどうか検証する。
* @param arg 検証対象の値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null || arg.length == 0.}
*/
public static void notEmpty(final int[] arg, final String name) {
if(arg == null || arg.length == 0) {
throw new IllegalArgumentException(String.format("%s should has length ararys.", name));
}
}
/**
* 配列のサイズが0または、nullでないかどうか検証する。
* @param arg 検証対象の値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null || arg.length == 0.}
*/
public static void notEmpty(final Object[] arg, final String name) {
if(arg == null || arg.length == 0) {
throw new IllegalArgumentException(String.format("%s should has length ararys.", name));
}
}
/**
* Collection(リスト、セット)のサイズが0または、nullでないかどうか検証する。
* @param arg 検証対象の値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null || arg.size() == 0.}
*/
public static void notEmpty(final Collection<?> arg, final String name) {
if(arg == null || arg.isEmpty()) {
throw new IllegalArgumentException(String.format("%s should not be empty.", name));
}
}
/**
* マップのサイズが0または、nullでないかどうか検証する。
* @param arg 検証対象の値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null || arg.size() == 0.}
*/
public static void notEmpty(final Map<?, ?> arg, final String name) {
if(arg == null || arg.isEmpty()) {
throw new IllegalArgumentException(String.format("%s should not be empty.", name));
}
}
/**
* 引数が {@literal 'arg' >= 'min'} の関係か検証する。
* @param arg 検証対象の値
* @param min 最小値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null || arg < min.}
*/
@SuppressWarnings({"unchecked", "rawtypes"})
public static <T extends Comparable> void notMin(final T arg, final T min, final String name) {
if(arg == null) {
throw new IllegalArgumentException(String.format("%s should not be null.", name));
}
if(arg.compareTo(min) < 0) {
throw new IllegalArgumentException(String.format("%s cannot be smaller than %s", name, min.toString()));
}
}
/**
* 引数が {@literal 'arg' <= 'max'} の関係か検証する。
* @param arg 検証対象の値
* @param max 最大値
* @param name 検証対象の引数の名前
* @throws IllegalArgumentException {@literal arg == null || arg > max.}
*/
@SuppressWarnings({"rawtypes", "unchecked"})
public static <T extends Comparable> void notMax(final T arg, final T max, final String name) {
if(arg == null) {
throw new IllegalArgumentException(String.format("%s should not be null.", name));
}
if(arg.compareTo(max) > 0) {
throw new IllegalArgumentException(String.format("%s cannot be greater than %s", name, max.toString()));
}
}
/**
* 検証対象の値が、指定したクラスを継承しているかどうか検証する。
*
* @since 2.0
* @param arg 検証対象の値
* @param clazz 親クラス
* @param name 検証対象の引数の名前
*/
public static void instanceOf(final Object arg, final Class<?> clazz, final String name) {
if(arg == null) {
throw new IllegalArgumentException(String.format("%s should not be null.", name));
}
if(!clazz.isAssignableFrom(arg.getClass())) {
throw new IllegalArgumentException(String.format("%s should not be class with '%s'.", name, clazz.getName()));
}
}
}