// Copyright (c) 2015 Christopher "BlayTheNinth" Baker package net.blay09.mods.eirairc.irc; import com.google.common.collect.Maps; import net.blay09.mods.eirairc.api.config.IConfigManager; import net.blay09.mods.eirairc.api.irc.IRCChannel; import net.blay09.mods.eirairc.api.irc.IRCUser; import net.blay09.mods.eirairc.util.ConfigHelper; import java.util.Collection; import java.util.Map; public class IRCChannelImpl implements IRCChannel { private IRCConnectionImpl connection; private String name; private String topic; private Map<String, IRCUser> users = Maps.newHashMap(); public IRCChannelImpl(IRCConnectionImpl connection, String name) { this.connection = connection; this.name = name; } public Collection<IRCUser> getUserList() { return users.values(); } public IRCUser getUser(String nick) { return users.get(nick.toLowerCase()); } public void addUser(IRCUserImpl user) { users.put(user.getName().toLowerCase(), user); } public void removeUser(IRCUser user) { users.remove(user.getName().toLowerCase()); } @Override public void message(String message) { connection.message(name, message); } @Override public void notice(String message) { connection.notice(name, message); } public String getName() { return name; } @Override public ContextType getContextType() { return ContextType.IRCChannel; } @Override public boolean hasTopic() { return topic != null; } public void setTopic(String topic) { this.topic = topic; } @Override public String getTopic() { return topic; } public IRCConnectionImpl getConnection() { return connection; } public boolean hasUser(String nick) { return users.containsKey(nick.toLowerCase()); } public String getIdentifier() { return connection.getIdentifier() + "/" + name.toLowerCase(); } @Override public void ctcpMessage(String message) { message(IRCConnectionImpl.CTCP_START + message + IRCConnectionImpl.CTCP_END); } @Override public void ctcpNotice(String message) { notice(IRCConnectionImpl.CTCP_START + message + IRCConnectionImpl.CTCP_END); } @Override public IConfigManager getGeneralSettings() { return ConfigHelper.getGeneralSettings(this).manager; } @Override public IConfigManager getBotSettings() { return ConfigHelper.getBotSettings(this).manager; } @Override public IConfigManager getThemeSettings() { return ConfigHelper.getTheme(this).manager; } }