ProductSearchDTO.java

package com.tradecloud.dto.api.product;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import com.fasterxml.jackson.annotation.JsonRootName;
import com.tradecloud.domain.common.ProductProperty;
import com.tradecloud.domain.model.ordermanagement.ProductState;
import com.tradecloud.dto.api.SearchDTO;
import com.tradecloud.schema.ISOCurrencyCodeType;
import com.tradecloud.schema.Type;

import java.util.ArrayList;
import java.util.List;

@JsonRootName(value = "productSearchDTO")
public class ProductSearchDTO extends SearchDTO {

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The product description.")
    private String description;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The product reference.")
    private String reference;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The supplier that supplies this product.")
    private List<String> supplier;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The country of origin for the product (country where the product was manufactured).")
    private List<String> countryOfOrigin;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The organisation that is linked to the product.")
    private List<String> organisation;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "Not applicable for Imports.")
    private String complete;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The status of the product. Indicates if the product is tariffed or not.")
    private ProductState tariffStatus;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The currency of the product.")
    private List<ISOCurrencyCodeType> currency;

    @JsonProperty(required = false)
    @JsonPropertyDescription(value = "The field to sort the result set by.")
    private String orderBy;

    private List<Type> types;

    private boolean elc;

    private List<ProductProperty> productPropertyList;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public List<String> getSupplier() {
        return supplier;
    }

    public void setSupplier(List<String> supplier) {
        this.supplier = supplier;
    }

    public List<String> getCountryOfOrigin() {
        return countryOfOrigin;
    }

    public void setCountryOfOrigin(List<String> countryOfOrigin) {
        this.countryOfOrigin = countryOfOrigin;
    }

    public List<String> getOrganisation() {
        return organisation;
    }

    public void setOrganisation(List<String> organisation) {
        this.organisation = organisation;
    }

    public String getComplete() {
        return complete;
    }

    public void setComplete(String complete) {
        this.complete = complete;
    }

    public ProductState getTariffStatus() {
        return tariffStatus;
    }

    public void setTariffStatus(ProductState tariffStatus) {
        this.tariffStatus = tariffStatus;
    }

    public List<ISOCurrencyCodeType> getCurrency() {
        return currency;
    }

    public void setCurrency(List<ISOCurrencyCodeType> currency) {
        this.currency = currency;
    }

    public String getOrderBy() {
        return orderBy;
    }

    public void setOrderBy(String orderBy) {
        this.orderBy = orderBy;
    }

    public List<Type> getTypes() {
        if (types == null) {
            types = new ArrayList<>();
        }
        return types;
    }

    public void setTypes(List<Type> types) {
        this.types = types;
    }

    public boolean isElc() {
        return elc;
    }

    public void setElc(boolean elc) {
        this.elc = elc;
    }

    public List<ProductProperty> getProductPropertyList() {
        return productPropertyList;
    }

    public void setProductPropertyList(List<ProductProperty> productPropertyList) {
        this.productPropertyList = productPropertyList;
    }
}