GlobalClientConfig.java

package com.tradecloud.domain.configuration;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.common.Currency;
import com.tradecloud.domain.common.OrderReferenceGenerator;
import com.tradecloud.domain.model.NonBusinessDayRecalculationType;
import org.hibernate.annotations.ForeignKey;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.xml.bind.annotation.*;
import java.util.Set;

/**
 * A holder for global client configuration values.
 */
@Entity
@Table(name = "globalclientconfig")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "GlobalClientConfig")
public class GlobalClientConfig extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    /**
     * Defaults to "ORD".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String orderPrefix;

    /**
     * Defaults to "/01".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String orderSuffix;

    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String rfqPrefix;

    /**
     * Defaults to "/01".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String rfqSuffix;

    /**
     * Defaults to "CON".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String consignmentPrefix;

    /**
     * Defaults to "/01".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String consignmentSuffix;

    /**
     * Defaults to "SS".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String seaShipmentPrefix;

    /**
     * Defaults to "/01".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String seaShipmentSuffix;

    /**
     * Defaults to "AS".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String airShipmentPrefix;

    /**
     * Defaults to "/01".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String airShipmentSuffix;

    /**
     * Defaults to "LS".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String landShipmentPrefix;

    /**
     * Defaults to "/01".
     */
    @XmlAttribute
    @Pattern(regexp = "\\S+", message = "Spaces are not allowed")
    private String landShipmentSuffix;

    /**
     * Defaults to false.
     */
    @XmlAttribute
    @NotNull
    private boolean autoGenerateShippingRefsAtOrderLevel;

    @XmlAttribute
    @NotNull
    private boolean orgUnitFilter;

    @XmlAttribute
    private Integer shippingReferenceInfix;

    /**
     * Defaults to "/01".
     */
    @XmlAttribute
    @NotNull
    private String logoInUse;

    @XmlAttribute
    private String hostUrl;

    @XmlElementWrapper(name = "PublicHolidayRules")
    @XmlElement(name = "PublicHolidayRule")
    @OneToMany(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_globalclientconfig",
            inverseName = "fk_publicholidayrule")
    @JoinTable(name = "globalclientconfig_publicholidayrules",
            joinColumns = {@JoinColumn(name = "config_id", unique = false)},
            inverseJoinColumns = {@JoinColumn(name = "publicholidayrule_id", unique = false)})
    private Set<PublicHolidayRule> publicHolidayRules;

    @Enumerated(value = EnumType.STRING)
    @XmlAttribute
    @NotNull
    private NonBusinessDayRecalculationType nonBusinessDayRecalculationType;

    @XmlAttribute
    @NotNull
    private Integer employeeMaxEmailLength;

    @ManyToOne
    @NotNull(message = "global client config currency is required")
    private Currency currency;

    @XmlAttribute
    private String shippingReferenceCriteria;

    @Enumerated(value = EnumType.STRING)
    @XmlAttribute
    private ExternalReferenceKeyUniqueType externalReferenceKeyUniqueType;

    private boolean orderPrefixToSupplierCode;

    @Enumerated(value = EnumType.STRING)
    private OrderReferenceGenerator orderReferenceGenerator;

    private String invoicePrefix;

    private String invoiceSuffix;

    private boolean appendMonth;

    private boolean appendYear;

    private boolean uniqueShippingReference;

    public Integer getEmployeeMaxEmailLength() {
        return employeeMaxEmailLength;
    }

    public void setEmployeeMaxEmailLength(Integer employeeMaxEmailLength) {
        this.employeeMaxEmailLength = employeeMaxEmailLength;
    }

    public String getOrderPrefix() {
        return orderPrefix;
    }

    public void setOrderPrefix(String orderPrefix) {
        this.orderPrefix = orderPrefix;
    }

    public String getOrderSuffix() {
        return orderSuffix;
    }

    public void setOrderSuffix(String orderSuffix) {
        this.orderSuffix = orderSuffix;
    }

    public String getConsignmentPrefix() {
        return consignmentPrefix;
    }

    public void setConsignmentPrefix(String consignmentPrefix) {
        this.consignmentPrefix = consignmentPrefix;
    }

    public String getConsignmentSuffix() {
        return consignmentSuffix;
    }

    public void setConsignmentSuffix(String consignmentSuffix) {
        this.consignmentSuffix = consignmentSuffix;
    }

    public String getSeaShipmentPrefix() {
        return seaShipmentPrefix;
    }

    public void setSeaShipmentPrefix(String seaShipmentPrefix) {
        this.seaShipmentPrefix = seaShipmentPrefix;
    }

    public String getSeaShipmentSuffix() {
        return seaShipmentSuffix;
    }

    public void setSeaShipmentSuffix(String seaShipmentSuffix) {
        this.seaShipmentSuffix = seaShipmentSuffix;
    }

    public String getAirShipmentPrefix() {
        return airShipmentPrefix;
    }

    public void setAirShipmentPrefix(String airShipmentPrefix) {
        this.airShipmentPrefix = airShipmentPrefix;
    }

    public String getAirShipmentSuffix() {
        return airShipmentSuffix;
    }

    public void setAirShipmentSuffix(String airShipmentSuffix) {
        this.airShipmentSuffix = airShipmentSuffix;
    }

    public String getLandShipmentPrefix() {
        return landShipmentPrefix;
    }

    public String getRfqPrefix() {
        return rfqPrefix;
    }

    public void setRfqPrefix(String rfqPrefix) {
        this.rfqPrefix = rfqPrefix;
    }

    public String getRfqSuffix() {
        return rfqSuffix;
    }

    public void setRfqSuffix(String rfqSuffix) {
        this.rfqSuffix = rfqSuffix;
    }

    public void setLandShipmentPrefix(String landShipmentPrefix) {
        this.landShipmentPrefix = landShipmentPrefix;
    }

    public String getLandShipmentSuffix() {
        return landShipmentSuffix;
    }

    public void setLandShipmentSuffix(String landShipmentSuffix) {
        this.landShipmentSuffix = landShipmentSuffix;
    }

    public Set<PublicHolidayRule> getPublicHolidayRules() {
        return publicHolidayRules;
    }

    public void setPublicHolidayRules(Set<PublicHolidayRule> publicHolidayRules) {
        this.publicHolidayRules = publicHolidayRules;
    }

    public boolean isAutoGenerateShippingRefsAtOrderLevel() {
        return autoGenerateShippingRefsAtOrderLevel;
    }

    public void setAutoGenerateShippingRefsAtOrderLevel(boolean autoGenerateShippingRefsAtOrderLevel) {
        this.autoGenerateShippingRefsAtOrderLevel = autoGenerateShippingRefsAtOrderLevel;
    }

    public boolean isOrgUnitFilter() {
        return orgUnitFilter;
    }

    public void setOrgUnitFilter(boolean orgUnitFilter) {
        this.orgUnitFilter = orgUnitFilter;
    }

    public Integer getShippingReferenceInfix() {
        return shippingReferenceInfix;
    }

    public void setShippingReferenceInfix(Integer shippingReferenceInfix) {
        this.shippingReferenceInfix = shippingReferenceInfix;
    }

    public String getLogoInUse() {
        return logoInUse;
    }

    public void setLogoInUse(String logoInUse) {
        this.logoInUse = logoInUse;
    }

    public NonBusinessDayRecalculationType getNonBusinessDayRecalculationType() {
        return nonBusinessDayRecalculationType;
    }

    public void setNonBusinessDayRecalculationType(NonBusinessDayRecalculationType nonBusinessDayRecalculationType) {
        this.nonBusinessDayRecalculationType = nonBusinessDayRecalculationType;
    }

    public Currency getCurrency() {
        return currency;
    }

    public void setCurrency(Currency localCurrency) {
        this.currency = localCurrency;
    }

    public String getHostUrl() {
        return hostUrl;
    }

    public void setHostUrl(String hostUrl) {
        this.hostUrl = hostUrl;
    }

    public String getShippingReferenceCriteria() {
        return shippingReferenceCriteria;
    }

    public void setShippingReferenceCriteria(String shippingReferenceCriteria) {
        this.shippingReferenceCriteria = shippingReferenceCriteria;
    }

    public ExternalReferenceKeyUniqueType getExternalReferenceKeyUniqueType() {
        return externalReferenceKeyUniqueType;
    }

    public void setExternalReferenceKeyUniqueType(ExternalReferenceKeyUniqueType externalReferenceKeyUniqueType) {
        this.externalReferenceKeyUniqueType = externalReferenceKeyUniqueType;
    }

    public boolean isOrderPrefixToSupplierCode() {
        return orderPrefixToSupplierCode;
    }

    public void setOrderPrefixToSupplierCode(boolean orderPrefixToSupplierCode) {
        this.orderPrefixToSupplierCode = orderPrefixToSupplierCode;
    }

    public OrderReferenceGenerator getOrderReferenceGenerator() {
        return orderReferenceGenerator;
    }

    public void setOrderReferenceGenerator(OrderReferenceGenerator orderReferenceGenerator) {
        this.orderReferenceGenerator = orderReferenceGenerator;
    }

    public String getInvoicePrefix() {
        return invoicePrefix;
    }

    public void setInvoicePrefix(String invoicePrefix) {
        this.invoicePrefix = invoicePrefix;
    }

    public String getInvoiceSuffix() {
        return invoiceSuffix;
    }

    public void setInvoiceSuffix(String invoiceSuffix) {
        this.invoiceSuffix = invoiceSuffix;
    }

    public boolean isAppendMonth() {
        return appendMonth;
    }

    public void setAppendMonth(boolean appendMonth) {
        this.appendMonth = appendMonth;
    }

    public boolean isAppendYear() {
        return appendYear;
    }

    public void setAppendYear(boolean appendYear) {
        this.appendYear = appendYear;
    }

    public boolean isUniqueShippingReference() {
        return uniqueShippingReference;
    }

    public void setUniqueShippingReference(boolean uniqueShippingReference) {
        this.uniqueShippingReference = uniqueShippingReference;
    }
}