java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java
author František Kučera <franta-hg@frantovo.cz>
Sat Jan 15 00:57:45 2011 +0100 (2011-01-15)
changeset 170 56deca862adc
parent 164 e146e2e3b80b
child 171 e619057bad66
permissions -rw-r--r--
Filtrování podniků podle kategorie.
franta-hg@39
     1
package cz.frantovo.nekurak.dao;
franta-hg@39
     2
franta-hg@170
     3
import cz.frantovo.nekurak.dto.Kategorie;
franta-hg@134
     4
import cz.frantovo.nekurak.dto.Komentar;
franta-hg@39
     5
import cz.frantovo.nekurak.dto.Podnik;
franta-hg@107
     6
import cz.frantovo.nekurak.dto.VysledekHlasovani;
franta-hg@108
     7
import cz.frantovo.superDAO.SuperDAO;
franta-hg@39
     8
import java.util.Collection;
franta-hg@49
     9
import java.util.Date;
franta-hg@108
    10
import java.util.List;
franta-hg@170
    11
import java.util.Set;
franta-hg@39
    12
import javax.ejb.LocalBean;
franta-hg@39
    13
import javax.ejb.Stateless;
franta-hg@39
    14
import javax.persistence.EntityManager;
franta-hg@39
    15
import javax.persistence.PersistenceContext;
franta-hg@39
    16
import javax.persistence.Query;
franta-hg@39
    17
franta-hg@39
    18
/**
franta-hg@39
    19
 *
franta-hg@39
    20
 * @author fiki
franta-hg@39
    21
 */
franta-hg@39
    22
@Stateless
franta-hg@39
    23
@LocalBean
franta-hg@108
    24
public class PodnikDAO extends SuperDAO {
franta-hg@39
    25
franta-hg@145
    26
	@PersistenceContext(unitName = DAO.PU)
franta-hg@145
    27
	private EntityManager em;
franta-hg@39
    28
franta-hg@145
    29
	private enum SQL {
franta-hg@108
    30
franta-hg@145
    31
		HLASOVANI_INSERT,
franta-hg@145
    32
		HLASOVANI_SELECT
franta-hg@49
    33
	}
franta-hg@49
    34
franta-hg@145
    35
	public Collection<Podnik> getPodniky() {
franta-hg@170
    36
		Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " p ORDER BY datum DESC");
franta-hg@145
    37
		return dotaz.getResultList();
franta-hg@56
    38
	}
franta-hg@56
    39
franta-hg@145
    40
	/**
franta-hg@145
    41
	 * @return podniky, které nemají souřadnice (null, null)
franta-hg@145
    42
	 */
franta-hg@145
    43
	public Collection<Podnik> getPodnikyBezSouradnic() {
franta-hg@170
    44
		Query dotaz = em.createQuery("FROM " + DAO.t(Podnik.class) + " p WHERE sirka IS NULL AND delka IS NULL");
franta-hg@145
    45
		return dotaz.getResultList();
franta-hg@108
    46
	}
franta-hg@108
    47
franta-hg@170
    48
	/**
franta-hg@170
    49
	 * @param kategorie jedna kategorie
franta-hg@170
    50
	 * @return podniky určité kategorie
franta-hg@170
    51
	 */
franta-hg@170
    52
	public Collection<Podnik> getPodniky(Kategorie kategorie) {
franta-hg@170
    53
		Query dotaz = em.createQuery("SELECT p FROM " + DAO.t(Podnik.class) + " p INNER JOIN p.kategorie k WHERE k = :kategorie ORDER BY datum DESC");
franta-hg@170
    54
		dotaz.setParameter("kategorie", kategorie);
franta-hg@170
    55
		return dotaz.getResultList();
franta-hg@170
    56
	}
franta-hg@170
    57
franta-hg@170
    58
franta-hg@145
    59
	public Podnik getPodnik(int id) {
franta-hg@145
    60
		return em.find(Podnik.class, id);
franta-hg@145
    61
	}
franta-hg@145
    62
franta-hg@145
    63
	public void zaloz(Podnik p) {
franta-hg@145
    64
		if (p.getDatum() == null) {
franta-hg@145
    65
			p.setDatum(new Date());
franta-hg@145
    66
		}
franta-hg@145
    67
franta-hg@145
    68
		em.persist(p);
franta-hg@145
    69
	}
franta-hg@145
    70
franta-hg@145
    71
	public void uloz(Podnik p) {
franta-hg@145
    72
		if (p.getDatum() == null) {
franta-hg@145
    73
			p.setDatum(new Date());
franta-hg@145
    74
		}
franta-hg@145
    75
franta-hg@145
    76
		em.merge(p);
franta-hg@145
    77
	}
franta-hg@145
    78
franta-hg@145
    79
	public void zaloz(Komentar k) {
franta-hg@145
    80
		if (k.getDatum() == null) {
franta-hg@145
    81
			k.setDatum(new Date());
franta-hg@145
    82
		}
franta-hg@145
    83
franta-hg@145
    84
		em.persist(k);
franta-hg@145
    85
	}
franta-hg@145
    86
franta-hg@145
    87
	/**
franta-hg@145
    88
	 * Zaznamená hlas uživatele, zda se v podniku má nebo nemá kouřit
franta-hg@145
    89
	 * @param podnik podnik o kterém se hlasuje
franta-hg@145
    90
	 * @param hlas true = kouřit | false = nekouřit
franta-hg@145
    91
	 * @param ipAdresa identifikujeme pomocí ní uživatele
franta-hg@145
    92
	 */
franta-hg@145
    93
	public void hlasuj(int podnik, boolean hlas, String ipAdresa) {
franta-hg@145
    94
		Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT));
franta-hg@145
    95
		insert.setParameter("podnik", podnik);
franta-hg@145
    96
		insert.setParameter("hlas", hlas);
franta-hg@145
    97
		insert.setParameter("ip_adresa", ipAdresa);
franta-hg@145
    98
		insert.executeUpdate();
franta-hg@145
    99
	}
franta-hg@145
   100
franta-hg@164
   101
	public VysledekHlasovani getVysledekHlasovani(Podnik podnik) {
franta-hg@164
   102
		VysledekHlasovani vysledek = new VysledekHlasovani(podnik);
franta-hg@145
   103
		Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT));
franta-hg@164
   104
		select.setParameter("podnik", podnik.getId());
franta-hg@145
   105
		List<Object[]> vysledekDotazu = select.getResultList();
franta-hg@145
   106
franta-hg@145
   107
		for (Object[] radek : vysledekDotazu) {
franta-hg@145
   108
			/** Transponujeme výsledek dotazu */
franta-hg@145
   109
			if ((Boolean) radek[0]) {
franta-hg@145
   110
				vysledek.setHlasuAno((Integer) radek[1]);
franta-hg@145
   111
			} else {
franta-hg@145
   112
				vysledek.setHlasuNe((Integer) radek[1]);
franta-hg@145
   113
			}
franta-hg@145
   114
		}
franta-hg@145
   115
franta-hg@145
   116
		return vysledek;
franta-hg@145
   117
	}
franta-hg@39
   118
}