Package org.fao.geonet.repository

Source Code of org.fao.geonet.repository.MetadataRatingByIpRepositoryImpl

package org.fao.geonet.repository;

import org.fao.geonet.domain.MetadataRatingByIp;
import org.fao.geonet.domain.MetadataRatingByIpId_;
import org.fao.geonet.domain.MetadataRatingByIp_;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Expression;
import javax.persistence.criteria.Root;

/**
* Implementation for MetadataRatingByIpRepositoryCustom interface.
* <p/>
* User: jeichar
* Date: 9/5/13
* Time: 4:15 PM
*/
public class MetadataRatingByIpRepositoryImpl implements MetadataRatingByIpRepositoryCustom {

    @PersistenceContext
    private EntityManager _entityManager;

    @Override
    public int averageRating(final int metadataId) {
        final CriteriaBuilder cb = _entityManager.getCriteriaBuilder();
        CriteriaQuery<Double> cbQuery = cb.createQuery(Double.class);
        Root<MetadataRatingByIp> root = cbQuery.from(MetadataRatingByIp.class);

        Expression<Double> mean = cb.avg(root.get(MetadataRatingByIp_.rating));
        cbQuery.select(mean);
        cbQuery.where(cb.equal(root.get(MetadataRatingByIp_.id).get(MetadataRatingByIpId_.metadataId), metadataId));
        return _entityManager.createQuery(cbQuery).getSingleResult().intValue();
    }

    @Override
    @Transactional
    public int deleteAllById_MetadataId(final int metadataId) {
        String entityType = MetadataRatingByIp.class.getSimpleName();
        String metadataIdPropName = MetadataRatingByIpId_.metadataId.getName();
        Query query = _entityManager.createQuery("DELETE FROM " + entityType + " WHERE " + metadataIdPropName + " = " + metadataId);
        return query.executeUpdate();
    }
}
TOP

Related Classes of org.fao.geonet.repository.MetadataRatingByIpRepositoryImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.