java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java
author František Kučera <franta-hg@frantovo.cz>
Tue Jun 08 14:42:00 2010 +0200 (2010-06-08)
changeset 134 4bd1e353c527
parent 119 d91f600c4645
child 145 0efefbf5f8b6
permissions -rw-r--r--
Kontrola komentářů i na výstupu.
franta-hg@39
     1
package cz.frantovo.nekurak.dao;
franta-hg@39
     2
franta-hg@134
     3
import cz.frantovo.nekurak.dto.Komentar;
franta-hg@39
     4
import cz.frantovo.nekurak.dto.Podnik;
franta-hg@107
     5
import cz.frantovo.nekurak.dto.VysledekHlasovani;
franta-hg@108
     6
import cz.frantovo.superDAO.SuperDAO;
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@134
    66
    public void zaloz(Komentar k) {
franta-hg@134
    67
	if (k.getDatum() == null) {
franta-hg@134
    68
	    k.setDatum(new Date());
franta-hg@134
    69
	}
franta-hg@134
    70
	
franta-hg@134
    71
	em.persist(k);
franta-hg@134
    72
    }
franta-hg@134
    73
franta-hg@119
    74
    /**
franta-hg@119
    75
     * Zaznamená hlas uživatele, zda se v podniku má nebo nemá kouřit
franta-hg@119
    76
     * @param podnik podnik o kterém se hlasuje
franta-hg@119
    77
     * @param hlas true = kouřit | false = nekouřit
franta-hg@119
    78
     * @param ipAdresa identifikujeme pomocí ní uživatele
franta-hg@119
    79
     */
franta-hg@107
    80
    public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
franta-hg@108
    81
	Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT));
franta-hg@107
    82
	insert.setParameter("podnik", podnik);
franta-hg@107
    83
	insert.setParameter("hlas", hlas);
franta-hg@107
    84
	insert.setParameter("ip_adresa", ipAdresa);
franta-hg@107
    85
	insert.executeUpdate();
franta-hg@107
    86
    }
franta-hg@107
    87
franta-hg@107
    88
    public VysledekHlasovani getVysledekHlasovani(int podnik) {
franta-hg@108
    89
	VysledekHlasovani vysledek = new VysledekHlasovani();
franta-hg@108
    90
	Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT));
franta-hg@108
    91
	select.setParameter("podnik", podnik);
franta-hg@108
    92
	List<Object[]> vysledekDotazu = select.getResultList();
franta-hg@108
    93
franta-hg@108
    94
	for (Object[] radek : vysledekDotazu) {
franta-hg@108
    95
	    /** Transponujeme výsledek dotazu */
franta-hg@108
    96
	    if ((Boolean) radek[0]) {
franta-hg@108
    97
		vysledek.setHlasuAno((Integer) radek[1]);
franta-hg@108
    98
	    } else {
franta-hg@108
    99
		vysledek.setHlasuNe((Integer) radek[1]);
franta-hg@108
   100
	    }
franta-hg@108
   101
	}
franta-hg@108
   102
franta-hg@108
   103
	return vysledek;
franta-hg@107
   104
    }
franta-hg@39
   105
}