Package no.ugland.utransprod.dao.hibernate

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

package no.ugland.utransprod.dao.hibernate;

import java.util.List;

import no.ugland.utransprod.dao.DeviationSumJobFunctionVDAO;
import no.ugland.utransprod.model.DeviationSumJobFunctionV;
import no.ugland.utransprod.model.JobFunction;
import no.ugland.utransprod.model.ProductAreaGroup;

import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;

public class DeviationSumJobFunctionVDAOHibernate extends
    BaseDAOHibernate<DeviationSumJobFunctionV> implements
    DeviationSumJobFunctionVDAO {

  public DeviationSumJobFunctionVDAOHibernate() {
    super(DeviationSumJobFunctionV.class);
  }

  public List<DeviationSumJobFunctionV> findByYearAndDeviationFunctionAndProductAreaGroup(
      final Integer year, final JobFunction deviationFunction,
      final ProductAreaGroup productAreaGroup) {
    if(productAreaGroup.getProductAreaGroupName().equalsIgnoreCase("Alle")){
      return getAllProductAreaGroup(
          year, deviationFunction,
          productAreaGroup);
    }else{
      return getPerProductAreaGroup(
          year, deviationFunction,
          productAreaGroup);
    }
   
  }

  @SuppressWarnings("unchecked")
  private List<DeviationSumJobFunctionV> getAllProductAreaGroup(final Integer year,
      final JobFunction deviationFunction, final ProductAreaGroup productAreaGroup) {
    return (List<DeviationSumJobFunctionV>) getHibernateTemplate().execute(
        new HibernateCallback() {

          public Object doInHibernate(final Session session) {
            String query="select new DeviationSumJobFunctionV(''," +
                "                                         deviationSumJobFunctionVPK.registrationYear," +
                "                                         deviationSumJobFunctionVPK.registrationWeek," +
                "                                         deviationSumJobFunctionVPK.deviationFunction," +
                "                                         deviationSumJobFunctionVPK.functionCategoryName," +
                "                                         sum(countDeviations))" +
                "         from DeviationSumJobFunctionV" +
                "         where deviationSumJobFunctionVPK.registrationYear=:year and " +
                "               deviationSumJobFunctionVPK.deviationFunction=:deviationFunction " +
                "         group by deviationSumJobFunctionVPK.registrationYear," +
                "                                         deviationSumJobFunctionVPK.registrationWeek," +
                "                                         deviationSumJobFunctionVPK.deviationFunction," +
                "                                         deviationSumJobFunctionVPK.functionCategoryName";
            return session.createQuery(query).setParameter("year", year).setParameter("deviationFunction", deviationFunction.getJobFunctionName()).list();
          }
        });
  }

  @SuppressWarnings("unchecked")
  private List<DeviationSumJobFunctionV> getPerProductAreaGroup(
      final Integer year, final JobFunction deviationFunction,
      final ProductAreaGroup productAreaGroup) {
    return (List<DeviationSumJobFunctionV>) getHibernateTemplate().execute(
        new HibernateCallback() {

          public Object doInHibernate(final Session session) {
            return session
                .createCriteria(DeviationSumJobFunctionV.class)
                .add(
                    Restrictions
                        .eq(
                            "deviationSumJobFunctionVPK.registrationYear",
                            year))
                .add(
                    Restrictions
                        .eq(
                            "deviationSumJobFunctionVPK.deviationFunction",
                            deviationFunction
                                .getJobFunctionName()))
                .add(
                    Restrictions
                        .eq(
                            "deviationSumJobFunctionVPK.productAreaGroupName",
                            productAreaGroup
                                .getProductAreaGroupName()))
                .list();
          }
        });
  }

}
TOP

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

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.