TariffSearchResult.java

package com.tradecloud.dto.duties;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tradecloud.domain.sars.SARSTariff;
import com.tradecloud.tariffing.domain.AntiDumping;
import com.tradecloud.tariffing.domain.BaseTariff;
import com.tradecloud.tariffing.domain.Duty;
import com.tradecloud.tariffing.domain.Tariff;

import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;

/**
 *
 */
public class TariffSearchResult implements SARSTariff {

    // This is a workaround for how the tariff server returns the total count.
    // It wraps the return value in a a TariffSearchResults class which has the page and total.
    // Our framework prefers separate calls. One to get the total first, then get the page
    @JsonIgnore
    private int totalResultsCountHack;

    private Tariff tariff;

    private BaseTariff baseTariff;
    private AntiDumping antiDumping;
    private List<BaseTariff> rebateTariffs;

    public Tariff getTariff() {
        return tariff;
    }

    public void setTariff(Tariff tariff) {
        this.tariff = tariff;
    }

    public BaseTariff getBaseTariff() {
        return baseTariff;
    }

    public void setBaseTariff(BaseTariff baseTariff) {
        this.baseTariff = baseTariff;
    }

    public int getTotalResultsCountHack() {
        return totalResultsCountHack;
    }

    public void setTotalResultsCountHack(int totalResultsCountHack) {
        this.totalResultsCountHack = totalResultsCountHack;
    }

    /**
     * This is a utility method to get the duties on the Tariff object as a list.
     * It is here because it is used from the UI, which only gets this object passed in. Otherwise it would be in a util.
     * TODO. Move elsewhere. Debugging shows this gets called about 5 times. Cache once when the tariff is selected
     *
     * @return List of duties.
     */
    public List<Entry<String, Duty>> getDutiesAsList() {
        return TariffGeneralHelper.getDutiesAsList(tariff);
    }

    @Override
    @JsonIgnore
    public String getDescription() {
        return tariff != null ? tariff.getDescription() : "";
    }

    @Override
    @JsonIgnore
    public String getUnit() {
        return tariff != null ? tariff.getDutyUnit() : "";
    }

    public List<BaseTariff> getRebateTariffs() {
        if (rebateTariffs == null) {
            rebateTariffs = new ArrayList<>();
        }
        return rebateTariffs;
    }

    public void setRebateTariffs(List<BaseTariff> rebateTariffs) {
        this.rebateTariffs = rebateTariffs;
    }

    public void addRebateTariff(BaseTariff baseTariff) {
        getRebateTariffs().add(baseTariff);
    }

    public AntiDumping getAntiDumping() {
        return antiDumping;
    }

    public void setAntiDumping(AntiDumping antiDumping) {
        this.antiDumping = antiDumping;
    }

    @Override
    public String getCode() {
        return tariff != null ? tariff.getCode() : null;
    }
}