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.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.Criterion; import org.hibernate.criterion.Restrictions; import com.nec.core.exception.ObjectNotFoundException; import com.nec.core.exception.TooManyObjectsException; import com.nec.crud.hibernate.HibernateSessionManager; import com.nec.harvest.constant.Constants; import com.nec.harvest.exception.ServiceException; import com.nec.harvest.model.PurchaseCategory; import com.nec.harvest.repository.PurchaseCategoryRepository; import com.nec.harvest.service.PurchaseCategoryService; /** * {@link PurchaseCategoryService} * * @author hungpd * */ public class PurchaseCategoryServiceImpl implements PurchaseCategoryService { private PurchaseCategoryRepository repository; public PurchaseCategoryServiceImpl(PurchaseCategoryRepository purchaseCategoryRepository) { this.repository = purchaseCategoryRepository; } /**{@inheritDoc}*/ @Override public PurchaseCategory findByCtgCode(String ctgCode) throws ServiceException { if (StringUtils.isEmpty(ctgCode)) { throw new IllegalArgumentException( "PurchaseCategory classification (ctgCode) must not be null or empty"); } final Session session = HibernateSessionManager.getSession(); Transaction tx = null; PurchaseCategory purchaseCategory = null; try { tx = session.beginTransaction(); Criterion criterion = Restrictions.conjunction().add(Restrictions.eq("ctgCode", ctgCode)) .add(Restrictions.eq("delKbn", Constants.STATUS_ACTIVE)); Criteria criteria = repository.getCriteria(session, PurchaseCategory.class); criteria.add(criterion); List<PurchaseCategory> purchaseCategorys = repository.findByCriteria(criteria); // Release transaction tx.commit(); if (CollectionUtils.isEmpty(purchaseCategorys)) { throw new ObjectNotFoundException( "Could not find the tighten for PurchaseCategory classification (ctgCode) " + ctgCode); } if (purchaseCategorys.size() > 1) { throw new TooManyObjectsException( "Too many objects are matched with PurchaseCategory classification (ctgCode) " + ctgCode); } purchaseCategory = purchaseCategorys.get(0); } catch (HibernateException ex) { if (tx != null) { tx.rollback(); } throw new ServiceException("An exception occured while finding a PurchaseCategory that matches with " + "PurchaseCategory classification " + ctgCode, ex); } finally { HibernateSessionManager.closeSession(session); } return purchaseCategory; } }