RateLookupPriorityRepositoryImpl.java

package com.tradecloud.repository.rate.impl;

import java.util.Collections;
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;

import com.tradecloud.domain.costing.CostLineTemplate;
import com.tradecloud.domain.infrastructure.persistence.CriteriaBuilder;
import com.tradecloud.domain.rate.RateLookupPriorityConfig;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import com.tradecloud.repository.rate.RateLookupPriorityRepository;
import org.springframework.stereotype.Repository;

@Repository(value = "rateLookupPriorityRepository")
public class RateLookupPriorityRepositoryImpl extends RepositoryBaseImpl<RateLookupPriorityConfig, Object>
    implements RateLookupPriorityRepository {

    @Override
    public List<RateLookupPriorityConfig> findBy(CostLineTemplate costLineTemplate) {

        DetachedCriteria criteria = DetachedCriteria.forClass(RateLookupPriorityConfig.class);

        CriteriaBuilder.addEqRestriction(criteria, "costLineTemplate", costLineTemplate);

        List<RateLookupPriorityConfig> rateLookupPriorityConfigs =
            (List<RateLookupPriorityConfig>)criteria.getExecutableCriteria(getSessionCustom()).list();

        if (rateLookupPriorityConfigs != null)
            Collections.sort(rateLookupPriorityConfigs);

        return rateLookupPriorityConfigs;
    }
}