LetterOfCreditRepositoryImpl.java

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

import com.tradecloud.domain.infrastructure.persistence.CriteriaBuilder;
import com.tradecloud.domain.letterofcredit.LetterOfCredit;
import com.tradecloud.domain.letterofcredit.LetterOfCreditState;
import com.tradecloud.dto.letterofcredit.LetterOfCreditSearch;
import com.tradecloud.repository.LetterOfCreditRepository;
import com.tradecloud.repository.SearchMetaParams;
import com.tradecloud.repository.base.impl.RepositoryBaseImpl;
import java.util.List;
import org.apache.log4j.Logger;
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;

/**
 *
 * @author Fred
 */
@Repository(value = "letterOfCreditRepository")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class LetterOfCreditRepositoryImpl extends RepositoryBaseImpl<LetterOfCredit, LetterOfCreditSearch> implements LetterOfCreditRepository {

    private final static transient Logger log = Logger.getLogger(LetterOfCredit.class);

    private final static String NUMBER = "number";
    private final static String BANK_REFERENCE = "bankReference";

    private final static String STATE = "state";
    private final static String KEY = "key";
    private final static String NAME = "name";
    private final static String DESCRIPTION = "description";
    private final static String ISSUING_BANK = "issuingBank";
    private final static String BANK = "owningEntity";
    private final static String SUPPLIER = "selectedSuppliers";
    private final static String OUT_OF_SYNC_STATE = "outOfSyncState";
    private final static String CREATED = "created";
    private final static String APPLICANT = "applicant";
    private final static String APPLICATION_REFERENCE = "applicationReference";

    @Override
    public List<LetterOfCredit> searchOutOfSyncLc(LetterOfCreditSearch search) {
        log.debug("Search. " + search);
        DetachedCriteria criteria = DetachedCriteria.forClass(LetterOfCredit.class);

        // TODO. Add others.
        CriteriaBuilder.addiLikeAnyRestriction(criteria, NUMBER, search.getNumber());
        CriteriaBuilder.addiLikeAnyRestriction(criteria, BANK_REFERENCE, search.getBankReference());
        CriteriaBuilder.addiLikeAnyRestriction(criteria, APPLICATION_REFERENCE, search.getApplicationReference());
        CriteriaBuilder.addEqRestriction(criteria, ISSUING_BANK, search.getBank());
        CriteriaBuilder.addExactMatch(criteria, OUT_OF_SYNC_STATE, search.getOutOfSyncState());
        CriteriaBuilder.addEqRestriction(criteria, APPLICANT, search.getOrganisationalUnit());
        CriteriaBuilder.addEqActiveStateRestriction(criteria, STATE, search.getState(), LetterOfCreditState.DELETED);
        CriteriaBuilder.addDateGreaterOrEqualRangeCriteria(criteria, CREATED, search.getCreatedDate().getFrom());
        CriteriaBuilder.addDateLessOrEqualRangeCriteria(criteria, CREATED, search.getCreatedDate().getTo());
        SearchMetaParams metaParams = new SearchMetaParams(0, 10, CREATED, false);
        search.setSearchMetaParams(metaParams);
        return getExecutableCriteriaList(criteria, search.getSearchMetaParams());
    }
}