FECRequestDealLinkForFECRequestSpecification.java

package com.tradecloud.repository.treasury;

import java.util.List;
import com.tradecloud.domain.model.FECDealLink;
import com.tradecloud.domain.model.FECRequestDealLink;
import com.tradecloud.domain.model.RequestSpecification;
import com.tradecloud.domain.model.fecrequest.FECRequest;
import com.tradecloud.repository.FECRequestDealLinkRepository;

/**
 * @deprecated This class design means that entities have a reference to their
 *             Repository and needs to be refactored
 */
public class FECRequestDealLinkForFECRequestSpecification implements RequestSpecification<FECRequest> {

    private FECRequest fecRequest;
    private FECRequestDealLinkRepository fecRequestDealLinkRepository;

    public FECRequestDealLinkForFECRequestSpecification(FECRequest fecRequest) {
        this.fecRequest = fecRequest;
    }

    public boolean isSatisfiedBy(FECDealLink link) {
        return link.getFec().getId() == fecRequest.getId();
    }

    @Override
    public boolean isSatisfiedBy(FECRequestDealLink link) {
        if (link != null && fecRequest != null) {
            if (link.getFecRequest().getId() == fecRequest.getId()) {
                return true;
            }
        }

        return false;
    }

    /**
     * TODO - had to add deprecated method call
     * TreasuryConfig.requireFECAuthorization() here to meet the new interface
     * changes No comments on that method as to why it's deprecated so I can't
     * figure out what the intension of the change was.
     */
    @Override
    public List<FECRequestDealLink> findAllSatisfiedBy() {
        return fecRequestDealLinkRepository.findAllByFECRequest(fecRequest);
    }

    public void setMatching(FECRequest fec) {
        this.fecRequest = fec;
    }

    public FECRequestDealLinkForFECRequestSpecification() {
    }

    public void setFecRequestDealLinkRepository(FECRequestDealLinkRepository fecRequestDealLinkRepository) {
        this.fecRequestDealLinkRepository = fecRequestDealLinkRepository;
    }
}