BillLineFacade.java 1.27 KB
package fi.insomnia.bortal.facade;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery;

import fi.insomnia.bortal.bortal.views.BillSummary;
import fi.insomnia.bortal.model.BillLine;

@Stateless
@LocalBean
public class BillLineFacade extends EventChildGenericFacade<BillLine> {

    @PersistenceContext
    private EntityManager em;

    @EJB
    private BillFacade billfacade;

    public BillLineFacade() {
        super(BillLine.class);
    }

    public void create(BillLine entity) {
        super.create(entity);
        billfacade.evict(entity.getBill());
    }

    public List<BillSummary> getLineSummary() {
         TypedQuery<Object[]> q = em.createQuery("SELECT l.name as name, sum(l.quantity) as total from BillLine l GROUP BY l.name", Object[].class);

        List<Object[]> objlist = q.getResultList();
        List<BillSummary> ret = new ArrayList<BillSummary>();
        for(Object[] obj:objlist)
        {
            ret.add(new BillSummary(obj));
        }
        return ret;
    }

    protected EntityManager getEm() {
        return em;
    }

}