java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java
author František Kučera <franta-hg@frantovo.cz>
Sat Jun 19 11:19:27 2010 +0200 (2010-06-19)
changeset 142 44ef544460ca
parent 134 4bd1e353c527
child 145 0efefbf5f8b6
permissions -rw-r--r--
AJAX komentáře
     1 package cz.frantovo.nekurak.ejb;
     2 
     3 import cz.frantovo.nekurak.dao.PodnikDAO;
     4 import cz.frantovo.nekurak.dto.Komentar;
     5 import cz.frantovo.nekurak.dto.Podnik;
     6 import cz.frantovo.nekurak.dto.VysledekHlasovani;
     7 import cz.frantovo.nekurak.ext.Geo;
     8 import cz.frantovo.nekurak.ext.Geo.Souradnice;
     9 import cz.frantovo.nekurak.ext.Texy;
    10 import cz.frantovo.nekurak.util.Komentare;
    11 import cz.frantovo.nekurak.vyjimky.KomentarovaVyjimka;
    12 import cz.frantovo.nekurak.vyjimky.TexyVyjimka;
    13 import java.util.Collection;
    14 import java.util.logging.Logger;
    15 import javax.annotation.Resource;
    16 import javax.annotation.security.RolesAllowed;
    17 import javax.ejb.EJB;
    18 import javax.ejb.SessionContext;
    19 import javax.ejb.Stateless;
    20 
    21 /**
    22  *
    23  * @author fiki
    24  */
    25 @Stateless
    26 public class PodnikEJB implements PodnikRemote {
    27 
    28     private static final Logger log = Logger.getLogger(PodnikEJB.class.getSimpleName());
    29     @EJB
    30     private PodnikDAO podnikDAO;
    31     @Resource
    32     private SessionContext ctx;
    33     private Komentare komentare = new Komentare();
    34 
    35     public Collection<Podnik> getPodniky() {
    36 	Collection<Podnik> vysledek = podnikDAO.getPodniky();
    37 	return vysledek;
    38     }
    39 
    40     public Podnik getPodnik(int id) {
    41 	return podnikDAO.getPodnik(id);
    42     }
    43 
    44     @RolesAllowed("opravneny")
    45     public void zalozPodnik(Podnik p) {
    46 	p.setSpravce(ctx.getCallerPrincipal().getName());
    47 	podnikDAO.zaloz(p);
    48     }
    49 
    50     @RolesAllowed("opravneny")
    51     public void upravPodnik(Podnik p) {
    52 	podnikDAO.uloz(p);
    53     }
    54 
    55     public int dopocitejSouradnice() {
    56 	/**
    57 	 * TODO: refaktorovat, změnit datové typy, souřadnice…
    58 	 */
    59 	Geo g = new Geo();
    60 	int pocetAktualizovanych = 0;
    61 
    62 	for (Podnik p : podnikDAO.getPodnikyBezSouradnic()) {
    63 	    Souradnice s = g.getSouradnice(p.getUlice() + " " + p.getCisloPopisne() + ", " + p.getMesto());
    64 	    if (s != null) {
    65 		pocetAktualizovanych++;
    66 		p.setSirka(s.getSirka());
    67 		p.setDelka(s.getDelka());
    68 		podnikDAO.uloz(p);
    69 	    }
    70 	}
    71 
    72 	return pocetAktualizovanych;
    73     }
    74 
    75     public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
    76 
    77 	podnikDAO.hlasuj(podnik, hlas, ipAdresa);
    78     }
    79 
    80     public VysledekHlasovani getVysledekHlasovani(int podnik) {
    81 	return podnikDAO.getVysledekHlasovani(podnik);
    82     }
    83 
    84     private void kontrolaKomentare(Komentar k) throws TexyVyjimka, KomentarovaVyjimka {
    85 	k.setUzivatel(ctx.getCallerPrincipal().getName());
    86 	k.setDatum(null);
    87 
    88 	if (k.getKomentar() == null || k.getKomentar().length() < 1) {
    89 	    throw new KomentarovaVyjimka("Nechceme prázdné komentáře.", null);
    90 	}
    91 
    92 	/** Převedeme na XML */
    93 	switch (k.getTyp()) {
    94 	    case PROSTY_TEXT:
    95 		k.setKomentar(Komentare.upravProstyText(k.getKomentar()));
    96 		break;
    97 	    case TEXY:
    98 		Texy t = new Texy();
    99 		k.setKomentar(t.preved(k.getKomentar()));
   100 		break;
   101 	    case XHTML:
   102 		k.setKomentar(Komentare.upravXHTML(k.getKomentar()));
   103 		break;
   104 	}
   105 	/** Přidáme kořenový element */
   106 	k.setKomentar(Komentare.obal(k.getKomentar()));
   107 
   108 	/** Zkontrolujeme XML */
   109 	Komentare.zkontroluj(k.getKomentar());
   110     }
   111 
   112     @RolesAllowed("opravneny")
   113     public Komentar komentuj(Komentar k, boolean uloz) throws KomentarovaVyjimka, TexyVyjimka {
   114 	kontrolaKomentare(k);
   115 	if (uloz) {
   116 	    podnikDAO.zaloz(k);
   117 	}
   118 	return k;
   119     }
   120 }