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