Colorbox: lepší promítačka fotek.
1 package cz.frantovo.nekurak.ejb;
3 import cz.frantovo.nekurak.chat.MistnostPripojena;
4 import cz.frantovo.nekurak.chat.Nastaveni;
5 import cz.frantovo.nekurak.chat.Spojeni;
6 import cz.frantovo.nekurak.chat.SpravceNastaveni;
7 import cz.frantovo.nekurak.chat.UcetRobota;
8 import cz.frantovo.nekurak.dto.ZpravaChatu;
9 import cz.frantovo.nekurak.vyjimky.NekurakVyjimka;
10 import java.util.ArrayList;
11 import java.util.Collection;
12 import java.util.logging.Level;
13 import java.util.logging.Logger;
14 import javax.annotation.PostConstruct;
15 import javax.annotation.PreDestroy;
16 import javax.ejb.Singleton;
17 import javax.ejb.Startup;
18 import javax.naming.NamingException;
26 public class ChatEJB implements ChatRemote {
28 private static final Logger log = Logger.getLogger(ChatRemote.class.getSimpleName());
29 private Nastaveni nastaveni;
30 private Collection<Spojeni> spojeni = new ArrayList<Spojeni>();
33 public void posliZpravu(String mistnost, String prezdivka, String zprava) throws NekurakVyjimka {
34 MistnostPripojena mp = najdiMistnost(mistnost);
36 throw new NekurakVyjimka("Místnost s tímto názvem neexistuje", null);
39 mp.posliZpravu(new ZpravaChatu(prezdivka, zprava));
40 } catch (Exception e) {
41 log.log(Level.SEVERE, "Selhalo odesílání zprávy", e);
42 throw new NekurakVyjimka("Zprávu se nepodařilo odeslat.", e);
48 * @param mistnost název místnosti včetně zavináče a serveru
49 * @param poradoveCislo pořadové číslo poslední zprávy, kterou jsme dostali
50 * @return všechny novější zprávy než dané pořadové číslo
51 * @throws NekurakVyjimka
54 public Collection<ZpravaChatu> getZpravy(String mistnost, int poradoveCislo) throws NekurakVyjimka {
55 MistnostPripojena mp = najdiMistnost(mistnost);
57 throw new NekurakVyjimka("Místnost s tímto názvem neexistuje", null);
59 return mp.getZpravy(poradoveCislo);
63 public ChatEJB() throws NekurakVyjimka {
64 /** TODO: vyřešit lépe. */
65 nastaveni = new SpravceNastaveni().getNastaveni();
70 for (Spojeni s : spojeni) {
75 //@PostConstruct //dočasně vypnuté
76 public void inicializuj() throws NekurakVyjimka, NamingException {
80 private void pripojXMPP() throws NekurakVyjimka {
82 for (UcetRobota u : nastaveni.getUctyRobota()) {
83 Spojeni s = new Spojeni(u);
86 } catch (Exception e) {
87 throw new NekurakVyjimka("Chyba při připojování.", e);
92 * @param nazev Název místnosti, kterou hledáme.
93 * @return nalezená místnost, nebo null, pokud místnost nebyla nalezena.
95 private MistnostPripojena najdiMistnost(String nazev) {
96 for (Spojeni s : spojeni) {
97 for (MistnostPripojena mp : s.getMistnosti()) {
98 if (mp.porovnejNazev(nazev)) {