java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.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 134 4bd1e353c527
child 164 e146e2e3b80b
permissions -rw-r--r--
Formátování kódu, důsledné používání tabulátorů, drobné úpravy, StringBuilder
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@145
    24
	@PersistenceContext(unitName = DAO.PU)
franta-hg@145
    25
	private EntityManager em;
franta-hg@39
    26
franta-hg@145
    27
	private enum SQL {
franta-hg@108
    28
franta-hg@145
    29
		HLASOVANI_INSERT,
franta-hg@145
    30
		HLASOVANI_SELECT
franta-hg@49
    31
	}
franta-hg@49
    32
franta-hg@145
    33
	public Collection<Podnik> getPodniky() {
franta-hg@145
    34
		Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " o ORDER BY datum DESC");
franta-hg@145
    35
		return dotaz.getResultList();
franta-hg@56
    36
	}
franta-hg@56
    37
franta-hg@145
    38
	/**
franta-hg@145
    39
	 * @return podniky, které nemají souřadnice (null, null)
franta-hg@145
    40
	 */
franta-hg@145
    41
	public Collection<Podnik> getPodnikyBezSouradnic() {
franta-hg@145
    42
		Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " o WHERE sirka IS NULL AND delka IS NULL");
franta-hg@145
    43
		return dotaz.getResultList();
franta-hg@108
    44
	}
franta-hg@108
    45
franta-hg@145
    46
	public Podnik getPodnik(int id) {
franta-hg@145
    47
		return em.find(Podnik.class, id);
franta-hg@145
    48
	}
franta-hg@145
    49
franta-hg@145
    50
	public void zaloz(Podnik p) {
franta-hg@145
    51
		if (p.getDatum() == null) {
franta-hg@145
    52
			p.setDatum(new Date());
franta-hg@145
    53
		}
franta-hg@145
    54
franta-hg@145
    55
		em.persist(p);
franta-hg@145
    56
	}
franta-hg@145
    57
franta-hg@145
    58
	public void uloz(Podnik p) {
franta-hg@145
    59
		if (p.getDatum() == null) {
franta-hg@145
    60
			p.setDatum(new Date());
franta-hg@145
    61
		}
franta-hg@145
    62
franta-hg@145
    63
		em.merge(p);
franta-hg@145
    64
	}
franta-hg@145
    65
franta-hg@145
    66
	public void zaloz(Komentar k) {
franta-hg@145
    67
		if (k.getDatum() == null) {
franta-hg@145
    68
			k.setDatum(new Date());
franta-hg@145
    69
		}
franta-hg@145
    70
franta-hg@145
    71
		em.persist(k);
franta-hg@145
    72
	}
franta-hg@145
    73
franta-hg@145
    74
	/**
franta-hg@145
    75
	 * Zaznamená hlas uživatele, zda se v podniku má nebo nemá kouřit
franta-hg@145
    76
	 * @param podnik podnik o kterém se hlasuje
franta-hg@145
    77
	 * @param hlas true = kouřit | false = nekouřit
franta-hg@145
    78
	 * @param ipAdresa identifikujeme pomocí ní uživatele
franta-hg@145
    79
	 */
franta-hg@145
    80
	public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
franta-hg@145
    81
		Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT));
franta-hg@145
    82
		insert.setParameter("podnik", podnik);
franta-hg@145
    83
		insert.setParameter("hlas", hlas);
franta-hg@145
    84
		insert.setParameter("ip_adresa", ipAdresa);
franta-hg@145
    85
		insert.executeUpdate();
franta-hg@145
    86
	}
franta-hg@145
    87
franta-hg@145
    88
	public VysledekHlasovani getVysledekHlasovani(int podnik) {
franta-hg@145
    89
		VysledekHlasovani vysledek = new VysledekHlasovani();
franta-hg@145
    90
		Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT));
franta-hg@145
    91
		select.setParameter("podnik", podnik);
franta-hg@145
    92
		List<Object[]> vysledekDotazu = select.getResultList();
franta-hg@145
    93
franta-hg@145
    94
		for (Object[] radek : vysledekDotazu) {
franta-hg@145
    95
			/** Transponujeme výsledek dotazu */
franta-hg@145
    96
			if ((Boolean) radek[0]) {
franta-hg@145
    97
				vysledek.setHlasuAno((Integer) radek[1]);
franta-hg@145
    98
			} else {
franta-hg@145
    99
				vysledek.setHlasuNe((Integer) radek[1]);
franta-hg@145
   100
			}
franta-hg@145
   101
		}
franta-hg@145
   102
franta-hg@145
   103
		return vysledek;
franta-hg@145
   104
	}
franta-hg@39
   105
}