package net.sourceforge.pain.logic.event; import net.sourceforge.pain.logic.*; import net.sourceforge.pain.logic.fn.*; import net.sourceforge.pain.*; import net.sourceforge.pain.util.*; import net.sourceforge.pain.network.console.*; import java.util.*; /** * PAiN Date: 20.05.2003 Time: 1:11:25 */ public class ShutdownWarn extends AbstractEvent { public Object execute(Object param) throws Exception { int timeInSec = ((Integer) param).intValue(); String str; if (timeInSec < 0) { str = "{GShutdown Stopped!{x\n"; } else if (timeInSec == 0) { str = "{GServer is shutting down!{x\n"; } else { str = "{CServer will be shutted down in " + formatTime(timeInSec) + "!{x\n"; } Collection consoles = new ArrayList(Core.consoleByOwner.values()); for (Iterator it = consoles.iterator(); it.hasNext();) { MessageOutFn.outln((Console) it.next(), str); } if (timeInSec == 0) { //detaching consoles for (Iterator it = consoles.iterator(); it.hasNext();) { try { ConsoleFn.logoutUser((Console) it.next()); } catch (Exception e) { Log.error(e.getMessage()); } } } return null; } private static String formatTime(int timeInSec) { int hours = timeInSec / 3600; int minutes = (timeInSec % 3600) / 60; int secs = timeInSec % 60; StringBuffer result = new StringBuffer(); if (hours > 0) { result.append("" + hours).append(" hours "); } if (minutes > 0) { result.append("" + minutes).append(" minutes "); } if (secs > 0) { result.append("" + secs).append(" seconds "); } return result.toString(); } }