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.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.hibernate.transform.Transformers; import com.nec.core.exception.ObjectNotFoundException; import com.nec.crud.hibernate.HibernateSessionManager; import com.nec.harvest.constant.Constants; import com.nec.harvest.exception.ServiceException; import com.nec.harvest.model.Division; import com.nec.harvest.repository.DivisionRepository; import com.nec.harvest.service.DivisionService; /** * {@link DivisionService} * * @author huonghv * */ public class DivisionServiceImpl implements DivisionService { private DivisionRepository repository; public DivisionServiceImpl(DivisionRepository repository) { this.repository = repository; } /** {@inheritDoc}*/ @Override public List<Division> findByKbnId(String kbnId) throws ServiceException { if (StringUtils.isEmpty(kbnId)) { throw new IllegalArgumentException("Can not find division with kbnId empty"); } final Session session = HibernateSessionManager.getSession(); Transaction tx = null; List<Division> divisions = new ArrayList<>(); try { tx = session.beginTransaction(); Criteria criteria = repository.getCriteria(session, Division.class) .setProjection(Projections.projectionList().add(Projections.property("kbnCode").as("kbnCode")) .add(Projections.property("kbnName").as("kbnName"))) .add(Restrictions.eq("kbnID", kbnId)).add(Restrictions.eq("delKbn", Constants.STATUS_ACTIVE)) .addOrder(Order.asc("kbnCode")).setResultTransformer(Transformers.aliasToBean(Division.class)); // divisions = repository.findByCriteria(criteria); // Release transaction tx.commit(); if (CollectionUtils.isEmpty(divisions)) { throw new ObjectNotFoundException("No division object found"); } } catch (HibernateException ex) { if (tx != null) { tx.rollback(); } throw new ServiceException("Runtime exception occur when get list of division by kbnId " + kbnId, ex); } finally { HibernateSessionManager.closeSession(session); } return divisions; } }