/
area/
classes/net/sourceforge/pain/logic/
classes/net/sourceforge/pain/logic/event/
classes/net/sourceforge/pain/logic/fn/util/
classes/net/sourceforge/pain/network/console/
classes/net/sourceforge/pain/plugin/
classes/net/sourceforge/pain/plugin/reset/
classes/net/sourceforge/pain/plugin/shutdown/
classes/net/sourceforge/pain/plugin/social/
classest/net/sourceforge/pain/db/data/
doc/
doc/paindb/resources/
src/net/sourceforge/pain/logic/
src/net/sourceforge/pain/logic/event/
src/net/sourceforge/pain/logic/fn/util/
src/net/sourceforge/pain/network/console/
src/net/sourceforge/pain/network/console/telnet/
src/net/sourceforge/pain/plugin/
src/net/sourceforge/pain/plugin/command/
src/net/sourceforge/pain/plugin/reset/
src/net/sourceforge/pain/plugin/shutdown/
src/net/sourceforge/pain/plugin/social/
src/net/sourceforge/pain/util/
tests/
tests/net/sourceforge/pain/db/data/
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();
	}
}