package org.kevoree.library.xmpp.mngr; import org.jivesoftware.smack.*; import org.jivesoftware.smack.filter.PacketTypeFilter; import org.jivesoftware.smack.packet.*; import org.kevoree.library.xmpp.core.XmppKernel; import org.kevoree.library.xmpp.str.Pending; import org.kevoree.library.xmpp.str.PendingMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.net.ssl.SSLSocketFactory; import java.io.File; import java.util.*; public class ConnectionManager implements ConnectionListener { private static final Logger logger = LoggerFactory.getLogger(ConnectionManager.class); private XmppKernel kernel; public ConnectionManager() { kernel = new XmppKernel(); kernel.setConnectionManager(this); new ChatManager(kernel); } public boolean login(String userName, String password) { try { ConnectionConfiguration config = new ConnectionConfiguration("talk.google.com", 5222, "Work"); kernel.setXmppConnection(new XMPPConnection(config)); new ContactsManager(kernel); kernel.getXmppConnection().connect(); kernel.getXmppConnection().addConnectionListener(this); kernel.getXmppConnection().login(userName, password); kernel.getXmppConnection().getRoster().addRosterListener(kernel.getContactsManager()); return true; } catch (XMPPException e) { e.printStackTrace(); logger.error("Log in failed", e); return false; } } public void setAvailability(boolean available) { if(available) { kernel.getXmppConnection().sendPacket(new Presence(Presence.Type.available)); } else { kernel.getXmppConnection().sendPacket(new Presence(Presence.Type.unavailable)); } } public Collection<RosterEntry> getContacts() { return kernel.getContactsManager().getContactList(); } public boolean removeContact(String contactAddress) { return kernel.getContactsManager().removeRecipient(contactAddress); } public boolean addContact(String contactAddress) { return kernel.getContactsManager().addRecipient(contactAddress); } public void sendMessage(String message, String to, MessageListener listener) { kernel.getChatsManager().sendMessage(message, to, listener); } public void disconnect() { kernel.getXmppConnection().sendPacket(new Presence(Presence.Type.unavailable)); kernel.getXmppConnection().disconnect(); } public void printContactsStats() { kernel.getContactsManager().printContactsStats(); } /* public void setDefaultResponseStrategy(final MessageListener messageList) { PacketTypeFilter filter = new PacketTypeFilter(Message.class); PacketListener myListener = new PacketListener() { public void processPacket(Packet packet) { String name = packet.getFrom().substring(0, packet.getFrom().indexOf("/")); } }; connection.addPacketListener(myListener, filter); } */ public void sendFile(File f, String description, String to) { kernel.getChatsManager().sendFile(f,description,to); } public void connectionClosed() { logger.debug("XMPP Connection Closed"); } @Override public void connectionClosedOnError(Exception excptn) { // excptn.printStackTrace(); logger.error("Connection closed on error", excptn); } @Override public void reconnectingIn(int i) { logger.debug("XMPP Reconnecting(" + i + ")..."); } @Override public void reconnectionSuccessful() { logger.debug("XMPP Re-Connection Ok"); } @Override public void reconnectionFailed(Exception excptn) { // excptn.printStackTrace(); logger.error("Reconnection failed", excptn); } }