pw.println("<th>Logged In</th>");
pw.println("<th>Last Access</th>");
pw.println("<th>Max Idle Time (s)</th>");
pw.println("</tr>");
for (SessionEntry entry : this.sessions.values()) {
final FtpSession session = entry.getSession();
/*
* Display a subset of the session information. The following
* is omitted for now:
* - session.getDataType();
* - session.getFailedLogins();
* - session.getFileOffset();
* - session.getLanguage()
* - session.getUserArgument();
* - session.getStructure();
*/
pw.println("<tr>");
pw.printf("<td>%s</td>%n", session.getSessionId());
pw.printf("<td>%s</td>%n", session.getUser().getName());
pw.printf("<td>%s:%s</td>%n", session.getClientAddress().getAddress().getHostAddress(),
session.getClientAddress().getPort());
pw.printf("<td>%1$tF %1$tT</td>%n", session.getConnectionTime());
pw.printf("<td>%1$tF %1$tT</td>%n", session.getLoginTime());
pw.printf("<td>%1$tF %1$tT</td>%n", session.getLastAccessTime());
pw.printf("<td>%d</td>%n", session.getMaxIdleTime());
pw.println("</tr>");
if (entry.getRequestLine() != null) {
pw.println("<tr>");
pw.printf("<td> </td>%n");