/**
 * 驼峰命名转换
 *
 * @param source
 * @return
 */
public static String getHumpStr(String source) {
    if (StringUtils.isNotBlank(source)) {
        if (source.contains("_")) {
            Optional<String> reduced = Stream.of(source.split("_")).reduce((s1, s2) -> s1 + firstUpperCase(s2));
            if (reduced.isPresent()) {
                return reduced.get();
            } else {
                return "undefined";
            }
        } else {
            return firstUpperCase(source);
        }
    } else {
        return "undefined";
    }
}

/**
 * 首字母大写转换
 *
 * @param field
 * @return
 */
public static String firstUpperCase(String field) {
    if (StringUtils.isNotBlank(field)) {
        char[] cs = field.toCharArray();
        cs[0] -= 32;
        return String.valueOf(cs);
    } else {
        return field;
    }
}

/**
 * 首字母小写转换
 *
 * @param field
 * @return
 */
public static String firstLowerCase(String field) {
    if (StringUtils.isNotBlank(field)) {
        char[] cs = field.toCharArray();
        cs[0] += 32;
        return String.valueOf(cs);
    } else {
        return field;
    }
}