[jetrix-cvs] SF.net SVN: jetrix:[819] monitor/trunk/src/main
Brought to you by:
smanux
From: <sm...@us...> - 2010-02-22 15:03:40
|
Revision: 819 http://jetrix.svn.sourceforge.net/jetrix/?rev=819&view=rev Author: smanux Date: 2010-02-22 15:03:33 +0000 (Mon, 22 Feb 2010) Log Message: ----------- The last time a server was populated and the last time a game was played are now recorded Modified Paths: -------------- monitor/trunk/src/main/java/net/jetrix/monitor/ServerInfo.java monitor/trunk/src/main/java/net/jetrix/monitor/job/ServerSurveyJob.java monitor/trunk/src/main/resources/hibernate-mapping.xml monitor/trunk/src/main/webapp/WEB-INF/classes/messages.properties monitor/trunk/src/main/webapp/WEB-INF/classes/messages_fr.properties monitor/trunk/src/main/webapp/server.jsp Modified: monitor/trunk/src/main/java/net/jetrix/monitor/ServerInfo.java =================================================================== --- monitor/trunk/src/main/java/net/jetrix/monitor/ServerInfo.java 2010-02-22 12:46:29 UTC (rev 818) +++ monitor/trunk/src/main/java/net/jetrix/monitor/ServerInfo.java 2010-02-22 15:03:33 UTC (rev 819) @@ -44,10 +44,21 @@ private boolean spectate; private String spectatorPassword; + /** The date the server was added to the survey. */ private Date dateAdded; + + /** The last time the server was queried. */ private Date lastChecked; + + /** The last time the server was online. */ private Date lastOnline; + /** The last time the server was populated with players. */ + private Date lastPopulated; + + /** The last time the server hosted a game. */ + private Date lastActive; + private ServerStats stats = new ServerStats(); private int maxPlayerCount; @@ -181,6 +192,26 @@ this.lastOnline = lastOnline; } + public Date getLastPopulated() + { + return lastPopulated; + } + + public void setLastPopulated(Date lastPopulated) + { + this.lastPopulated = lastPopulated; + } + + public Date getLastActive() + { + return lastActive; + } + + public void setLastActive(Date lastActive) + { + this.lastActive = lastActive; + } + public ServerStats getStats() { return stats; Modified: monitor/trunk/src/main/java/net/jetrix/monitor/job/ServerSurveyJob.java =================================================================== --- monitor/trunk/src/main/java/net/jetrix/monitor/job/ServerSurveyJob.java 2010-02-22 12:46:29 UTC (rev 818) +++ monitor/trunk/src/main/java/net/jetrix/monitor/job/ServerSurveyJob.java 2010-02-22 15:03:33 UTC (rev 819) @@ -58,67 +58,29 @@ { ApplicationContext context = (ApplicationContext) jobExecutionContext.getMergedJobDataMap().get("applicationContext"); ServerInfoDao serverInfoDao = (ServerInfoDao) context.getBean("serverInfoDao"); - ServerStatsDao serverStatsDao = (ServerStatsDao) context.getBean("serverStatsDao"); - PlayerStatsDao playerStatsDao = (PlayerStatsDao) context.getBean("playerStatsDao"); - + List<ServerInfo> servers = serverInfoDao.getServers(); - + log.info("Checking servers... "); - + List<Callable<ServerInfo>> workers = new ArrayList<Callable<ServerInfo>>(); - + ExecutorService executor = Executors.newFixedThreadPool(20); for (ServerInfo server : servers) { workers.add(new Worker(server)); } - + try { List<Future<ServerInfo>> results = executor.invokeAll(workers, 45, TimeUnit.SECONDS); executor.shutdown(); - + for (Future<ServerInfo> result : results) { try { - ServerInfo server = result.get(); - if (!server.isOnline()) - { - server.getPlayers().clear(); - } - serverInfoDao.save(server); - - // update the server stats for the activity graph - ServerStats stats = server.getStats(); - stats.setServerId(server.getId()); - stats.setDate(server.getLastChecked()); - if (stats.getPlayerCount() > 0) - { - serverStatsDao.save(stats); - } - - // update the player stats - for (PlayerInfo player : server.getPlayers()) - { - PlayerStats playerStats = playerStatsDao.getStats(player.getNick()); - if (playerStats == null) - { - playerStats = new PlayerStats(); - playerStats.setName(player.getNick()); - playerStats.setFirstSeen(server.getLastOnline()); - } - - playerStats.setTeam(player.getTeam()); - playerStats.setLastSeen(server.getLastOnline()); - playerStats.setLastServer(server); - if (player.isPlaying()) - { - playerStats.setLastPlayed(server.getLastOnline()); - } - - playerStatsDao.save(playerStats); - } + handleResult(context, result.get()); } catch (ExecutionException e) { @@ -136,27 +98,71 @@ } } + private void handleResult(ApplicationContext context, ServerInfo server) + { + ServerInfoDao serverInfoDao = (ServerInfoDao) context.getBean("serverInfoDao"); + ServerStatsDao serverStatsDao = (ServerStatsDao) context.getBean("serverStatsDao"); + PlayerStatsDao playerStatsDao = (PlayerStatsDao) context.getBean("playerStatsDao"); + + if (!server.isOnline()) + { + server.getPlayers().clear(); + } + serverInfoDao.save(server); + + // update the server stats for the activity graph + ServerStats stats = server.getStats(); + stats.setServerId(server.getId()); + stats.setDate(server.getLastChecked()); + if (stats.getPlayerCount() > 0) + { + serverStatsDao.save(stats); + } + + // update the player stats + for (PlayerInfo player : server.getPlayers()) + { + PlayerStats playerStats = playerStatsDao.getStats(player.getNick()); + if (playerStats == null) + { + playerStats = new PlayerStats(); + playerStats.setName(player.getNick()); + playerStats.setFirstSeen(server.getLastOnline()); + } + + playerStats.setTeam(player.getTeam()); + playerStats.setLastSeen(server.getLastOnline()); + playerStats.setLastServer(server); + if (player.isPlaying()) + { + playerStats.setLastPlayed(server.getLastOnline()); + } + + playerStatsDao.save(playerStats); + } + } + private class Worker implements Callable<ServerInfo> { private ServerInfo server; - + public Worker(ServerInfo server) { this.server = server; } - + public ServerInfo call() throws Exception { QueryAgent agent = new QueryAgent(); server.setLastChecked(new Date()); server.setStats(new ServerStats()); - + try { agent.connect(server.getHostname()); - + QueryInfo info = agent.getInfo(); - + server.getStats().update(info); server.setVersion(info.getVersion()); server.setLastOnline(server.getLastChecked()); @@ -172,18 +178,29 @@ } server.setPlayers(info.getPlayers()); - + if (server.getStats().getActivePlayerCount() > server.getMaxActivePlayerCount()) { server.setMaxActivePlayerCount(server.getStats().getActivePlayerCount()); server.setMaxActivePlayerDate(server.getLastChecked()); } + if (server.getStats().getPlayerCount() > server.getMaxPlayerCount()) { server.setMaxPlayerCount(server.getStats().getPlayerCount()); server.setMaxPlayerDate(server.getLastChecked()); } - + + if (server.getStats().getActivePlayerCount() > 0) + { + server.setLastActive(server.getLastChecked()); + } + + if (server.getStats().getPlayerCount() > 0) + { + server.setLastPopulated(server.getLastPopulated()); + } + server.setSpectate(NetworkUtils.isPortOpen(server.getHostname(), 31458)); } catch (Exception e) @@ -194,7 +211,7 @@ { agent.disconnect(); } - + return server; } } Modified: monitor/trunk/src/main/resources/hibernate-mapping.xml =================================================================== --- monitor/trunk/src/main/resources/hibernate-mapping.xml 2010-02-22 12:46:29 UTC (rev 818) +++ monitor/trunk/src/main/resources/hibernate-mapping.xml 2010-02-22 15:03:33 UTC (rev 819) @@ -15,10 +15,12 @@ <property name="website" column="website"/> <property name="spectate" column="spec" not-null="true"/> <property name="spectatorPassword" column="spec_pass"/> - + <property name="dateAdded" column="date_added"/> <property name="lastChecked" column="last_checked"/> <property name="lastOnline" column="last_online"/> + <property name="lastPopulated" column="last_populated"/> + <property name="lastActive" column="last_active"/> <component name="stats"> <property name="ping" column="ping" not-null="true"/> <property name="playerCount" column="player_count" not-null="true"/> @@ -26,7 +28,7 @@ <property name="activePlayerCount" column="active_player_count" not-null="true"/> <property name="activeChannelCount" column="active_channel_count" not-null="true"/> </component> - + <list name="channels" table="channel" cascade="all" lazy="false"> <key column="server_id"/> <index column="pos"/> Modified: monitor/trunk/src/main/webapp/WEB-INF/classes/messages.properties =================================================================== --- monitor/trunk/src/main/webapp/WEB-INF/classes/messages.properties 2010-02-22 12:46:29 UTC (rev 818) +++ monitor/trunk/src/main/webapp/WEB-INF/classes/messages.properties 2010-02-22 15:03:33 UTC (rev 819) @@ -21,6 +21,7 @@ word.peak = Peak word.date-added = Date Added word.last-online = Last Online +word.last-game = Last Game word.never = Never word.tetrinet-client = Client word.slot = Slot Modified: monitor/trunk/src/main/webapp/WEB-INF/classes/messages_fr.properties =================================================================== --- monitor/trunk/src/main/webapp/WEB-INF/classes/messages_fr.properties 2010-02-22 12:46:29 UTC (rev 818) +++ monitor/trunk/src/main/webapp/WEB-INF/classes/messages_fr.properties 2010-02-22 15:03:33 UTC (rev 819) @@ -20,7 +20,8 @@ word.no = Non word.peak = Pointe word.date-added = Date d'ajout -word.last-online = Derniere V\xE9rification +word.last-online = Derni\xE8re Dispo +word.last-game = Derni\xE8re Partie word.never = Jamais word.tetrinet-client = Client word.slot = Place Modified: monitor/trunk/src/main/webapp/server.jsp =================================================================== --- monitor/trunk/src/main/webapp/server.jsp 2010-02-22 12:46:29 UTC (rev 818) +++ monitor/trunk/src/main/webapp/server.jsp 2010-02-22 15:03:33 UTC (rev 819) @@ -12,20 +12,20 @@ <% WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); ServerInfoDao dao = (ServerInfoDao) context.getBean("serverInfoDao"); - + ServerInfo server = dao.getServer(Long.parseLong(request.getParameter("id"))); - + String countryName = "Unknown"; String localizedCountryName = "Unknown"; String countryFlag = "United Nations"; - + if (server.getCountry() != null) { Locale locale = new Locale("en", server.getCountry()); countryName = locale.getDisplayCountry(Locale.ENGLISH); localizedCountryName = locale.getDisplayCountry(request.getLocale()); countryFlag = countryName; } - + boolean viewable = server.isSpectate() && server.getSpectatorPassword() != null; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> @@ -140,6 +140,16 @@ <% } %> </td> </tr> + <tr> + <th><fmt:message key="word.last-game"/></th> + <td> + <% if (server.getLastActive() != null) { %> + <%= server.getLastActive() %> + <% } else { %> + <fmt:message key="word.never"/> + <% } %> + </td> + </tr> </table> <p><a href="<%= request.getContextPath() %>/"><fmt:message key="message.back-to-servers"/></a></p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |