package com.sysu.admin.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class TextUtil {

	/**
	 * 把10000（第一位代表小时，第二位三位代表分，第四位 五位代表秒）
	 * 把这种格式转换为秒
	 * @param time
	 * @return
	 * @throws ParseException
	 */
	public static Integer timeConvert(String time,String format){
		time=time.trim();
		SimpleDateFormat f=new SimpleDateFormat(format);
		try {
			f.parse(time);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar c= f.getCalendar();
		return c.get(Calendar.HOUR)*3600+c.get(Calendar.MINUTE)*60+c.get(Calendar.SECOND);
	}

	/**
	 * 把10000（第一位代表小时，第二位三位代表分，第四位 五位代表秒）
	 * 把这种格式转换为秒
	 * 以上意思相反
	 * @param second
	 * @return
	 * @throws ParseException
	 */
	public static String timeConvert(Integer second){
		int h,m,s;
		h=second/3600;
		m=second%3600/60;
		s=second%60;
		return h+save2w(m)+save2w(s);
	}

	/**
	 * 保留两位
	 * @param number （例如输入9）
	 * @return 返回09
	 */
	public static String save2w(Integer number) {
		return number > 9 ? (number + "") : "0" + number;
	}



	/**
	 * 逗号分隔符添加字符串
	 */
	public static String appendText(String mainContent,String text) {
		if(mainContent == null || mainContent.equals("")) {
			return text;
		}else {
			return new StringBuffer(mainContent).append(",").append(text).toString();
		}
	}


	/**
	 * 找到字符串中的数字  例子‘胡椒粉00’  返回00 只会匹配第一个
	 * @return
	 */
	public static String findNumber(String text) {
		Pattern p=Pattern.compile("\\d+");
		Matcher m=p.matcher(text);
		if(m.find()) {//匹配2223
//		m.start();//返回3
//		m.end();//返回7,返回的是2223后的索引号
			return m.group();
		}else {
			return null;
		}
	}


	/**
	 * 找到字符串中的数字  例子‘胡椒粉00’  返回胡椒粉 只会匹配第一个
	 * @return
	 */
	public static String findNotNumber(String text) {
		Pattern p=Pattern.compile("[^0-9]+");
		Matcher m=p.matcher(text);
		if(m.find()) {//匹配
//		m.start();//返回3
//		m.end();//返回7,返回的是后的索引号
			return m.group();
		}else {
			return null;
		}
	}


	/**
	 * 取出两个标识符中间的字符串
	 * @param left
	 * @param right
	 * @param text
	 * @return
	 */
	public static String substring(String left,String right ,String text) {
		int start = text.indexOf(left);
		int end = text.indexOf(right);
		if(start >- 1 && end >- 1) {
			return text.substring(start+1, end).trim();
		}
		return null;
	}

	/**
	 * 取标识符前面的字符串
	 * @param left
	 * @return
	 */
	public static String leftSubstring(String left,String text) {
		int index= text.indexOf(left);
		if(index > -1) {
			return text.substring(0, index).trim();
		}
		return null;
	}


	/**
	 * 取标识符后面的字符串
	 * @param right
	 * @return
	 */
	public static String rightSubstring(String right,String text) {
		int index = text.indexOf(right);
		if(index > -1) {
			return text.substring(index + 1, text.length()).trim();
		}
		return null;
	}

	/**
	 * 将xml 字符串转化为json 对象
	 * @param xmlString
	 * @return
	 */
	public static JSONObject xmlToJson(String xmlString) {
		Document document = null;
		try {
			document = DocumentHelper.parseText(xmlString);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		Element root = document.getRootElement();
		List<Element> elements = root.elements();
		JSONObject jsonObject = new JSONObject();
		for(Element element : elements) {
			jsonObject.put(element.getName(), element.getText());
		}
		return jsonObject;
	}

	public static String[] split(String text,String regex) {
		int index = 0;
		if(StringUtils.isBlank(text)) {
			return new String[0];
		}
		String[] codeArray = text.split(regex);

		if(codeArray.length == 0) {
			return new String[0];
		}

		String[] tempArray=new String[codeArray.length];
		for(int i = 0;i < codeArray.length; i++) {

			if(!codeArray[i].trim().equals("")) {

				tempArray[index] = codeArray[i];
				index++;
			}

		}
		String[] resArray = new String[index];
		for(int i = 0; i < index; i++) {
			resArray[i] = tempArray[i];
		}
		return resArray;
	}

	public static Integer[] splitIds(String text,String regex) {
		int index = 0;
		if(text == null) {
			return new Integer[0];
		}
		String[] codeArray = text.split(regex);

		if(text.equals("") || codeArray.length == 0) {
			return new Integer[0];
		}

		Integer[] tempArray=new Integer[codeArray.length];
		for(int i = 0;i < codeArray.length; i++) {

			if(!codeArray[i].trim().equals("")) {

				tempArray[index] = Integer.valueOf(codeArray[i]);
				index++;
			}

		}
		Integer[] resArray = new Integer[index];
		for(int i = 0; i < index; i++) {
			resArray[i] = tempArray[i];
		}
		return resArray;
	}

	public static void main(String[] args) {
		Stack<Integer> stack = new Stack<>();
		for(int i=0;i<5;i++){
			System.out.println("push : " + i);
			stack.push(i);
		}
		for(int i=0;i<5;i++){
			System.out.println("pop :" + stack.pop());
		}
	}
}
