Package no.ugland.utransprod.dao.hibernate

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

package no.ugland.utransprod.dao.hibernate;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import no.ugland.utransprod.dao.ApplicationUserDAO;
import no.ugland.utransprod.model.ApplicationUser;
import no.ugland.utransprod.model.ProductAreaGroup;
import no.ugland.utransprod.util.ApplicationParamUtil;

import org.apache.commons.lang.StringUtils;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;

/**
* Implementasjon av DAO mot APPLICATION_USER for hobermate
* @author atle.brekka
*/
public class ApplicationUserDAOHibernate extends BaseDAOHibernate<ApplicationUser> implements
        ApplicationUserDAO {
    /**
     * Konstrukt�r
     */
    public ApplicationUserDAOHibernate() {
        super(ApplicationUser.class);
    }

    /**
     * @see no.ugland.utransprod.dao.ApplicationUserDAO#findAllNotGroup()
     */
    @SuppressWarnings("unchecked")
    public final List<ApplicationUser> findAllNotGroup() {
        return (List<ApplicationUser>) getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(final Session session) {
                return session.createCriteria(ApplicationUser.class).add(Restrictions.eq("groupUser", "Nei")).addOrder(Order.asc("lastName"))
                        .list();
            }

        });
    }

    public final void refreshObject(final ApplicationUser applicationUser) {
        getHibernateTemplate().load(applicationUser, applicationUser.getUserId());

    }

    /**
     * @see no.ugland.utransprod.dao.ApplicationUserDAO#findByUserNameAndPassword(java.lang.String,
     *      java.lang.String)
     */
    @SuppressWarnings("unchecked")
    public final List<ApplicationUser> findByUserNameAndPassword(final String userName, final String password) {
        return (List<ApplicationUser>) getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(final Session session) {
                Criteria crit = session.createCriteria(ApplicationUser.class).add(
                        Restrictions.ilike("userName", userName));

                if (password != null) {
                    crit.add(Restrictions.eq("password", password));
                }
                return crit.list();
            }

        });
    }

    /**
     * @see no.ugland.utransprod.dao.ApplicationUserDAO#findAllPackers()
     */
    @SuppressWarnings("unchecked")
    public List<String> findAllPackers(final ProductAreaGroup productAreaGroup) {
        return (List<String>) getHibernateTemplate().execute(new HibernateCallback() {

            public Object doInHibernate(Session session) throws HibernateException {
                Criteria criteria = session.createCriteria(ApplicationUser.class).add(
                        Restrictions.eq("groupUser", "Nei"));

                ProductAreaGroupSelector selector = ProductAreaGroupSelector.valueOf(StringUtils
                        .upperCase(productAreaGroup.getProductAreaGroupName()));
                selector.setRestriction(criteria, productAreaGroup);

                criteria = criteria.createCriteria("userRoles").createCriteria("userType").add(
                        Restrictions.eq("description", ApplicationParamUtil
                                .findParamByName("user_type_package")));

                List<ApplicationUser> users = criteria.list();

                List<String> initialsList = new ArrayList<String>();
                for (ApplicationUser user : users) {
                    initialsList.add(user.getUserName());
                }

                return initialsList;
            }

        });
    }

    /**
     * @see no.ugland.utransprod.dao.ApplicationUserDAO#lazyLoad(no.ugland.utransprod.model.ApplicationUser,
     *      no.ugland.utransprod.service.enums.LazyLoadApplicationUserEnum[])
     */
    /*public void lazyLoad(final ApplicationUser applicationUser, final LazyLoadApplicationUserEnum[] enums) {
        if (applicationUser != null && applicationUser.getUserId() != null) {
            getHibernateTemplate().execute(new HibernateCallback() {

                public Object doInHibernate(Session session) throws HibernateException {
                    if (!session.contains(applicationUser)) {
                        session.load(applicationUser, applicationUser.getUserId());
                    }

                    Set<?> set;

                    for (LazyLoadApplicationUserEnum lazyEnum : enums) {
                        switch (lazyEnum) {
                        case USER_ROLE:
                            set = applicationUser.getUserRoles();
                            if (set != null) {
                                set.iterator();
                            }
                            break;
                        case USER_PRODUCT_AREA_GROUP:
                            set = applicationUser.getUserProductAreaGroups();
                            if (set != null) {
                                set.iterator();
                            }
                            break;
                        }
                    }
                    return null;
                }

            });

        }

    }*/

    private enum ProductAreaGroupSelector {
        GARASJE {
            @Override
            public void setRestriction(Criteria criteria, ProductAreaGroup productAreaGroup) {
                setRestrictionForProductAreaGroup(criteria, productAreaGroup);

            }
        },
        BYGGELEMENT {
            @Override
            public void setRestriction(Criteria criteria, ProductAreaGroup productAreaGroup) {
                setRestrictionForProductAreaGroup(criteria, productAreaGroup);

            }
        },
        TAKSTOL {
            @Override
            public void setRestriction(Criteria criteria, ProductAreaGroup productAreaGroup) {
                setRestrictionForProductAreaGroup(criteria, productAreaGroup);

            }
        },
        ALLE {
            @Override
            public void setRestriction(Criteria criteria, ProductAreaGroup productAreaGroup) {
            }
        };

        public abstract void setRestriction(Criteria criteria, ProductAreaGroup productAreaGroup);

        private static void setRestrictionForProductAreaGroup(
                Criteria criteria, ProductAreaGroup productAreaGroup) {
            criteria.createAlias("productArea", "area").add(
                    Restrictions.eq("area.productAreaGroup", productAreaGroup));

        }
    }

  public ApplicationUser findByFullName(final String fullName) {
    return (ApplicationUser)getHibernateTemplate().execute(new HibernateCallback() {
     
      public Object doInHibernate(Session session){
        String sql = "select applicationUser " +
            "       from ApplicationUser applicationUser " +
            "       where applicationUser.firstName||' '||applicationUser.lastName=:fullName " +
            "       order by applicationUser.userName";
        List<ApplicationUser> list = session.createQuery(sql).setParameter("fullName", fullName).list();
        return list!=null&&list.size()>0?list.get(0):ApplicationUser.UNKNOWN;
      }
    });
  }

}
TOP

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

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.