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