package bot.info; import java.util.HashMap; import java.util.HashSet; import java.util.Map.Entry; public class Info { private static HashMap<String, User> users = new HashMap<String, User>(); private static HashMap<String, Channel> channels = new HashMap<String, Channel>(); public static void parse(String s){ String[] split = s.split("\\s+"); User user; if(!users.containsKey(split[4])){ String realname = split[7]; for(int i = 8; i < split.length; i++){ realname += " " + split[i]; } user = new User(split[4], split[2], split[1], split[5], realname); users.put(split[4], user); } else{ user = users.get(split[4]); String realname = split[7]; for(int i = 8; i < split.length; i++){ realname += " " + split[i]; } user.update(split[4], split[2], split[1], split[5], realname); if(!user.isIn(split[0])){ user.addChan(split[0]); } users.put(split[4], user); } Channel channel; if(!channels.containsKey(split[0])){ channel = new Channel(split[0]); } else{ channel = channels.get(split[0]); } channel.addModes(split[4], split[5]); channels.put(split[0], channel); } public static void forget(String nick){ users.remove(nick); for(Entry<String, Channel> entry : channels.entrySet()){ Channel channel = entry.getValue(); channel.remove(nick); channels.put(entry.getKey(), channel); } } public static boolean hasUserInfo(String nick){ return users.containsKey(nick); } public static User getUserInfo(String nick){ return users.get(nick); } public static boolean hasChannelInfo(String chan){ return channels.containsKey(chan); } public static Channel getChannelInfo(String chan){ return channels.get(chan); } public static boolean isRegistered(String nick){ if(users.containsKey(nick))return users.get(nick).getModes().contains("r"); else return false; } public static void changeNick(String from, String to){ if(!users.containsKey(from)) return; HashMap<String, Channel> tempmap = new HashMap<String, Channel>(); for(Entry<String, Channel> en : channels.entrySet()){ Channel c = en.getValue(); c.changeNick(from, to); tempmap.put(en.getKey(), c); } channels = tempmap; User user = users.get(from); user.changeNick(to); users.remove(from); users.put(to, user); } public static void removeChan(String nick, String chan){ User user = users.get(nick); user.removeChan(chan); users.put(nick, user); Channel channel = channels.get(chan); channel.remove(nick); channels.put(nick, channel); } }