/* * Licensed to csti consulting * You may obtain a copy of the License at * * http://www.csticonsulting.com * Copyright (c) 2006-Aug 24, 2010 Consultation CS-TI inc. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.salesmanager.core.service.catalog.impl.db.dao; // Generated Nov 11, 2009 10:40:38 AM by Hibernate Tools 3.2.4.GA import java.util.Collection; import java.util.Iterator; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; import com.salesmanager.core.entity.catalog.Review; import com.salesmanager.core.entity.catalog.SearchReviewCriteria; import com.salesmanager.core.entity.catalog.SearchReviewResponse; import com.salesmanager.core.entity.common.Counter; /** * Home object for domain model class Reviews. * * @see com.salesmanager.core.test.Reviews * @author Hibernate Tools */ @Repository public class ReviewDao extends HibernateDaoSupport implements IReviewDao { private static final Log log = LogFactory.getLog(ReviewDao.class); @Autowired public ReviewDao(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory); } /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDao#persist(com * .salesmanager.core.entity.catalog.Review) */ /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDescriptionDao# * persist(com.salesmanager.core.entity.catalog.Review) */ public void persist(Review transientInstance) { try { super.getHibernateTemplate().persist(transientInstance); } catch (RuntimeException re) { log.error("persist failed", re); throw re; } } /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDao#saveOrUpdate * (com.salesmanager.core.entity.catalog.Review) */ /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDescriptionDao# * saveOrUpdate(com.salesmanager.core.entity.catalog.Review) */ public void saveOrUpdate(Review instance) { try { super.getHibernateTemplate().saveOrUpdate(instance); } catch (RuntimeException re) { log.error("attach failed", re); throw re; } } /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDao#delete(com. * salesmanager.core.entity.catalog.Review) */ /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDescriptionDao# * delete(com.salesmanager.core.entity.catalog.Review) */ public void delete(Review persistentInstance) { try { super.getHibernateTemplate().delete(persistentInstance); } catch (RuntimeException re) { log.error("delete failed", re); throw re; } } /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDao#deleteAll(java * .util.Collection) */ /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDescriptionDao# * deleteAll(java.util.Collection) */ public void deleteAll(Collection<Review> coll) { try { super.getHibernateTemplate().deleteAll(coll); } catch (RuntimeException re) { log.error("delete failed", re); throw re; } } /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDao#findByCustomerId * (long, int) */ /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDescriptionDao# * findByCustomerId(long, int) */ public Collection<Review> findByCustomerId(long id, int languageId) { try { Query q = super .getSession() .createQuery( "select r from Review r left join fetch r.descriptions s join fetch r.customer c where r.customerId=:cId and s.id.languageId=:lId order by r.reviewId desc") .setLong("cId", id).setInteger("lId", languageId) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); ; return q.list(); } catch (RuntimeException re) { log.error("get failed", re); throw re; } } /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDao#findByProductId * (long, int) */ /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDescriptionDao# * findByProductId(long, int) */ public Collection<Review> findByProductId(long id, int languageId) { try { Query q = super .getSession() .createQuery( "select r from Review r left join fetch r.descriptions s join fetch r.customer c where r.productId=:pId and s.id.languageId=:lId") .setLong("pId", id).setInteger("lId", languageId) .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); ; return q.list(); } catch (RuntimeException re) { log.error("get failed", re); throw re; } } public Collection<Review> findByProductId(long id) { try { Query q = super .getSession() .createQuery( "select r from Review r left join fetch r.descriptions s join fetch r.customer c where r.productId=:pId order by r.reviewId desc") .setLong("pId", id); return q.list(); } catch (RuntimeException re) { log.error("get failed", re); throw re; } } public SearchReviewResponse searchByProductId(SearchReviewCriteria criteria) { try { // Query q = // super.getSession().createQuery("select r from Review r left join fetch r.descriptions s join fetch r.customer c where r.productId=:pId and s.id.languageId=:lId order by r.reviewId desc") Query q = super .getSession() .createQuery( "select r from Review r left join fetch r.descriptions s join fetch r.customer c where r.productId=:pId order by r.reviewId desc") .setLong("pId", criteria.getProductId()) // .setInteger("lId", criteria.getLanguageId()); .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); Criteria c = super.getSession().createCriteria(Review.class).add( Restrictions.eq("productId", criteria.getProductId())) .addOrder(org.hibernate.criterion.Order.desc("reviewId")); c.setProjection(Projections.rowCount()); Integer count = (Integer) c.uniqueResult(); c.setProjection(null); int max = criteria.getQuantity(); /* * if(count<criteria.getQuantity()) { * if(criteria.getStartindex()==1) { max = count; } else { max = * count - criteria.getStartindex(); } } */ List list = null; if (count > 0) { q.setMaxResults(criteria.getUpperLimit(count)); q.setFirstResult(criteria.getLowerLimit()); } list = q.list(); SearchReviewResponse response = new SearchReviewResponse(); response.setCount(count); response.setReviews(list); return response; } catch (RuntimeException re) { log.error("get failed", re); throw re; } } public SearchReviewResponse searchByCustomerId(SearchReviewCriteria criteria) { try { // Query q = // super.getSession().createQuery("select r from Review r left join fetch r.descriptions s join fetch r.customer c where r.customerId=:cId and s.id.languageId=:lId order by r.reviewId desc") Query q = super .getSession() .createQuery( "select r from Review r join fetch r.customer c where r.customerId=:cId order by r.reviewId desc") .setLong("cId", criteria.getCustomerId()); // .setInteger("lId", criteria.getLanguageId()); Criteria c = super.getSession().createCriteria(Review.class).add( Restrictions.eq("customerId", criteria.getCustomerId())) .addOrder(org.hibernate.criterion.Order.desc("reviewId")); c.setProjection(Projections.rowCount()); Integer count = (Integer) c.uniqueResult(); c.setProjection(null); List list = null; if (count > 0) { q.setMaxResults(criteria.getUpperLimit(count)); q.setFirstResult(criteria.getLowerLimit()); } list = q.list(); SearchReviewResponse response = new SearchReviewResponse(); response.setCount(count); response.setReviews(list); return response; } catch (RuntimeException re) { log.error("get failed", re); throw re; } } /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDao#findById(long) */ /* * (non-Javadoc) * * @see * com.salesmanager.core.service.catalog.impl.dao.IReviewDescriptionDao# * findById(long) */ public Review findById(long id) { try { Review instance = (Review) super.getHibernateTemplate().get( "com.salesmanager.core.entity.catalog.Review", id); return instance; } catch (RuntimeException re) { log.error("get failed", re); throw re; } } public Counter countAverageRatingByProduct(long productId) { try { Criteria c = super.getSession().createCriteria(Review.class).add( Restrictions.eq("productId", productId)); c.setProjection(Projections.projectionList().add( Projections.avg("reviewRating")) .add(Projections.rowCount())); List resp = c.list(); Counter counter = new Counter(); if (resp != null && resp.size() > 0) { Iterator i = resp.iterator(); while (i.hasNext()) { Object[] o = (Object[]) i.next(); counter.setAverage(((Double) o[0])); counter.setCount((Integer) o[1]); } } return counter; } catch (RuntimeException re) { log.error("get failed", re); throw re; } } }