controller.KoszykController.java Source code

Java tutorial

Introduction

Here is the source code for controller.KoszykController.java

Source

/*
 * 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";
    }

}