/
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.*;
import net.sourceforge.pain.data.type.*;
import net.sourceforge.pain.db.*;
import net.sourceforge.pain.logic.*;
import net.sourceforge.pain.logic.fn.*;

import java.util.*;

/**
 * PAiN  Date: 14.04.2003  Time: 0:38:36
 */
public class CheckSafeShutdown extends AbstractEvent {

	public Object execute(Object param) throws Exception {
		final PainDB db = Core.getDB();
		final DbClass playerClass = db.getDbClass(Player.class);
		final Space commonQuitSpace = Core.getWorld().getPlayersQuitSpace();
		if (playerClass != null) { // if db is empty this class could be absent
			for (Iterator it = playerClass.extentIterator(); it.hasNext();) {
				final Player p = (Player) it.next();
				final Located located = p.asLocated();
				final Space lastLocation = located.getLocation();
				if (lastLocation != commonQuitSpace) {
					RelocateFn.relocate(located, commonQuitSpace);
					p.setQuitSpace(lastLocation);
				}
				p.setNextActivePlayer(null);
				p.setPrevActivePlayer(null);
			}
			Core.getWorld().setFirstActivePlayer(null);
			return null;
		}
		return "ok";
	}
}