package com.hmsoft.common.util;

import java.util.LinkedHashMap;

/*********************
 * 字符串复制类
 * 
 * @author zxq
 * @create 2018-04-05 21:56:50
 * @version 5.0.0
 * @email: revisit@126.com
 * @Company: www.hmsoft.cn
 */
public class StringHelper {
	/*****************************
	 * 判断字符串是否为空（空值或者空格都认为是空）
	 */
	public static boolean isEmpty(String value) {
		return (value == null || value.trim().length() == 0);
	}

	/*****************************
	 * 判断是否为空（空值或者空格都认为是空）
	 */
	public static boolean isEmpty(Object value) {
		return (value == null || value.toString().trim().length() == 0);
	}

	/*****************************
	 * 判断字符串是否不为空（空值或者空格都认为是空）
	 */
	public static boolean isNotEmpty(String value) {
		return !isEmpty(value);
	}

	/*****************************
	 * 判断是否不为空（空值或者空格都认为是空）
	 */
	public static boolean isNotEmpty(Object value) {
		return !isEmpty(value);
	}

	/*****************************
	 * 数据库字段名称转换为java类属性 CUST_NAME => CustName;
	 */
	public static String toClassName(String columnName) {
		if (isEmpty(columnName))
			return "";
		StringBuilder sb = new StringBuilder();
		for (String s : columnName.split("_")) {
			if (s.length() > 0)
				sb.append(s.substring(0, 1).toUpperCase());
			if (s.length() > 1)
				sb.append(s.substring(1).toLowerCase());
		}
		return sb.toString();
	}

	/**********************************
	 * 数据库字段名称转换为java类属性 CUST_NAME => custName;
	 */
	public static String toFieldName(String columnName) {
		return lowerFirstChar(toClassName(columnName));

	}

	/**********************************************
	 * java类属性名称转换成数据库名称 custName=>CUST_NAME
	 */
	public static String toColumnName(String fieldName) {
		if (isEmpty(fieldName))
			return "";
		char c = Character.toUpperCase(fieldName.charAt(0));
		StringBuilder sb = new StringBuilder();
		sb.append(c);
		for (int i = 1; i < fieldName.length(); i++) {
			if (Character.isUpperCase(fieldName.charAt(i)))
				sb.append("_");
			sb.append(Character.toUpperCase(fieldName.charAt(i)));
		}
		return sb.toString().toUpperCase();
	}

	/***************************************
	 * 首字母大写
	 */
	public static String upperFirstChar(String source) {
		if (isEmpty(source))
			return "";
		if (source.length() == 1)
			return source.toUpperCase();
		return source.substring(0, 1).toUpperCase() + source.substring(1);
	}

	/*****************************************
	 * 首字母小写
	 */
	public static String lowerFirstChar(String source) {
		if (isEmpty(source))
			return "";
		if (source.length() == 1)
			return source.toUpperCase();
		return source.substring(0, 1).toLowerCase() + source.substring(1);
	}

	/*****************************************
	 * 分割不定长度的空白字符
	 */
	public static String[] splitWithSpace(String source) {
		return source.split("\\s+");
	}

	/***************************************************
	 * 左边补齐
	 */

	public static String leftPadding(String source, int length, char padding) {
		if (source == null)
			source = "";
		String value = "";
		for (int i = 0; i < length - source.length(); i++) {
			value += padding;
		}
		return value + source;
	}

	/***************************************************
	 * 右边补齐
	 */

	public static String rightPadding(String source, int length, String padding) {
		if (source == null)
			source = "";
		String value = "";
		for (int i = 0; i < length - source.getBytes().length; i++) {
			value += padding;
		}
		return source + value;
	}

	/*************************************
	 * 字符串到map 回车换行
	 * 
	 */
	public static LinkedHashMap<String, String> toMap(String param_str) {
		LinkedHashMap<String, String> paramMap = new LinkedHashMap<String, String>();
		if (StringHelper.isNotEmpty(param_str)) {
			for (String value : param_str.trim().split("\n")) {
				String[] array = value.split(":");
				if (array.length > 1) {
					paramMap.put(array[0].trim(), array[1].trim());
				}
			}
		}
		return paramMap;
	}
}
