1 package org.claros.chat.ajax; 2 3 import java.io.IOException ; 4 import java.io.PrintWriter ; 5 import java.util.List ; 6 7 import javax.servlet.ServletException ; 8 import javax.servlet.http.HttpServlet ; 9 import javax.servlet.http.HttpServletRequest ; 10 import javax.servlet.http.HttpServletResponse ; 11 12 import org.claros.chat.controllers.TrafficController; 13 import org.claros.chat.models.Queue; 14 import org.claros.chat.threads.ChatListener; 15 import org.claros.chat.utility.Utility; 16 import org.jivesoftware.smack.XMPPConnection; 17 18 public class Listener extends HttpServlet { 19 20 23 private static final long serialVersionUID = -800529893679431406L; 24 25 28 public Listener() { 29 super(); 30 } 31 32 42 public void doGet(HttpServletRequest request, HttpServletResponse response) 43 throws ServletException , IOException { 44 45 response.setContentType("text/html"); 47 response.setHeader("Expires","-1"); 48 response.setHeader("Pragma","no-cache"); 49 response.setHeader("Cache-control","no-cache"); 50 response.setHeader("Content-Type", "text/html; charset=utf-8"); 51 52 PrintWriter out = response.getWriter(); 53 54 XMPPConnection conn = (XMPPConnection)request.getSession().getAttribute("conn"); 55 if (conn != null) { 56 String user = conn.getUser(); 57 if (user != null) { 58 ChatListener listener = TrafficController.getListener(user); 59 if (listener != null) { 60 List msgs = listener.getUnreadMessages(); 61 62 if (msgs != null && msgs.size() > 0) { 63 Queue msg = null; 64 String from = null; 65 String body = null; 66 for (int i=0;i<msgs.size(); i++) { 67 msg = (Queue)msgs.get(i); 68 from = msg.getMsgFrom(); 69 70 String userOnly = from; 71 if (userOnly.indexOf("@") > 0) { 72 userOnly = from.substring(0, from.indexOf("@")); 73 } 74 75 body = msg.getMsgBody(); 76 String myMsg = tidyMsg(body); 77 String output = "openChat(null, \"" + from + "\", \"" + Contacts.findNameByUser(request.getSession(), userOnly) + "\", \"" + myMsg + "\", \"in\");"; 78 out.print(output); 79 } 80 } 81 } 82 } 83 } 84 out.flush(); 85 out.close(); 86 } 87 88 93 private String tidyMsg(String msg) { 94 msg = Utility.replaceAllOccurances(msg, "\"", "\\\""); 95 msg = Utility.replaceAllOccurances(msg, "\n", "<clarosbr><clarosbr>"); 96 if (msg.endsWith("<clarosbr><clarosbr>")) { 97 msg += "<clarosbr><clarosbr>"; 98 } 99 100 121 return msg; 122 } 123 124 134 public void doPost(HttpServletRequest request, HttpServletResponse response) 135 throws ServletException , IOException { 136 doGet(request, response); 137 } 138 139 } 140 | Popular Tags |