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.PreferencesController; 13 import org.claros.chat.models.Preference; 14 import org.jivesoftware.smack.XMPPConnection; 15 import org.jivesoftware.smackx.packet.VCard; 16 17 public class Preferences extends HttpServlet { 18 21 private static final long serialVersionUID = 7576677600733897150L; 22 23 26 public Preferences() { 27 super(); 28 } 29 30 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 31 doPost(request, response); 32 } 33 43 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 44 response.setHeader("Expires","-1"); 45 response.setHeader("Pragma","no-cache"); 46 response.setHeader("Cache-control","no-cache"); 47 response.setHeader("Content-Type", "text/xml; charset=utf-8"); 48 PrintWriter out = response.getWriter(); 49 50 String user = (String )request.getSession().getAttribute("user"); 51 String act = (String )request.getParameter("act"); 52 if (user != null) { 53 if (act.equals("load")) { 54 try { 55 List prefs = PreferencesController.getPreferencesByUser(user); 56 if (prefs != null) { 57 out.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); 58 out.write("<data>"); 59 60 XMPPConnection conn = (XMPPConnection)request.getSession().getAttribute("conn"); 61 VCard vCard = new VCard(); 62 vCard.load(conn); 63 String nickname = vCard.getNickName(); 64 String firstName = vCard.getFirstName(); 65 String middleName = vCard.getMiddleName(); 66 String lastName = vCard.getLastName(); 67 String fullName = vCard.getField("FN"); 68 69 if (fullName == null) { 70 if (firstName != null && lastName != null) { 71 if (middleName != null) { 72 fullName = firstName + " " + middleName + " " + lastName; 73 } else { 74 fullName = firstName + " " + middleName + " " + lastName; 75 } 76 } else if (nickname != null) { 77 fullName = nickname; 78 } else { 79 fullName = user; 80 } 81 } 82 out.write("<fullname>" + fullName + "</fullname>"); 83 84 Preference p = null; 85 for (int i=0;i<prefs.size();i++) { 86 p = (Preference)prefs.get(i); 87 out.write("<preference>"); 88 out.write("<key>" + p.getPrefKey() + "</key>"); 89 out.write("<value>" + p.getPrefValue() + "</value>"); 90 out.write("</preference>"); 91 } 92 out.write("</data>"); 93 } 94 } catch (Exception e) { 95 e.printStackTrace(); 96 } 97 } else if (act.equals("save")) { 98 try { 99 String fullName = new String (request.getParameter("fullName").getBytes("iso-8859-9"), "utf-8"); 100 XMPPConnection conn = (XMPPConnection)request.getSession().getAttribute("conn"); 101 VCard vcard = new VCard(); 102 vcard.load(conn); 103 vcard.setField("FN", fullName); 104 vcard.save(conn); 105 } catch (Exception e) { 106 e.printStackTrace(); 107 } 108 109 try { 110 String awayTimeout = request.getParameter("awayTimeout"); 111 PreferencesController.savePreference(new Preference(user, "awayTimeout", awayTimeout)); 112 } catch (Exception e) { 113 e.printStackTrace(); 114 } 115 116 try { 117 String animations = request.getParameter("animations"); 118 PreferencesController.savePreference(new Preference(user, "animations", animations)); 119 } catch (Exception e) { 120 e.printStackTrace(); 121 } 122 123 try { 124 String soundAlert = request.getParameter("soundAlert"); 125 PreferencesController.savePreference(new Preference(user, "soundAlert", soundAlert)); 126 } catch (Exception e) { 127 e.printStackTrace(); 128 } 129 out.print("<result>ok</result>"); 130 } 131 132 } 133 out.flush(); 134 out.close(); 135 } 136 } 137 | Popular Tags |