java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java
author František Kučera <franta-hg@frantovo.cz>
Tue Apr 27 17:13:23 2010 +0200 (2010-04-27)
changeset 108 f74a9fc683da
parent 107 e8371105fcc8
child 110 c2590a59a02a
permissions -rw-r--r--
Hlasování: zobrazujeme grafy na základě hlasování uloženého v databázi.
franta-hg@39
     1
package cz.frantovo.nekurak.dao;
franta-hg@39
     2
franta-hg@39
     3
import cz.frantovo.nekurak.dto.Podnik;
franta-hg@107
     4
import cz.frantovo.nekurak.dto.VysledekHlasovani;
franta-hg@108
     5
import cz.frantovo.superDAO.SuperDAO;
franta-hg@108
     6
import java.math.BigInteger;
franta-hg@39
     7
import java.util.Collection;
franta-hg@49
     8
import java.util.Date;
franta-hg@108
     9
import java.util.List;
franta-hg@39
    10
import javax.ejb.LocalBean;
franta-hg@39
    11
import javax.ejb.Stateless;
franta-hg@39
    12
import javax.persistence.EntityManager;
franta-hg@39
    13
import javax.persistence.PersistenceContext;
franta-hg@39
    14
import javax.persistence.Query;
franta-hg@39
    15
franta-hg@39
    16
/**
franta-hg@39
    17
 *
franta-hg@39
    18
 * @author fiki
franta-hg@39
    19
 */
franta-hg@39
    20
@Stateless
franta-hg@39
    21
@LocalBean
franta-hg@108
    22
public class PodnikDAO extends SuperDAO {
franta-hg@39
    23
franta-hg@67
    24
    @PersistenceContext(unitName = DAO.PU)
franta-hg@39
    25
    private EntityManager em;
franta-hg@39
    26
franta-hg@108
    27
    private enum SQL {
franta-hg@108
    28
franta-hg@108
    29
	HLASOVANI_INSERT,
franta-hg@108
    30
	HLASOVANI_SELECT
franta-hg@108
    31
    }
franta-hg@108
    32
franta-hg@39
    33
    public Collection<Podnik> getPodniky() {
franta-hg@67
    34
	Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " o ORDER BY datum DESC");
franta-hg@39
    35
	return dotaz.getResultList();
franta-hg@39
    36
    }
franta-hg@39
    37
franta-hg@100
    38
    /**
franta-hg@100
    39
     * @return podniky, které nemají souřadnice (null, null)
franta-hg@100
    40
     */
franta-hg@100
    41
    public Collection<Podnik> getPodnikyBezSouradnic() {
franta-hg@100
    42
	Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " o WHERE sirka IS NULL AND delka IS NULL");
franta-hg@100
    43
	return dotaz.getResultList();
franta-hg@100
    44
    }
franta-hg@100
    45
franta-hg@100
    46
    public Podnik getPodnik(int id) {
franta-hg@100
    47
	return em.find(Podnik.class, id);
franta-hg@100
    48
    }
franta-hg@100
    49
franta-hg@56
    50
    public void zaloz(Podnik p) {
franta-hg@49
    51
	if (p.getDatum() == null) {
franta-hg@49
    52
	    p.setDatum(new Date());
franta-hg@49
    53
	}
franta-hg@49
    54
franta-hg@40
    55
	em.persist(p);
franta-hg@40
    56
    }
franta-hg@40
    57
franta-hg@56
    58
    public void uloz(Podnik p) {
franta-hg@56
    59
	if (p.getDatum() == null) {
franta-hg@56
    60
	    p.setDatum(new Date());
franta-hg@56
    61
	}
franta-hg@56
    62
franta-hg@56
    63
	em.merge(p);
franta-hg@56
    64
    }
franta-hg@107
    65
franta-hg@107
    66
    public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
franta-hg@108
    67
	Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT));
franta-hg@107
    68
	insert.setParameter("podnik", podnik);
franta-hg@107
    69
	insert.setParameter("hlas", hlas);
franta-hg@107
    70
	insert.setParameter("ip_adresa", ipAdresa);
franta-hg@107
    71
	insert.executeUpdate();
franta-hg@107
    72
    }
franta-hg@107
    73
franta-hg@107
    74
    public VysledekHlasovani getVysledekHlasovani(int podnik) {
franta-hg@108
    75
	VysledekHlasovani vysledek = new VysledekHlasovani();
franta-hg@108
    76
	Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT));
franta-hg@108
    77
	select.setParameter("podnik", podnik);
franta-hg@108
    78
	List<Object[]> vysledekDotazu = select.getResultList();
franta-hg@108
    79
franta-hg@108
    80
	log.severe("Vracím výsledky pro podnik: " + podnik);
franta-hg@108
    81
franta-hg@108
    82
	for (Object[] radek : vysledekDotazu) {
franta-hg@108
    83
	    /** Transponujeme výsledek dotazu */
franta-hg@108
    84
	    if ((Boolean) radek[0]) {
franta-hg@108
    85
		vysledek.setHlasuAno((Integer) radek[1]);
franta-hg@108
    86
	    } else {
franta-hg@108
    87
		vysledek.setHlasuNe((Integer) radek[1]);
franta-hg@108
    88
	    }
franta-hg@108
    89
	}
franta-hg@108
    90
franta-hg@108
    91
	return vysledek;
franta-hg@107
    92
    }
franta-hg@39
    93
}