franta-hg@28: package cz.frantovo.nekurak.ejb; franta-hg@28: franta-hg@39: import cz.frantovo.nekurak.dao.PodnikDAO; franta-hg@130: import cz.frantovo.nekurak.dto.Komentar; franta-hg@28: import cz.frantovo.nekurak.dto.Podnik; franta-hg@107: import cz.frantovo.nekurak.dto.VysledekHlasovani; franta-hg@119: import cz.frantovo.nekurak.ext.Geo; franta-hg@119: import cz.frantovo.nekurak.ext.Geo.Souradnice; franta-hg@130: import cz.frantovo.nekurak.ext.Texy; franta-hg@130: import cz.frantovo.nekurak.util.Komentare; franta-hg@132: import cz.frantovo.nekurak.vyjimky.KomentarovaVyjimka; franta-hg@132: import cz.frantovo.nekurak.vyjimky.TexyVyjimka; franta-hg@28: import java.util.Collection; franta-hg@107: import java.util.logging.Logger; franta-hg@63: import javax.annotation.Resource; franta-hg@40: import javax.annotation.security.RolesAllowed; franta-hg@39: import javax.ejb.EJB; franta-hg@63: import javax.ejb.SessionContext; franta-hg@28: import javax.ejb.Stateless; franta-hg@28: franta-hg@28: /** franta-hg@28: * franta-hg@28: * @author fiki franta-hg@28: */ franta-hg@28: @Stateless franta-hg@39: public class PodnikEJB implements PodnikRemote { franta-hg@28: franta-hg@145: private static final Logger log = Logger.getLogger(PodnikEJB.class.getSimpleName()); franta-hg@145: @EJB franta-hg@145: private PodnikDAO podnikDAO; franta-hg@145: @Resource franta-hg@145: private SessionContext ctx; franta-hg@28: franta-hg@145: public Collection getPodniky() { franta-hg@145: Collection vysledek = podnikDAO.getPodniky(); franta-hg@145: return vysledek; franta-hg@100: } franta-hg@100: franta-hg@145: public Podnik getPodnik(int id) { franta-hg@145: return podnikDAO.getPodnik(id); franta-hg@142: } franta-hg@142: franta-hg@145: @RolesAllowed("opravneny") franta-hg@145: public void zalozPodnik(Podnik p) { franta-hg@145: p.setSpravce(ctx.getCallerPrincipal().getName()); franta-hg@145: podnikDAO.zaloz(p); franta-hg@130: } franta-hg@130: franta-hg@145: @RolesAllowed("opravneny") franta-hg@145: public void upravPodnik(Podnik p) { franta-hg@145: podnikDAO.uloz(p); franta-hg@145: } franta-hg@130: franta-hg@145: public int dopocitejSouradnice() { franta-hg@145: /** franta-hg@145: * TODO: refaktorovat, změnit datové typy, souřadnice… franta-hg@145: */ franta-hg@145: Geo g = new Geo(); franta-hg@145: int pocetAktualizovanych = 0; franta-hg@145: franta-hg@145: for (Podnik p : podnikDAO.getPodnikyBezSouradnic()) { franta-hg@145: Souradnice s = g.getSouradnice(p.getUlice() + " " + p.getCisloPopisne() + ", " + p.getMesto()); franta-hg@145: if (s != null) { franta-hg@145: pocetAktualizovanych++; franta-hg@145: p.setSirka(s.getSirka()); franta-hg@145: p.setDelka(s.getDelka()); franta-hg@145: podnikDAO.uloz(p); franta-hg@145: } franta-hg@145: } franta-hg@145: franta-hg@145: return pocetAktualizovanych; franta-hg@142: } franta-hg@145: franta-hg@145: public void hlasuj(int podnik, boolean hlas, String ipAdresa) { franta-hg@145: franta-hg@145: podnikDAO.hlasuj(podnik, hlas, ipAdresa); franta-hg@145: } franta-hg@145: franta-hg@145: public VysledekHlasovani getVysledekHlasovani(int podnik) { franta-hg@145: return podnikDAO.getVysledekHlasovani(podnik); franta-hg@145: } franta-hg@145: franta-hg@145: private void kontrolaKomentare(Komentar k) throws TexyVyjimka, KomentarovaVyjimka { franta-hg@145: k.setUzivatel(ctx.getCallerPrincipal().getName()); franta-hg@145: k.setDatum(null); franta-hg@145: franta-hg@145: if (k.getKomentar() == null || k.getKomentar().length() < 1) { franta-hg@145: throw new KomentarovaVyjimka("Nechceme prázdné komentáře.", null); franta-hg@145: } franta-hg@145: franta-hg@145: /** Převedeme na XML */ franta-hg@145: switch (k.getTyp()) { franta-hg@145: case PROSTY_TEXT: franta-hg@145: k.setKomentar(Komentare.upravProstyText(k.getKomentar())); franta-hg@145: break; franta-hg@145: case TEXY: franta-hg@145: Texy t = new Texy(); franta-hg@145: k.setKomentar(t.preved(k.getKomentar())); franta-hg@145: break; franta-hg@145: case XHTML: franta-hg@145: k.setKomentar(Komentare.upravXHTML(k.getKomentar())); franta-hg@145: break; franta-hg@145: } franta-hg@145: /** Přidáme kořenový element */ franta-hg@145: k.setKomentar(Komentare.obal(k.getKomentar())); franta-hg@145: franta-hg@145: /** Zkontrolujeme XML */ franta-hg@145: Komentare.zkontroluj(k.getKomentar()); franta-hg@145: } franta-hg@145: franta-hg@145: @RolesAllowed("opravneny") franta-hg@145: public Komentar komentuj(Komentar k, boolean uloz) throws KomentarovaVyjimka, TexyVyjimka { franta-hg@145: kontrolaKomentare(k); franta-hg@145: if (uloz) { franta-hg@145: podnikDAO.zaloz(k); franta-hg@145: } franta-hg@145: return k; franta-hg@145: } franta-hg@28: }