ForexGroupDealStateConfigRepositoryImpl.java

package com.tradecloud.repository.impl;

import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
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.ForexGroupDealStateConfig;
import com.tradecloud.domain.model.ForexGroup;
import com.tradecloud.domain.model.deal.DealStatus;
import com.tradecloud.repository.ForexGroupDealStateConfigRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;

@Repository(value = "forexGroupDealStateConfigRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class ForexGroupDealStateConfigRepositoryImpl extends RepositoryBaseImpl<ForexGroupDealStateConfig, Object> implements
        ForexGroupDealStateConfigRepository {

    @Override
    public List<ForexGroupDealStateConfig> find(ForexGroup forexGroup, DealStatus dealStatus) {
        DetachedCriteria searchCriteria = DetachedCriteria.forClass(getPersistentClass(), "forexGroupDealStateConfig");
        if (forexGroup != null) {
            searchCriteria.add(Restrictions.eq("forexGroup", forexGroup));
        }
        if (dealStatus != null) {
            searchCriteria.add(Restrictions.eq("dealStatus", dealStatus));
        }

        return getExecutableCriteriaList(searchCriteria, null);
    }
}