com.nec.harvest.service.impl.HeadquartersServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.nec.harvest.service.impl.HeadquartersServiceImpl.java

Source

/**
 * 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;
    }

}