package games.strategy.engine.lobby.server; import java.util.logging.Logger; import games.strategy.engine.message.IRemoteMessenger; import games.strategy.engine.message.RemoteName; import games.strategy.net.INode; import games.strategy.net.IServerMessenger; import games.strategy.net.Messengers; public abstract class AbstractModeratorController implements IModeratorController { protected static final Logger s_logger = Logger.getLogger(ModeratorController.class.getName()); protected final IServerMessenger m_serverMessenger; protected final Messengers m_allMessengers; public AbstractModeratorController(final IServerMessenger serverMessenger, final Messengers messengers) { m_serverMessenger = serverMessenger; m_allMessengers = messengers; } public static RemoteName getModeratorControllerName() { return new RemoteName(IModeratorController.class, "games.strategy.engine.lobby.server.ModeratorController:Global"); } public void register(final IRemoteMessenger messenger) { messenger.registerRemote(this, getModeratorControllerName()); } protected String getNodeMacAddress(final INode node) { return m_serverMessenger.getPlayerMac(node.getName()); } protected String getRealName(final INode node) { // Remove any (n) that is added to distinguish duplicate names final String name = node.getName().split(" ")[0]; return name; } protected String getAliasesFor(final INode node) { final StringBuilder builder = new StringBuilder(); final String nodeMac = getNodeMacAddress(node); for (final INode cur : m_serverMessenger.getNodes()) { if (cur.equals(node) || cur.getName().equals("Admin")) { continue; } if (cur.getAddress().equals(node.getAddress()) || getNodeMacAddress(cur).equals(nodeMac)) { if (builder.length() > 0) { builder.append(", "); } builder.append(cur.getName()); } } if (builder.length() > 100) { // So replace comma's to keep names within screen return builder.toString().replace(", ", "\r\n"); } return builder.toString(); } }