ContainerRateRepositoryImpl.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tradecloud.repository.impl;

import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
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.infrastructure.persistence.CriteriaBuilder;
import com.tradecloud.dto.rate.ContainerRateSearch;
import com.tradecloud.domain.rate.ContainerRate;
import com.tradecloud.repository.ContainerRateRepository;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;

/**
 * Container Rate repository.
 *
 */
@Repository(value = "containerRateRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class ContainerRateRepositoryImpl extends RepositoryBaseImpl<ContainerRate, ContainerRateSearch> implements ContainerRateRepository {

    private static final long serialVersionUID = 1L;

    @Override
    public List<ContainerRate> search(ContainerRateSearch containerRateSearch) {

        DetachedCriteria criteria = DetachedCriteria.forClass(ContainerRate.class);
        CriteriaBuilder.addEqRestriction(criteria, "shippingMode", containerRateSearch.getShippingMode());
        CriteriaBuilder.addEqRestriction(criteria, "costLineTemplate", containerRateSearch.getCostLineTemplate());
        CriteriaBuilder.addEqRestriction(criteria, "costGroup", containerRateSearch.getCostGroup());
        CriteriaBuilder.addEqRestriction(criteria, "containerType", containerRateSearch.getContainerType());
        CriteriaBuilder.addEqRestriction(criteria, "currency", containerRateSearch.getCurrency());
        CriteriaBuilder.addEqRestriction(criteria, "placeOfDischarge", containerRateSearch.getPlaceOfDischarge());
        CriteriaBuilder.addEqRestriction(criteria, "clearingAgent", containerRateSearch.getClearingAgent());
        CriteriaBuilder.addEqRestriction(criteria, "finalDestination", containerRateSearch.getFinalDestination());
        CriteriaBuilder.addEqRestriction(criteria, "origin", containerRateSearch.getOrigin());
        CriteriaBuilder.addEqRestriction(criteria, "forwardingAgent", containerRateSearch.getForwardingAgent());
        CriteriaBuilder.addEqRestriction(criteria, "placeOfLoading", containerRateSearch.getPlaceOfLoading());
        CriteriaBuilder.addEqRestriction(criteria, "placeOfDischarge", containerRateSearch.getPlaceOfDischarge());
        CriteriaBuilder.addEqRestriction(criteria, "placeOfLoading", containerRateSearch.getPlaceOfLoading());
        CriteriaBuilder.addEqRestriction(criteria, "leadTime", containerRateSearch.getLeadTime());
        CriteriaBuilder.addEqRestriction(criteria, "shippingLine", containerRateSearch.getShippingLine());

        @SuppressWarnings("unchecked")
        List<ContainerRate> results = criteria.getExecutableCriteria(getSessionCustom()).list();
        return results;
    }

}