view src/nabble/view/web/tools/OnlineUsers.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line source


package nabble.view.web.tools;

import nabble.view.web.user.OnlineStatus;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Map;


public final class OnlineUsers extends HttpServlet {

	private static class Entry {
		String url;
		int count;
		Entry(String url, int count) {
			this.url = url;
			this.count = count;
		}
	}

	protected void service(HttpServletRequest request,HttpServletResponse response)
		throws ServletException, IOException
	{
		Map<String, Integer> sites = OnlineStatus.getOnlineSites();
		ArrayList<Entry> list = new ArrayList<Entry>(sites.size());
		for (Map.Entry<String, Integer> entry : sites.entrySet()) {
			list.add(new Entry(entry.getKey(), entry.getValue()));
		}

		Collections.sort(list, new Comparator<Entry>() {
			public int compare(Entry o1, Entry o2) {
				return o1.count == o2.count? 0 : o1.count > o2.count? -1 : 1;
			}
		});

		PrintWriter out = response.getWriter();
		
		out.print( "\n<html>\n	<head>\n		<title>Online Users</title>\n		<style type=\"text/css\">\n			body {\n				font-family:Verdana, Arial, Serif;\n				font-size:.74em;\n			}\n			table td{padding:.4em .8em;border-bottom:1px solid #eee}\n		</style>\n	</head>\n	<body>\n		<div>\n			<a href=\"/tools/\">Tools</a>\n		</div>\n		<h1>Online Users</h1>\n\n		<table>\n		" );
 for (Entry entry : list) { 
		out.print( "\n			<tr><td><a href=\"" );
		out.print( (entry.url) );
		out.print( "\">" );
		out.print( (entry.url) );
		out.print( "</a></td><td>" );
		out.print( (entry.count) );
		out.print( "</td></tr>\n		" );
 } 
		out.print( "\n		</table>\n	</body>\n</html>\n" );

	}

}