DealCreationPointConfigRepositoryImpl.java

package com.tradecloud.repository.impl;

import com.tradecloud.domain.configuration.DealCreationPointConfig;
import com.tradecloud.domain.model.ForexGroup;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.repository.DealCreationPointConfigRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
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 java.util.List;

@Repository(value = "dealCreationPointConfigRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class DealCreationPointConfigRepositoryImpl extends RepositoryBaseImpl<DealCreationPointConfig, Object>
        implements DealCreationPointConfigRepository {

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

        return getExecutableCriteriaList(searchCriteria, null);
    }

    @Override
    public void deleteAll(ForexGroup forexGroup, OrganisationalUnit division) {
        for (DealCreationPointConfig forexGroupDivisionConfig : find(forexGroup, division)) {
            delete(forexGroupDivisionConfig);
        }
    }
}