Podpora Markdown syntaxe pro komentáře.
1 package cz.frantovo.nekurak.ejb;
3 import cz.frantovo.nekurak.dao.PodnikDAO;
4 import cz.frantovo.nekurak.dto.Kategorie;
5 import cz.frantovo.nekurak.dto.Komentar;
6 import cz.frantovo.nekurak.dto.Kurackost;
7 import cz.frantovo.nekurak.dto.Podnik;
8 import cz.frantovo.nekurak.dto.VysledekHlasovani;
9 import cz.frantovo.nekurak.ext.Geo;
10 import cz.frantovo.nekurak.ext.Geo.Souradnice;
11 import cz.frantovo.nekurak.ext.WikiSyntaxProcesor;
12 import cz.frantovo.nekurak.util.Komentare;
13 import cz.frantovo.nekurak.vyjimky.KomentarovaVyjimka;
14 import cz.frantovo.nekurak.vyjimky.WikiSyntaxVyjimka;
15 import java.util.Collection;
16 import java.util.logging.Logger;
17 import javax.annotation.Resource;
18 import javax.annotation.security.RolesAllowed;
20 import javax.ejb.SessionContext;
21 import javax.ejb.Stateless;
28 public class PodnikEJB implements PodnikRemote {
30 private static final Logger log = Logger.getLogger(PodnikEJB.class.getSimpleName());
32 private PodnikDAO podnikDAO;
34 private SessionContext ctx;
36 private WikiSyntaxProcesor wikiSyntaxProcesor = new WikiSyntaxProcesor();
39 public Collection<Podnik> getPodniky() {
40 Collection<Podnik> vysledek = podnikDAO.getPodniky();
45 public Collection<Podnik> getPodniky(Kategorie kategorie) {
46 Collection<Podnik> vysledek = podnikDAO.getPodniky(kategorie);
51 public Collection<Podnik> getPodniky(Kurackost kurackost) {
52 Collection<Podnik> vysledek = podnikDAO.getPodniky(kurackost);
57 public Podnik getPodnik(int id) {
58 return podnikDAO.getPodnik(id);
62 @RolesAllowed("opravneny")
63 public void zalozPodnik(Podnik p) {
65 * Podnik zakládáme jako neschválený a je potřeba ho dodatečně schválit,
66 * to může udělat jen správce a ne uživatel (TODO)
68 p.setSchvaleny(false);
69 p.setSpravce(ctx.getCallerPrincipal().getName());
71 /** TODO: asynchronní počítání */
72 dopocitejSouradnice(p, new Geo());
76 @RolesAllowed("opravneny")
77 public void upravPodnik(Podnik p) {
82 public int dopocitejSouradnice() {
84 * TODO: refaktorovat, změnit datové typy, souřadnice…
87 int pocetAktualizovanych = 0;
89 for (Podnik p : podnikDAO.getPodnikyBezSouradnic()) {
90 if (dopocitejSouradnice(p, g)) {
91 pocetAktualizovanych++;
95 return pocetAktualizovanych;
99 * Na základě adresy (ulice, číslo, město) se pokusí zjistit souřadnice a uloží je k podniku.
101 * @param g poskytovatel geografických služeb
102 * @return zda se souřadnice podařilo dopočítat
104 private boolean dopocitejSouradnice(Podnik p, Geo g) {
105 Souradnice s = g.getSouradnice(p.getUlice() + " " + p.getCisloPopisne() + ", " + p.getMesto());
107 p.setSirka(s.getSirka());
108 p.setDelka(s.getDelka());
117 public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
119 podnikDAO.hlasuj(podnik, hlas, ipAdresa);
123 public VysledekHlasovani getVysledekHlasovani(Podnik podnik) {
124 return podnikDAO.getVysledekHlasovani(podnik);
127 private void kontrolaKomentare(Komentar k) throws WikiSyntaxVyjimka, KomentarovaVyjimka {
128 k.setUzivatel(ctx.getCallerPrincipal().getName());
131 if (k.getKomentar() == null || k.getKomentar().length() < 1) {
132 throw new KomentarovaVyjimka("Nechceme prázdné komentáře.", null);
135 /** Převedeme na XML */
136 switch (k.getTyp()) {
138 k.setKomentar(Komentare.upravProstyText(k.getKomentar()));
141 k.setKomentar(wikiSyntaxProcesor.převeď(k.getKomentar(), Komentar.TYP.MARKDOWN));
144 k.setKomentar(wikiSyntaxProcesor.převeď(k.getKomentar(), Komentar.TYP.TEXY));
147 k.setKomentar(Komentare.upravXHTML(k.getKomentar()));
150 /** Přidáme kořenový element */
151 k.setKomentar(Komentare.obal(k.getKomentar()));
153 /** Zkontrolujeme XML */
154 Komentare.zkontroluj(k.getKomentar());
158 @RolesAllowed("opravneny")
159 public Komentar komentuj(Komentar k, boolean uloz) throws KomentarovaVyjimka, WikiSyntaxVyjimka {
160 kontrolaKomentare(k);