Package no.ugland.utransprod.dao.hibernate

Source Code of no.ugland.utransprod.dao.hibernate.NokkelTransportVDAOHibernate

package no.ugland.utransprod.dao.hibernate;

import java.math.BigDecimal;
import java.util.List;

import no.ugland.utransprod.dao.NokkelTransportVDAO;
import no.ugland.utransprod.model.NokkelTransportV;
import no.ugland.utransprod.model.NokkelTransportVPK;
import no.ugland.utransprod.util.YearWeek;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;

/**
* Implementasjon av DAO mot view NOKKEL_TRANSPORT_V
*
* @author atle.brekka
*
*/
public class NokkelTransportVDAOHibernate extends
    BaseDAOHibernate<NokkelTransportV> implements NokkelTransportVDAO {
  /**
   * Konstrukt�r
   */
  public NokkelTransportVDAOHibernate() {
    super(NokkelTransportV.class);
  }

  /**
   * @see no.ugland.utransprod.dao.NokkelTransportVDAO#findBetweenYearWeek(no.ugland.utransprod.util.YearWeek,
   *      no.ugland.utransprod.util.YearWeek, java.lang.String)
   */
  @SuppressWarnings("unchecked")
  public List<NokkelTransportV> findBetweenYearWeek(
      final YearWeek fromYearWeek, final YearWeek toYearWeek,
      final String productArea) {
    return (List<NokkelTransportV>) getHibernateTemplate().execute(
        new HibernateCallback() {

          public Object doInHibernate(Session session)
              throws HibernateException {
            String query = "select nokkelTransportV "
                + "      from NokkelTransportV nokkelTransportV "
                + "      where cast(nokkelTransportV.nokkelTransportVPK.orderSentYear as string)||cast(nokkelTransportV.nokkelTransportVPK.orderSentWeek+10 as string) "
                + "          between  :fromString and :toString and "
                + "          nokkelTransportV.nokkelTransportVPK.productArea=:productArea";

            return session.createQuery(query).setParameter(
                "fromString",
                fromYearWeek.getFormattetYearWeekAdd10())
                .setParameter("toString",
                    toYearWeek.getFormattetYearWeekAdd10())
                .setParameter("productArea", productArea)
                .list();
          }

        });
  }

  /**
   * @see no.ugland.utransprod.dao.NokkelTransportVDAO#aggreagateYearWeek(no.ugland.utransprod.util.YearWeek,
   *      java.lang.String)
   */
  public NokkelTransportV aggreagateYearWeek(final YearWeek currentYearWeek,
      final String productArea) {
    return (NokkelTransportV) getHibernateTemplate().execute(
        new HibernateCallback() {

          @SuppressWarnings("unchecked")
          public Object doInHibernate(Session session)
              throws HibernateException {
            String query = "select sum(nokkelTransportV.assemblied),"
                + "        sum(nokkelTransportV.notAssemblied),"
                + "        sum(nokkelTransportV.garageCost),"
                + "        sum(nokkelTransportV.transportCost),"
                + "        sum(nokkelTransportV.assemblyCost),"
                + "        sum(nokkelTransportV.deviationCount),"
                + "        sum(nokkelTransportV.internalCost) "
                + "      from NokkelTransportV nokkelTransportV "
                + "      where nokkelTransportV.nokkelTransportVPK.orderSentYear=:year and "
                + "      nokkelTransportV.nokkelTransportVPK.orderSentWeek <= :week and "
                + "          nokkelTransportV.nokkelTransportVPK.productArea=:productArea";

            List<Object[]> list = session
                .createQuery(query)
                .setParameter("year", currentYearWeek.getYear())
                .setParameter("week", currentYearWeek.getWeek())
                .setParameter("productArea", productArea)
                .list();

            if (list != null && list.size() == 1) {
              Object[] obj = list.get(0);
              return new NokkelTransportV(new NokkelTransportVPK(
                  currentYearWeek.getYear(), currentYearWeek
                      .getWeek(), productArea),
                  (Integer) obj[0], (Integer) obj[1],
                  (BigDecimal) obj[2], (BigDecimal) obj[3],
                  (BigDecimal) obj[4], (Integer) obj[5],
                  (BigDecimal) obj[6]);
            }
            return null;
          }

        });
  }

}
TOP

Related Classes of no.ugland.utransprod.dao.hibernate.NokkelTransportVDAOHibernate

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.