package org.ifsoft.openlink.view; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ArrayList; import java.util.Vector; import java.util.Collections; import javax.servlet.*; import javax.servlet.annotation.*; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.*; import org.slf4j.Logger; import org.jivesoftware.util.Log; import org.jivesoftware.util.cache.Cache; import org.jivesoftware.util.cache.CacheFactory; import org.jivesoftware.openfire.XMPPServer; import org.jivesoftware.openfire.user.User; import org.jivesoftware.openfire.user.UserNotFoundException; import org.ifsoft.openlink.*; import org.ifsoft.openlink.component.*; @WebServlet(value="/traderlyncProfileSummary", name="traderlyncProfileSummary") public class ProfileSummary extends HttpServlet { private Collection<Site> sites; private static final Logger Log = LoggerFactory.getLogger(ProfileSummary.class); public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT"); response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); response.addHeader("Cache-Control", "post-check=0, pre-check=0"); response.setHeader("Pragma", "no-cache"); response.setHeader("Content-Type", "text/html"); response.setHeader("Connection", "close"); ServletOutputStream out = response.getOutputStream(); String callback = request.getParameter("callback"); String remove = request.getParameter("remove"); String userNo = request.getParameter("userno"); try { if (remove != null && userNo != null) { //OpenlinkComponent.self.traderLyncLinkService.freeCallback(userNo); response.sendRedirect("traderlync-profile-summary?"); } out.println(""); out.println("<html>"); out.println(" <head>"); out.println(" <title>User Profiles</title>"); out.println(" <meta name=\"pageID\" content=\"TRADERLYNC-PROFILE-SUMMARY\"/>"); out.println(" </head>"); out.println(" <body>"); out.println(""); out.println("<br>"); out.println("<table cellpadding=\"2\" cellspacing=\"2\" border=\"0\"><tr><td>Pages:[</td>"); int linesCount = 100; int userCounter = OpenlinkComponent.self.getUserCount(); int pageCounter = (userCounter/linesCount); pageCounter = userCounter > (linesCount * pageCounter) ? pageCounter + 1 : pageCounter; String start = request.getParameter("start"); String count = request.getParameter("count"); int pageStart = start == null ? 0 : Integer.parseInt(start); int pageCount = count == null ? linesCount : Integer.parseInt(count); for (int i=0; i<pageCounter; i++) { int iStart = (i * linesCount); int iCount = ((i * linesCount) + linesCount) > userCounter ? ((i * linesCount) + linesCount) - userCounter : linesCount; int page = i + 1; if (pageStart == iStart) { out.println("<td>" + page + "<td>"); } else { out.println("<td><a href='traderlync-profile-summary?start=" + iStart + "&count=" + iCount + "'>" + page + "</a><td>"); } } out.println("<td>]</td></tr></table>"); out.println("<div class=\"jive-table\">"); out.println("<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">"); out.println("<thead>"); out.println("<tr>"); out.println("<th nowrap></th>"); out.println("<th nowrap>Id</th>"); out.println("<th nowrap>User Id</th>"); out.println("<th nowrap>Device</th>"); out.println("<th nowrap>HS</th>"); out.println("<th nowrap>Route</th>"); out.println("<th nowrap>Name</th>"); out.println("<th nowrap>Dir No</th>"); out.println("<th nowrap>Auto Hold</th>"); out.println("<th nowrap>Auto Priv</th>"); out.println("<th nowrap>Default</th>"); out.println("</tr>"); out.println("</thead>"); out.println("<tbody>"); List<OpenlinkUser> sortedProfiles = OpenlinkComponent.self.getUsers(pageStart, pageCount); Iterator it = sortedProfiles.iterator(); int i = 0; while( it.hasNext() ) { OpenlinkUser traderLyncUser = (OpenlinkUser)it.next(); try { if (XMPPServer.getInstance().getUserManager().isRegisteredUser(traderLyncUser.getUserId())) { User user = XMPPServer.getInstance().getUserManager().getUser(traderLyncUser.getUserId()); if(i % 2 == 1) out.println("<tr valign='top' class=\"jive-odd\">"); else out.println("<tr valign='top' class=\"jive-even\">"); out.println("<td width=\"1%\">"); out.println((pageStart + i + 1)); out.println("</td>"); out.println("<td width=\"11%\">"); out.println("<a href='traderlync-profile-detail?user=" + traderLyncUser.getProfileName() + "'>" + traderLyncUser.getProfileName() + "</a>"); out.println("</td>"); out.println("<td width=\"6%\">"); out.println(traderLyncUser.getUserId()); out.println("</td>"); if (traderLyncUser.getDeviceNo() != null && !"0.0.0.0".equals(traderLyncUser.getDeviceNo())) { out.println("<td width=\"6%\">"); out.println(traderLyncUser.getDeviceNo()); out.println("</td>"); } else { out.println("<td style='background-color:#c04d27' width=\"6%\"><font color='#ffffff'>"); out.println("offline"); out.println("</font></td>"); } out.println("<td width=\"4%\">"); out.println(traderLyncUser.getHandsetNo()); out.println("</td>"); out.println("<td width=\"6%\">"); out.println(traderLyncUser.getCallset() == null ? " " : traderLyncUser.getCallset()); out.println("</td>"); out.println("<td width=\"21%\">"); out.println(traderLyncUser.getUserName()); out.println("</td>"); out.println("<td width=\"6%\">"); out.println(traderLyncUser.getPersonalDDI() == null ? " " : traderLyncUser.getPersonalDDI()); out.println("</td>"); out.println("<td width=\"6%\">"); out.println(traderLyncUser.autoHold() ? "<img src=\"images/success-16x16.gif\" alt=\"Yes\" border=\"0\">" : " "); out.println("</td>"); out.println("<td width=\"6%\">"); out.println(traderLyncUser.autoPrivate() ? "<img src=\"images/success-16x16.gif\" alt=\"Yes\" border=\"0\">" : " "); out.println("</td>"); out.println("<td width=\"6%\">"); out.println("true".equals(traderLyncUser.getDefault()) ? "<img src=\"images/success-16x16.gif\" alt=\"Yes\" border=\"0\">" : " "); out.println("</td>"); out.println("</tr>"); i++; } else Log.warn( "ProfileSummary - ignoring Openlink User " + traderLyncUser.getUserId()); } catch(Exception e) { Log.error( "ProfileSummary " + e); e.printStackTrace(); } } out.println("<tr>"); out.println("<td> </td>"); out.println("</tr>"); out.println("</tbody>"); out.println("</table>"); out.println("</div>"); out.println("<p> </p>"); out.println("<p></p>"); out.println("</body>"); out.println("</html>"); } catch (Exception e) { Log.error( "ProfileSummary " + e); e.printStackTrace(); } } }