Package no.ugland.utransprod.dao.hibernate

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

package no.ugland.utransprod.dao.hibernate;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Set;

import no.ugland.utransprod.dao.OrderLineDAO;
import no.ugland.utransprod.dao.PostShipmentDAO;
import no.ugland.utransprod.model.Colli;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.PostShipment;
import no.ugland.utransprod.service.enums.LazyLoadOrderLineEnum;
import no.ugland.utransprod.service.enums.LazyLoadPostShipmentEnum;
import no.ugland.utransprod.util.Periode;
import no.ugland.utransprod.util.Util;

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

/**
* Implementasjon av DAO mot tabell POST_SHIPMENT
* @author atle.brekka
*/
public class PostShipmentDAOHibernate extends BaseDAOHibernate<PostShipment>
        implements PostShipmentDAO {

    /**
     *
     */
    OrderLineDAO orderLineDAO;

    /**
     * @param orderLineDAO
     */
    public void setOrderLineDAO(OrderLineDAO orderLineDAO) {
        this.orderLineDAO = orderLineDAO;
    }

    /**
     *
     */
    public PostShipmentDAOHibernate() {
        super(PostShipment.class);
    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#findAllWithoutTransport()
     */
    @SuppressWarnings("unchecked")
    public List<PostShipment> findAllWithoutTransport() {
        return (List<PostShipment>) getHibernateTemplate().execute(
                new HibernateCallback() {

                    public Object doInHibernate(Session session)
                            throws HibernateException {
                        // Query query = session.createQuery("select new
                        // PostShipment(postShipment.postShipmentId,postShipment.order,postShipment.postShipmentReady)
                        // from PostShipment postShipment where
                        // postShipment.transport is null");
                        // return query.list();
                        return session.createCriteria(PostShipment.class).add(
                                Restrictions.isNull("transport")).list();
                    }

                });
    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#findAllNotSent()
     */
    @SuppressWarnings("unchecked")
    public List<PostShipment> findAllNotSent() {
        return (List<PostShipment>) getHibernateTemplate().execute(
                new HibernateCallback() {

                    public Object doInHibernate(Session session)
                            throws HibernateException {

                        String sql = "select new PostShipment(postShipment.postShipmentId,postShipment.postShipmentComplete,postShipment.order,postShipment.transport,postShipment.deviation,postShipment.sent,postShipment.postShipmentReady,postShipment.status) "
                                + "from PostShipment postShipment "
                                + "left outer join postShipment.transport "
                                +
                                // "left join postShipment.order " +
                                "left outer join postShipment.deviation "
                                + "where postShipment.sent is null";

                        Query query = session.createQuery(sql);

                        return query.list();
                    }

                });
    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#lazyLoad(no.ugland.utransprod.model.PostShipment,
     *      no.ugland.utransprod.service.enums.LazyLoadPostShipmentEnum[])
     */
    public void lazyLoad(final PostShipment postShipment,
            final LazyLoadPostShipmentEnum[] enums) {
        if (postShipment != null && postShipment.getPostShipmentId() != null) {
            getHibernateTemplate().execute(new HibernateCallback() {

                @SuppressWarnings("incomplete-switch")
                public Object doInHibernate(Session session)
                        throws HibernateException {
                    session
                            .load(postShipment, postShipment
                                    .getPostShipmentId());
                    Set<?> set;
                    List<LazyLoadPostShipmentEnum> enumList = Arrays
                            .asList(enums);

                    for (LazyLoadPostShipmentEnum lazyEnum : enums) {
                        switch (lazyEnum) {
                        case COLLIES:
                            Set<Colli> collies = postShipment.getCollies();
                            if (!Hibernate.isInitialized(collies)) {
                                collies.size();
                            }
                            if (collies != null) {
                                for (Colli colli : collies) {
                                    set = colli.getOrderLines();
                                    if (!Hibernate.isInitialized(set)) {
                                        set.size();
                                    }
                                }
                            }
                            break;
                        case ORDER_LINES:
                            Set<OrderLine> orderLines = postShipment
                                    .getOrderLines();
                            if (enumList
                                    .contains(LazyLoadPostShipmentEnum.ORDER_LINE_ORDER_LINES)) {
                                for (OrderLine orderLine : orderLines) {
                                    orderLineDAO
                                            .lazyLoad(
                                                    orderLine,
                                                    new LazyLoadOrderLineEnum[] {
                                                            LazyLoadOrderLineEnum.ORDER_LINES,
                                                            LazyLoadOrderLineEnum.ORDER_LINE_ATTRIBUTE});
                                }
                            } else {
                                orderLines.iterator();
                            }
                            break;
                        case POST_SHIPMENT_REFS:
                            set = postShipment.getPostShipmentRefs();
                            set.iterator();
                            break;
                        case ORDER_COMMENTS:
                            set = postShipment.getOrder().getOrderComments();
                            set.iterator();
                            break;
                        }
                    }
                    return null;
                }

            });
        }

    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#refreshPostShipment(no.ugland.utransprod.model.PostShipment)
     */
    public void refreshPostShipment(PostShipment postShipment) {
        getHibernateTemplate().load(postShipment,
                postShipment.getPostShipmentId());
        getHibernateTemplate().flush();

    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#findAll()
     */
    @SuppressWarnings("unchecked")
    public List<PostShipment> findAll() {
        return getHibernateTemplate().find("from PostShipment");
    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#lazyLoadTree(no.ugland.utransprod.model.PostShipment)
     */
    public void lazyLoadTree(final PostShipment postShipment) {
        if (postShipment != null && postShipment.getPostShipmentId() != null) {
            getHibernateTemplate().execute(new HibernateCallback() {

                public Object doInHibernate(Session session)
                        throws HibernateException {

                    if (!session.contains(postShipment)) {
                        session.load(postShipment, postShipment
                                .getPostShipmentId());
                    }

                    Set<?> set;
                    set = postShipment.getCollies();
                    set.iterator();

                    if (postShipment.getDeviation() != null) {
                        set = postShipment.getDeviation().getOrderComments();
                        set.iterator();
                    }

                    set = postShipment.getOrder().getOrderComments();
                    set.iterator();

                    Set<OrderLine> orderLines = postShipment.getOrderLines();
                    lazyLoadTreeOrderLines(orderLines);

                    return null;
                }
            });
        }

    }

    /**
     * Lazy laster ordrelinjer
     * @param orderLines
     */
    void lazyLoadTreeOrderLines(Set<OrderLine> orderLines) {
        if (orderLines == null) {
            return;
        }
        Set<?> set;
        for (OrderLine orderLine : orderLines) {
            set = orderLine.getOrderLineAttributes();
            set.iterator();
            lazyLoadTreeOrderLines(orderLine.getOrderLines());
        }
    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#findByOrderNr(java.lang.String)
     */
    @SuppressWarnings("unchecked")
    public List<PostShipment> findByOrderNr(final String orderNr) {
        return (List<PostShipment>) getHibernateTemplate().execute(
                new HibernateCallback() {

                    public Object doInHibernate(Session session)
                            throws HibernateException {
                        return session.createCriteria(PostShipment.class)
                                .createCriteria("order").add(
                                        Restrictions.eq("orderNr", orderNr))
                                .list();
                    }

                });
    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#findByCustomerNr(java.lang.Integer)
     */
    @SuppressWarnings("unchecked")
    public List<PostShipment> findByCustomerNr(final Integer customerNr) {
        return (List<PostShipment>) getHibernateTemplate().execute(
                new HibernateCallback() {

                    public Object doInHibernate(Session session)
                            throws HibernateException {
                        return session.createCriteria(PostShipment.class)
                                .createCriteria("order").createCriteria(
                                        "customer").add(
                                        Restrictions.eq("customerNr",
                                                customerNr)).list();
                    }

                });
    }

    /**
     * @see no.ugland.utransprod.dao.PostShipmentDAO#load(no.ugland.utransprod.model.PostShipment)
     */
    public void load(final PostShipment postShipment) {
        if (postShipment != null) {
            getHibernateTemplate().execute(new HibernateCallback() {

                public Object doInHibernate(Session session)
                        throws HibernateException {
                    session
                            .load(postShipment, postShipment
                                    .getPostShipmentId());
                    return null;
                }

            });
        }

    }

    @SuppressWarnings("unchecked")
    public final List<PostShipment> findSentInPeriod(final Periode periode,
            final String productAreaGroupName) {
        return (List<PostShipment>) getHibernateTemplate().execute(
                new HibernateCallback() {

                    public Object doInHibernate(final Session session) {
                        Date fromDate = Util.getFirstDateInWeek(periode
                                .getYear(), periode.getWeek());
                        Date toDate = Util.getLastDateInWeek(periode.getYear(),
                                periode.getToWeek());
                        return session.createCriteria(PostShipment.class).add(
                                Restrictions.isNotNull("transport")).add(
                                Restrictions.between("sent", fromDate, toDate))
                                .createCriteria("order").createCriteria(
                                        "productArea").createCriteria(
                                        "productAreaGroup").add(
                                        Restrictions.ilike(
                                                "productAreaGroupName",
                                                productAreaGroupName)).list();
                    }

                });
    }

}
TOP

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

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.