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