java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/dao/PodnikDAO.java
author František Kučera <franta-hg@frantovo.cz>
Tue Apr 27 19:04:20 2010 +0200 (2010-04-27)
changeset 110 c2590a59a02a
parent 108 f74a9fc683da
child 119 d91f600c4645
permissions -rw-r--r--
Hlasování: funguje zobrazování výsledků i posílání hlasů.
     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.math.BigInteger;
     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 hlasuj(int podnik, boolean hlas, String ipAdresa) {
    67 	Query insert = em.createNativeQuery(getSQL(SQL.HLASOVANI_INSERT));
    68 	insert.setParameter("podnik", podnik);
    69 	insert.setParameter("hlas", hlas);
    70 	insert.setParameter("ip_adresa", ipAdresa);
    71 	insert.executeUpdate();
    72     }
    73 
    74     public VysledekHlasovani getVysledekHlasovani(int podnik) {
    75 	VysledekHlasovani vysledek = new VysledekHlasovani();
    76 	Query select = em.createNativeQuery(getSQL(SQL.HLASOVANI_SELECT));
    77 	select.setParameter("podnik", podnik);
    78 	List<Object[]> vysledekDotazu = select.getResultList();
    79 
    80 	for (Object[] radek : vysledekDotazu) {
    81 	    /** Transponujeme výsledek dotazu */
    82 	    if ((Boolean) radek[0]) {
    83 		vysledek.setHlasuAno((Integer) radek[1]);
    84 	    } else {
    85 		vysledek.setHlasuNe((Integer) radek[1]);
    86 	    }
    87 	}
    88 
    89 	return vysledek;
    90     }
    91 }