/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package FunctionLayer; import com.google.common.collect.MapMaker; import edu.stanford.nlp.pipeline.CoreDocument; import edu.stanford.nlp.pipeline.CoreEntityMention; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentMap; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author install1 */ public class MessageResponseHandler { private static ConcurrentMap str = new MapMaker().concurrencyLevel(2).makeMap(); public static ConcurrentMap getStr() { return str; } public static void setStr(ConcurrentMap str) { MessageResponseHandler.str = str; } public static void getMessage(String message) { if (message != null && !message.isEmpty()) { message = message.replace("@", ""); if (message.contains("<>")) { message = message.substring(message.indexOf(">")); } if (message.startsWith("[ *")) { message = message.substring(message.indexOf("]")); } str.put(str.size() + 1, message); } } public static String selectReponseMessage(String toString, String personName) throws CustomError { ConcurrentMap str1 = new MapMaker().concurrencyLevel(6).makeMap(); str1.put(str1.size() + 1, toString); String strreturn = ""; for (String str : str1.values()) { if (!str.isEmpty()) { strreturn = str; } } String getResponseMsg = Datahandler.instance.getResponseMsg(strreturn); getResponseMsg = checkPersonPresentInSentence(personName, getResponseMsg, strreturn); return getResponseMsg; } private static String checkPersonPresentInSentence(String personName, String responseMsg, String userLastMessage) { //check if userlastmsg contains person as refference //check if first person is author or their person of mention try { String strreturn = responseMsg; CoreDocument pipelineCoreDcoument = new CoreDocument(responseMsg); CoreDocument pipelineCoreDcoumentLastMsg = new CoreDocument(userLastMessage); Datahandler.getPipeline().annotate(pipelineCoreDcoument); Datahandler.getPipeline().annotate(pipelineCoreDcoumentLastMsg); String regex = "(.*?\\d){10,}"; for (CoreEntityMention em : pipelineCoreDcoument.entityMentions()) { String entityType = em.entityType(); if (entityType.equals("PERSON")) { String str = strreturn; String emText = em.text(); Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(personName); boolean isMatched = matcher.matches(); if (!emText.equals(personName) && !isMatched) { for (CoreEntityMention emLastMsg : pipelineCoreDcoumentLastMsg.entityMentions()) { if (!emText.equals(emLastMsg.text()) && !Character.isDigit(emLastMsg.text().trim().charAt(0))) { //System.out.println("emLastMsg.text(): " + emLastMsg.text()); str = strreturn.substring(0, strreturn.indexOf(emText)) + " " + emLastMsg + " " + strreturn.substring(strreturn.indexOf(emText)); } } str += " " + personName; return str; } } } } catch (Exception e) { System.out.println("SCUFFED JAYZ: " + e.getLocalizedMessage() + "\n"); } return responseMsg; } public static int getOverHead() { int getResponseMsgOverHead = Datahandler.instance.getMessageOverHead(); return getResponseMsgOverHead; } }