ReportConfigRepositoryImpl.java

package com.tradecloud.repository.impl;

import java.util.List;

import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.tradecloud.domain.configuration.ReportConfig;
import com.tradecloud.domain.configuration.ReportConfigAttributes;
import com.tradecloud.repository.ReportConfigRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;

@Repository(value = "reportConfigRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class ReportConfigRepositoryImpl extends RepositoryBaseImpl<ReportConfig, Object> implements ReportConfigRepository {

    private static final long serialVersionUID = 1L;

    @SuppressWarnings("unchecked")
    @Override
    public List<ReportConfig> findAllActiveReports() {

        Query query = getSession().createQuery("Select ta from ReportConfig ta where ta.active=true order by ta.id asc");
        return query.list();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<ReportConfigAttributes> findActiveByReportName(String reportName) {
        Query query =
                getSession().createQuery(
                        "Select ta from ReportConfigAttributes ta where "
                                + "ta.reportConfig.reportName=:reportName and ta.active=true order by ta.sortOrder asc");
        query.setString("reportName", reportName);
        return query.list();
    }

    @Override
    public ReportConfig findByNameActive(String reportName) {
        Query query =
                getSession().createQuery(
                        "Select ta from ReportConfig ta where "
                                + "ta.reportName=:reportName and ta.active=true");
        query.setString("reportName", reportName);
        return (ReportConfig) query.uniqueResult();
    }
}