/**  
 * @Title: ClassUtil.java 
 * @Package util 
 * @Description: TODO
 * @author Justin.Su
 * @date 2017年7月19日 下午2:41:53 
 * @version V1.0
 * @Copyright: Copyright (c) OnlyFido Team. 2017
 * ★★★★★★★★版权所有※拷贝必究 ★★★★★★★★
 */

package com.platform.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;


/**
 * @ClassName: ClassUtil
 * @Description: TODO
 * @author Justin.Su
 * @date 2017年7月19日 下午2:41:53
 * @version V1.0
 */

public class ClassUtil {
	/**
	 * 将一个类查询方式加入map（属性值为int型时，0时不加入， 属性值为String型或Long时为null和“”不加入）
	 * 
	 */
	public static Map<String, String> setConditionMap(Object obj) {
		Map<String, String> map = new HashMap<String, String>();
		if (obj == null) {
			return null;
		}
		Field[] fields = obj.getClass().getDeclaredFields();
		for (Field field : fields) {
			String fieldName = field.getName();
			if (getValueByFieldName(fieldName, obj) != null)
				map.put(fieldName, getValueByFieldName(fieldName, obj));
		}
		return map;

	}

	/**
	 * 根据属性名获取该类此属性的值
	 * 
	 * @param fieldName
	 * @param object
	 * @return
	 */
	private static String getValueByFieldName(String fieldName, Object object) {
		String firstLetter = fieldName.substring(0, 1).toUpperCase();
		String getter = "get" + firstLetter + fieldName.substring(1);
		try {
			Method method = object.getClass().getMethod(getter, new Class[] {});
			String value = method.invoke(object, new Object[] {}).toString();
			return value;
		} catch (Exception e) {
			return null;
		}
	}
}
