package market.Api.Mes.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

public class Utils {
	/**
	 * 判定对象是否为空
	 * 包括字符串、list集合
	 * @param obj 对象
	 * @return 
	 */
	public static boolean isEmpty(Object obj) {
		if (obj == null) {
			return true;
		}
		if (obj instanceof List) {
			return ((List) obj).size() == 0;
		}
		if ((obj instanceof String)) {
			return ((String) obj).trim().equals("");
		}
		return false;
	}
	
	 /**
	 * 判定对象不为空
	 * @param obj 对象
	 * @return
	 */
	public static boolean isNotEmpty(Object obj) {
		return !isEmpty(obj);
	}

	
	/**
	 * 获取集合的交集
	 * @param list
	 * @return
	 */
	public static ArrayList<String> getIntersection(List<ArrayList<String>> list) {
		ArrayList<String> result = new ArrayList<String>();
		int size = list.size();
		if (size > 1) {
			// 取集合中的交集
			for (int i = 0; i < size; i++) {
				if (i + 1 < size) {
					list.get(0).retainAll(list.get(i + 1));
					if (i == size - 2) {
						for (String name : list.get(0)) {
							if (!result.contains(name)) {
								result.add(name);
							}
						}
					}
				}
			}
		} else {
			// 只有一个集合则不取交集
			for (List<String> list2 : list) {
				for (String name : list2) {
					if (!result.contains(name)) {
						result.add(name);
					}
				}
			}
		}
		return result;
	}
	
	/**
	 * 获取公共区间的最小值
	 * 
	 * @param min_f 
	 * @param max_f
	 * @param min_n
	 * @param max_n
	 * @return -1.0 说明没有公共区间
	 */
	public static double getInterval_min(double min_f , double max_f, double min_n ,double max_n) {
		if (min_f > max_n || max_f < min_n) {
			return -1.0 ;
		}else {
			return Math.max(min_n, min_f);
		}
	}
	
	/**
	 * 获取公共区间的最大值
	 * 
	 * @param min_f 
	 * @param max_f
	 * @param min_n
	 * @param max_n
	 * @return -1.0 说明没有公共区间
	 */
	public static double getInterval_max(double min_f , double max_f, double min_n ,double max_n) {
		if (min_f > max_n || max_f < min_n) {
			return -1.0 ;
		}else {
			return Math.min(max_f, max_n);
		}
	}
	
	/**
	 *获取字符串包含子串的次数
	 * 
	 * @param str   
	 * @param str_n
	 * @return
	 */
	public static int getContain_Times(String str,String str_n) {
		if (!str.contains(str_n)) {
			return 0;
		}else {
			int i = 1; 
			i += getContain_Times(StringUtils.substringAfter(str, str_n),str_n);
			return i;
		}
		
	}
	
	public static void main(String[] args) {
//		double a = 3.5 , b = 5.5 , c = 4.5 ,d = 6.0 ; 
//		System.out.println(getInterval_min(a,b,c,d));
//		System.out.println(getInterval_max(a,b,c,d));
		System.out.println(getContain_Times("E-B-B-E-B-E", "B"));
	}
}
