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