java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/chat/Spojeni.java
author František Kučera <franta-hg@frantovo.cz>
Sun, 15 Aug 2010 22:20:10 +0200
changeset 151 d7b5099bf65e
parent 149 8238cdb4113a
permissions -rw-r--r--
chat
     1 package cz.frantovo.nekurak.chat;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collection;
     5 import java.util.logging.Level;
     6 import java.util.logging.Logger;
     7 import org.jivesoftware.smack.ConnectionConfiguration;
     8 import org.jivesoftware.smack.XMPPConnection;
     9 import org.jivesoftware.smack.XMPPException;
    10 
    11 /**
    12  *
    13  * @author fiki
    14  */
    15 public class Spojeni {
    16 
    17 	private XMPPConnection spojeni;
    18 	private Collection<MistnostPripojena> mistnosti = new ArrayList<MistnostPripojena>();
    19 	private static final Logger log = Logger.getLogger(Spojeni.class.getSimpleName());
    20 
    21 	public Spojeni(UcetRobota ucet) throws XMPPException {
    22 		/** Navážeme spojení */
    23 		ConnectionConfiguration nastaveni;
    24 		if (ucet.getAdresaServeru() == null || ucet.getPort() == 0) {
    25 			nastaveni = new ConnectionConfiguration(ucet.getDomena());
    26 		} else {
    27 			nastaveni = new ConnectionConfiguration(ucet.getAdresaServeru(), ucet.getPort(), ucet.getDomena());
    28 		}
    29 
    30 		spojeni = new XMPPConnection(nastaveni);
    31 		spojeni.connect();
    32 		spojeni.login(ucet.getUzivatelskeJmeno(), ucet.getUzivatelskeHeslo(), ucet.getProstredek());
    33 
    34 		/** Vstoupíme do místností */
    35 		for (Mistnost m : ucet.getMistnosti()) {
    36 			MistnostPripojena mp = new MistnostPripojena(m, this);
    37 			mistnosti.add(mp);
    38 		}
    39 	}
    40 
    41 	public void odpoj() {
    42 		/** Rozloučíme se ve všech místnostech */
    43 		try {
    44 			for (MistnostPripojena mp : mistnosti) {
    45 				mp.odejdi();
    46 			}
    47 		} catch (Exception e) {
    48 			log.log(Level.WARNING, "Nepodařilo se odejít z místnosti před ukončením spojení.", e);
    49 		}
    50 
    51 		/** Ukončíme spojení */
    52 		spojeni.disconnect();
    53 	}
    54 
    55 	public XMPPConnection getSpojeni() {
    56 		return spojeni;
    57 	}
    58 
    59 	public Collection<MistnostPripojena> getMistnosti() {
    60 		return mistnosti;
    61 	}
    62 }