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