Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package controller; import hib.session.SklepHibernateUtil; import hib_beans.Produkt; import java.util.ArrayList; import java.util.List; import javax.faces.context.FacesContext; import org.hibernate.HibernateException; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; /** * * @author HP */ public class KoszykController { ArrayList<Produkt> koszyk = new ArrayList(); ArrayList<Produkt> produkty = new ArrayList(); private Produkt p = new Produkt(); Integer sort = 0; Double suma = 0.0; public Double getSuma() { return suma; } /** * Creates a new instance of KoszykController */ public KoszykController() { } public ArrayList<Produkt> getKoszyk() { return koszyk; } public String sortSet(Integer val) { val %= 4; this.sort = val; return "/faces/klient/welcome.xhtml"; } public List<Produkt> getProdukty() { SessionFactory sf = SklepHibernateUtil.getSessionFactory(); Session session = sf.openSession(); if (sort == 0) { String hql = "from Produkt p ORDER BY idProduktu ASC"; produkty = (ArrayList<Produkt>) session.createQuery(hql).list(); } if (sort == 1) { String hql = "from Produkt p ORDER BY p.nazwa ASC"; produkty = (ArrayList<Produkt>) session.createQuery(hql).list(); } if (sort == 2) { String hql = "from Produkt p ORDER BY p.cena ASC"; produkty = (ArrayList<Produkt>) session.createQuery(hql).list(); } if (sort == 3) { String hql = "from Produkt p ORDER BY p.liczbaSztuk ASC"; produkty = (ArrayList<Produkt>) session.createQuery(hql).list(); } session.close(); return produkty; } public String koszykAdd(Produkt prod) { if (prod.getLiczbaSztuk() == 0) { return "/faces/klient/welcome.xhtml"; } koszyk.add(prod); suma += prod.getCena(); return "/faces/klient/welcome.xhtml"; } public String koszykRemove(Produkt prod) { koszyk.remove(prod); return "/faces/klient/koszyk.xhtml"; } private Integer searchLS(Integer id) { for (int i = 0; i < this.produkty.size(); i++) { if (this.produkty.get(i).getIdProduktu() == id) return this.produkty.get(i).getLiczbaSztuk(); } return 0; } public String sprzedajKoszyk(ArrayList<Produkt> koszyk) { SessionFactory sf = SklepHibernateUtil.getSessionFactory(); Session session = sf.openSession(); Transaction tx = null; String userid = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal().getName(); try { for (int i = 0; i < koszyk.size(); i++) { if (koszyk.get(i).getLiczbaSztuk() > this.searchLS(koszyk.get(i).getIdProduktu())) { throw new HibernateException("Brak tylu produktow."); } tx = session.beginTransaction(); SQLQuery insertQuery = session.createSQLQuery( "INSERT INTO Sprzedaz(id_produktu,userid,liczba_sztuk_sprzedanych,kwota)VALUES(?,?,?,?)"); insertQuery.setParameter(0, koszyk.get(i).getIdProduktu()); insertQuery.setParameter(1, userid); insertQuery.setParameter(2, koszyk.get(i).getLiczbaSztuk()); insertQuery.setParameter(3, koszyk.get(i).getCena() * koszyk.get(i).getLiczbaSztuk()); insertQuery.executeUpdate(); tx.commit(); tx = session.beginTransaction(); Integer minus_sztuki = koszyk.get(i).getLiczbaSztuk(); SQLQuery removeQuery = session .createSQLQuery("Update Produkt set liczba_sztuk = liczba_sztuk - ? where id_produktu = ?"); removeQuery.setParameter(0, minus_sztuki); removeQuery.setParameter(1, koszyk.get(i).getIdProduktu()); removeQuery.executeUpdate(); tx.commit(); } } catch (HibernateException e) { if (tx != null) { tx.rollback(); } e.printStackTrace(); } finally { session.close(); } this.suma = 0.0; this.koszyk = new ArrayList(); return "/faces/klient/welcome.xhtml"; } }