Java tutorial
/* * Project: xdccBee * Copyright (C) 2009 snert@snert-lab.de, * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package de.snertlab.xdccBee.irc; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.jdom.Element; /** * @author snert * */ public class IrcChannel implements IDccPacketList, IConnectedState { private IrcServer ircServer; private String channelName; private Map<String, DccPacket> mapDccPackets; private boolean autoconnect; public IrcChannel() { this.mapDccPackets = new HashMap<String, DccPacket>(); } public IrcChannel(IrcServer ircServer) { this(); this.ircServer = ircServer; } public IrcChannel(IrcServer ircServer, String channelName) { this(); this.ircServer = ircServer; this.channelName = channelName; } public IrcServer getIrcServer() { return ircServer; } public void setIrcServer(IrcServer ircServer) { this.ircServer = ircServer; } public String getChannelName() { return channelName; } public void setChannelName(String channelName) { this.channelName = channelName; } public Element makeXmlNode() { Element nodeChannel = new Element("IRC_CHANNEL"); //$NON-NLS-1$ nodeChannel.setAttribute("channelName", StringUtils.defaultString(channelName)); //$NON-NLS-1$ return nodeChannel; } public void connect() { if (ircServer.isConnected()) { ircServer.getDccBot().doJoin(channelName); } else { throw new RuntimeException("Server is not connected"); //$NON-NLS-1$ } } public void disconnect() { ircServer.getDccBot().doPart(channelName); // remove precaution also from listchoinedchannels => because if server // didnt answer channel in gui is still connected ircServer.getDccBot().removeChannelFromJoinedChannelList(channelName); } public boolean isConnected() { return ircServer.getDccBot().isChannelJoined(channelName); } public void addDccPacket(DccPacket dccPacket) { mapDccPackets.put(dccPacket.toString(), dccPacket); } @Override public List<DccPacket> getListDccPackets() { return new ArrayList<DccPacket>(mapDccPackets.values()); } public void dccSendFile(DccPacket dccPacket) { ircServer.getDccBot().xdccSend(dccPacket); } @Override public boolean containsDccPacket(DccPacket dccPacket) { return mapDccPackets.containsKey(dccPacket.toString()); } public void setAutoconnect(boolean autoconnect) { this.autoconnect = autoconnect; } public boolean isAutoconnect() { return autoconnect; } }