java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ejb/PodnikEJB.java
author František Kučera <franta-hg@frantovo.cz>
Sun Jun 20 14:46:47 2010 +0200 (2010-06-20)
changeset 145 0efefbf5f8b6
parent 142 44ef544460ca
child 164 e146e2e3b80b
permissions -rw-r--r--
Formátování kódu, důsledné používání tabulátorů, drobné úpravy, StringBuilder
     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 
    34 	public Collection<Podnik> getPodniky() {
    35 		Collection<Podnik> vysledek = podnikDAO.getPodniky();
    36 		return vysledek;
    37 	}
    38 
    39 	public Podnik getPodnik(int id) {
    40 		return podnikDAO.getPodnik(id);
    41 	}
    42 
    43 	@RolesAllowed("opravneny")
    44 	public void zalozPodnik(Podnik p) {
    45 		p.setSpravce(ctx.getCallerPrincipal().getName());
    46 		podnikDAO.zaloz(p);
    47 	}
    48 
    49 	@RolesAllowed("opravneny")
    50 	public void upravPodnik(Podnik p) {
    51 		podnikDAO.uloz(p);
    52 	}
    53 
    54 	public int dopocitejSouradnice() {
    55 		/**
    56 		 * TODO: refaktorovat, změnit datové typy, souřadnice…
    57 		 */
    58 		Geo g = new Geo();
    59 		int pocetAktualizovanych = 0;
    60 
    61 		for (Podnik p : podnikDAO.getPodnikyBezSouradnic()) {
    62 			Souradnice s = g.getSouradnice(p.getUlice() + " " + p.getCisloPopisne() + ", " + p.getMesto());
    63 			if (s != null) {
    64 				pocetAktualizovanych++;
    65 				p.setSirka(s.getSirka());
    66 				p.setDelka(s.getDelka());
    67 				podnikDAO.uloz(p);
    68 			}
    69 		}
    70 
    71 		return pocetAktualizovanych;
    72 	}
    73 
    74 	public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
    75 
    76 		podnikDAO.hlasuj(podnik, hlas, ipAdresa);
    77 	}
    78 
    79 	public VysledekHlasovani getVysledekHlasovani(int podnik) {
    80 		return podnikDAO.getVysledekHlasovani(podnik);
    81 	}
    82 
    83 	private void kontrolaKomentare(Komentar k) throws TexyVyjimka, KomentarovaVyjimka {
    84 		k.setUzivatel(ctx.getCallerPrincipal().getName());
    85 		k.setDatum(null);
    86 
    87 		if (k.getKomentar() == null || k.getKomentar().length() < 1) {
    88 			throw new KomentarovaVyjimka("Nechceme prázdné komentáře.", null);
    89 		}
    90 
    91 		/** Převedeme na XML */
    92 		switch (k.getTyp()) {
    93 			case PROSTY_TEXT:
    94 				k.setKomentar(Komentare.upravProstyText(k.getKomentar()));
    95 				break;
    96 			case TEXY:
    97 				Texy t = new Texy();
    98 				k.setKomentar(t.preved(k.getKomentar()));
    99 				break;
   100 			case XHTML:
   101 				k.setKomentar(Komentare.upravXHTML(k.getKomentar()));
   102 				break;
   103 		}
   104 		/** Přidáme kořenový element */
   105 		k.setKomentar(Komentare.obal(k.getKomentar()));
   106 
   107 		/** Zkontrolujeme XML */
   108 		Komentare.zkontroluj(k.getKomentar());
   109 	}
   110 
   111 	@RolesAllowed("opravneny")
   112 	public Komentar komentuj(Komentar k, boolean uloz) throws KomentarovaVyjimka, TexyVyjimka {
   113 		kontrolaKomentare(k);
   114 		if (uloz) {
   115 			podnikDAO.zaloz(k);
   116 		}
   117 		return k;
   118 	}
   119 }