package com.paic.pad.info.common.utils;

import java.util.List;

import org.apache.commons.lang.StringUtils;

import com.paic.pad.info.resources.interaction.dto.ResourceCommentDTO;
import com.paic.pad.info.tmr.board.dto.MessageBoardDTO;
import com.paic.pad.info.tmr.question.dto.QuestionsAnswersDTO;

/**
 * 用于表情的字符转换
 * 
 * @author HAILEI015
 * 
 */
public class MessageStringFormatter {
	
	public static String EMOTICON_PC_PATH     = "/assets/lib/kindeditor-4.1.10/plugins/emoticons/images";
	public static String EMOTICON_MOBLIE_PATH = "/lib/kindeditor-4.1.10/plugins/emoticons/images";

	public static String formatString(String str, String emotionPrefixPath) {
		//表情转换时  如果同时需要 过滤字符串,需要先过滤字符串再转化表情,要不然表情会显示不出来
		if (StringUtils.isNotEmpty(str)) {
			String value = replaceAllStr(str, "\\[([0-9]\\d?|[1][0-3][0-9])\\]", "<img style='float:none;' src='" + emotionPrefixPath + "/$1.png' border='0' alt='' />");
			return value;
		}
		return null;
	}

	public static String replaceAllStr(String str, String regex, String newstr) {
		str = str.replaceAll(regex, newstr);
		return str;
	}

	public static void formartMapMessages(List<MessageBoardDTO> list, String emotionPrefixPath) {
		// 转换表情
		if ((list != null) && (list.size() > 0)) {
			for (MessageBoardDTO ms : list) {
				String value = ms.getMessage().toString();
				ms.setMessage(MessageStringFormatter.formatString(value, emotionPrefixPath));
			}
		}
	}
	public static void formartQuestionsAnswersMessages(List<QuestionsAnswersDTO> list, String emotionPrefixPath) {
		// 转换表情
		if ((list != null) && (list.size() > 0)) {
			for (QuestionsAnswersDTO ms : list) {
				String value = ms.getAnswerContent().toString();
				ms.setAnswerContent(MessageStringFormatter.formatString(value, emotionPrefixPath));
			}
		}
	}

	/** 将表情转换成特定的图片路径
	 * @param message
	 *        需要转换的表情
	 * @param emotionPrefixPath
	 */
	public static String faceConvertToImagePath(String message, String emotionPrefixPath) {
		return MessageStringFormatter.formatString(message, emotionPrefixPath);
	}
	
	public static void formartListMessages(List<ResourceCommentDTO> list, String emotionPrefixPath) {

		// 转换表情
		if ((list != null) && (list.size() > 0))
		{
			for (ResourceCommentDTO dto : list)
			{
				String value = dto.getMessage();
				dto.setMessage(MessageStringFormatter.formatString(value, emotionPrefixPath));
			}
		}
	}
	
}