Java tutorial
/** * Copyright(C) 2014 * NEC Corporation All rights reserved. * * No permission to use, copy, modify and distribute this software * and its documentation for any purpose is granted. * This software is provided under applicable license agreement only. */ package com.nec.harvest.service.impl; import java.util.ArrayList; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.transform.Transformers; import com.nec.crud.hibernate.HibernateSessionManager; import com.nec.harvest.bean.mapping.HeadquartersMessageBean; import com.nec.harvest.constant.SqlConstants; import com.nec.harvest.exception.ServiceException; import com.nec.harvest.repository.HeadquartersMessageRepository; import com.nec.harvest.service.HeadquartersService; /** * The headquarters service implementation * * @author huonghv * */ @SuppressWarnings("unchecked") public class HeadquartersServiceImpl implements HeadquartersService { private HeadquartersMessageRepository repository; public HeadquartersServiceImpl(HeadquartersMessageRepository headquartersRepository) { this.repository = headquartersRepository; } /** {@inheritDoc} */ @Override public HeadquartersMessageBean findLatestNews() { final Session session = HibernateSessionManager.getSession(); Transaction tx = null; HeadquartersMessageBean headquartersMessage = null; try { tx = session.beginTransaction(); Query namedQuery = repository.getNamedQuery(session, SqlConstants.SQL_FIND_HEADQUATER_MESSAGE) .setResultTransformer(Transformers.aliasToBean(HeadquartersMessageBean.class)); List<HeadquartersMessageBean> latestNews = namedQuery.list(); if (CollectionUtils.isNotEmpty(latestNews)) { headquartersMessage = latestNews.get(0); } tx.commit(); } catch (HibernateException ex) { if (tx != null) { tx.rollback(); } throw new ServiceException(ex); } finally { HibernateSessionManager.closeSession(session); } return headquartersMessage; } /** {@inheritDoc} */ @Override public HeadquartersMessageBean findByMsgCode(String msgCode) throws ServiceException { if (StringUtils.isEmpty(msgCode)) { throw new IllegalArgumentException("Message's code must not be null or empty"); } final Session session = HibernateSessionManager.getSession(); Transaction tx = null; HeadquartersMessageBean headquartersMessage = null; try { tx = session.beginTransaction(); Query namedQuery = repository.getNamedQuery(session, SqlConstants.SQL_FIND_HEADQUATER_MESSAGE_BY_ID) .setString("hnbMsgID", msgCode) .setResultTransformer(Transformers.aliasToBean(HeadquartersMessageBean.class)); headquartersMessage = (HeadquartersMessageBean) namedQuery.uniqueResult(); tx.commit(); } catch (HibernateException ex) { if (tx != null) { tx.rollback(); } throw new ServiceException(ex); } finally { HibernateSessionManager.closeSession(session); } return headquartersMessage; } @Override public List<HeadquartersMessageBean> findByOffset(int position, int offset) throws ServiceException { final Session session = HibernateSessionManager.getSession(); Transaction tx = null; List<HeadquartersMessageBean> latestNews = new ArrayList<>(); try { tx = session.beginTransaction(); Query namedQuery = repository.getNamedQuery(session, SqlConstants.SQL_FIND_HEADQUATER_MESSAGE) .setFirstResult(position).setMaxResults(offset) .setResultTransformer(Transformers.aliasToBean(HeadquartersMessageBean.class)); latestNews = namedQuery.list(); tx.commit(); } catch (HibernateException ex) { if (tx != null) { tx.rollback(); } throw new ServiceException(ex); } finally { HibernateSessionManager.closeSession(session); } return latestNews; } }