/
codebase/
codebase/area/
codebase/doc/
codebase/etc/
codebase/src/net/sourceforge/pain/data/trigger/
codebase/src/net/sourceforge/pain/logic/
codebase/src/net/sourceforge/pain/logic/affect/
codebase/src/net/sourceforge/pain/logic/event/
codebase/src/net/sourceforge/pain/logic/event/deploy/
codebase/src/net/sourceforge/pain/logic/event/guitool/
codebase/src/net/sourceforge/pain/logic/event/guitool/event/
codebase/src/net/sourceforge/pain/logic/fn/util/
codebase/src/net/sourceforge/pain/logic/trigger/
codebase/src/net/sourceforge/pain/logic/trigger/impl/
codebase/src/net/sourceforge/pain/network/console/
codebase/src/net/sourceforge/pain/network/console/telnet/
codebase/src/net/sourceforge/pain/network/guitool/
codebase/src/net/sourceforge/pain/plugin/
codebase/src/net/sourceforge/pain/plugin/command/
codebase/src/net/sourceforge/pain/plugin/reset/
codebase/src/net/sourceforge/pain/plugin/shutdown/
codebase/src/net/sourceforge/pain/plugin/social/
codebase/src/net/sourceforge/pain/util/
db/doc/javadoc/resources/
db/src/net/sourceforge/pain/util/
gui/
gui/lib/
gui/src/net/sourceforge/pain/tools/guitool/dbbrowse/
gui/src/net/sourceforge/pain/tools/guitool/dialog/
gui/src/net/sourceforge/pain/tools/guitool/menu/
gui/src/net/sourceforge/pain/tools/guitool/resources/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/explorer/
tests/
tests/src/
tests/src/net/sourceforge/pain/db/data/
package net.sourceforge.pain.logic.event;

import net.sourceforge.pain.*;
import net.sourceforge.pain.logic.fn.*;
import net.sourceforge.pain.logic.fn.util.*;
import net.sourceforge.pain.network.console.*;
import net.sourceforge.pain.util.*;

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.getConsoleManager().consoles());
        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(LangUtil.s(hours, " hour"));
        }
        if (minutes > 0) {
            result.append("" + minutes).append(LangUtil.s(minutes, " minute"));
        }
        if (secs > 0) {
            result.append("" + secs).append(LangUtil.s(secs, " second"));
        }
        return result.toString();
    }
}