1 package org.claros.chat.ajax; 2 3 import java.io.IOException ; 4 import java.io.PrintWriter ; 5 6 import javax.servlet.ServletException ; 7 import javax.servlet.http.HttpServlet ; 8 import javax.servlet.http.HttpServletRequest ; 9 import javax.servlet.http.HttpServletResponse ; 10 11 import org.jivesoftware.smack.XMPPConnection; 12 import org.jivesoftware.smack.packet.Presence; 13 import org.jivesoftware.smack.packet.Presence.Mode; 14 15 public class Status extends HttpServlet { 16 17 20 private static final long serialVersionUID = -831691288847101256L; 21 22 25 public Status() { 26 super(); 27 } 28 29 39 public void doGet(HttpServletRequest request, HttpServletResponse response) 40 throws ServletException , IOException { 41 doPost(request, response); 42 } 43 44 54 public void doPost(HttpServletRequest request, HttpServletResponse response) 55 throws ServletException , IOException { 56 response.setHeader("Expires","-1"); 57 response.setHeader("Pragma","no-cache"); 58 response.setHeader("Cache-control","no-cache"); 59 response.setHeader("Content-Type", "text/xml; charset=utf-8"); 60 PrintWriter out = response.getWriter(); 61 out.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); 62 63 XMPPConnection conn = (XMPPConnection)request.getSession().getAttribute("conn"); 64 String act = request.getParameter("act"); 65 if (act.equals("load")) { 66 Presence prs = null; 67 if (prs != null) { 68 Mode md = prs.getMode(); 69 String msg = (prs.getStatus() != null) ? prs.getStatus() : ""; 70 String stattxt = "offline"; 71 72 if (md != null) { 73 if (md.equals(Presence.Mode.AVAILABLE)) { 74 stattxt = "available"; 75 } else if (md.equals(Presence.Mode.AWAY)) { 76 stattxt = "away"; 77 } else if (md.equals(Presence.Mode.CHAT)) { 78 stattxt = "chat"; 79 } else if (md.equals(Presence.Mode.DO_NOT_DISTURB)) { 80 stattxt = "disturb"; 81 } else if (md.equals(Presence.Mode.EXTENDED_AWAY)) { 82 stattxt = "extended_away"; 83 } else if (md.equals(Presence.Mode.INVISIBLE)) { 84 stattxt = "invisible"; 85 } 86 } 87 88 out.write("<data>"); 89 out.write("<status>" + stattxt + "</status>"); 90 out.write("<message>" + msg + "</message>"); 91 out.write("</data>"); 92 } 93 } else if (act.equals("save")) { 94 String newStat = request.getParameter("newstat"); 95 String newMsg = request.getParameter("newstatmsg"); 96 97 Presence pr = new Presence(Presence.Type.AVAILABLE); 98 if (newMsg != null) { 99 pr.setStatus(newMsg); 100 } 101 if (newStat != null) { 102 if (newStat.equals("available")) { 103 pr.setMode(Presence.Mode.AVAILABLE); 104 } else if (newStat.equals("away")) { 105 pr.setMode(Presence.Mode.AWAY); 106 } else if (newStat.equals("disturb")) { 107 pr.setMode(Presence.Mode.DO_NOT_DISTURB); 108 } 109 conn.sendPacket(pr); 110 } 111 out.write("<data><result>ok</result></data>"); 112 } 113 114 out.flush(); 115 out.close(); 116 } 117 } 118 | Popular Tags |