ClientConfig.java

package com.tradecloud.domain.configuration;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.configuration.clearing.za.SARSImportConfig;
import com.tradecloud.domain.configuration.product.ProductClientConfig;
import com.tradecloud.domain.configuration.supplier.SupplierClientConfig;
import com.tradecloud.domain.export.ExportConfig;
import com.tradecloud.domain.model.elcordermanagement.ElcConfig;
import org.hibernate.annotations.ForeignKey;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.List;

/**
 * Parent entity for client configuration. This class encapsulates various
 * client configuration classes that in turn encapsulate their specific
 * configurations.
 */
@Entity
@Table(name = "clientconfig")
@Access(AccessType.FIELD)
@NamedQueries({
        @NamedQuery(name = "clientConfig.findStateClientConfig", query = "select c.stateClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findAgentClientConfig", query = "select c.agentClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findContainerClientConfig", query = "select c.containerClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findTariffingClientConfig", query = "select c.tariffingClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findGlobalClientConfig", query = "select c.globalClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findShipmentClientConfig", query = "select c.shipmentClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findCostingClientConfig", query = "select c.costingClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findDocumentClientConfig", query = "select c.documentClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findConsignmentClientConfig", query = "select c.consignmentClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findExchangeRateClientConfig", query = "select c.exchangeRateClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findSupplierClientConfig", query = "select c.supplierClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findProductClientConfig", query = "select c.productClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findSABSSlidingScaleClientConfig", query = "select c.sabsSlidingScaleClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findSABSTariffClientConfig", query = "select c.sabsTariffClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findItemsAndOrdersClientConfig", query = "select c.itemsAndOrdersClientConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findExportConfig", query = "select c.exportconfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findReportMainConfig", query = "select c.reportMainConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findElcClientConfig", query = "select c.elcConfig from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findExchangeRateOrganisationalUnitTier", query =
                "select e.stdOrganisationalUnitTier from ClientConfig c left join c.exchangeRateClientConfig e"),
        @NamedQuery(name = "clientConfig.findAutoEmailConfigForReport", query = "select c.autoEmailReportConfigList " +
                "from ClientConfig c where reportType= :reportType"),
        @NamedQuery(name = "clientConfig.findAllAutoEmailConfigForReport", query = "select c.autoEmailReportConfigList from ClientConfig c"),
        @NamedQuery(name = "clientConfig.findLetterOfCreditClientConfig", query = "select c.letterOfCreditClientConfig from ClientConfig c")})
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ClientConfig")
public class ClientConfig extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_globalclientconfig")
    @XmlElement(name = "GlobalClientConfig")
    private GlobalClientConfig globalClientConfig = new GlobalClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_agentclientconfig")
    @XmlElement(name = "AgentClientConfig")
    private AgentClientConfig agentClientConfig = new AgentClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_itemsandorders")
    @XmlElement(name = "ItemsAndOrdersClientConfig")
    private ItemsAndOrdersClientConfig itemsAndOrdersClientConfig = new ItemsAndOrdersClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_sabsslidingscaleclientconfig")
    @XmlElement(name = "SABSSlidingScaleClientConfig")
    private SABSSlidingScaleClientConfig sabsSlidingScaleClientConfig = new SABSSlidingScaleClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_sabstariffclientconfig")
    @XmlElement(name = "SABSTariffClientConfig")
    private SABSTariffClientConfig sabsTariffClientConfig = new SABSTariffClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_supplierclientconfig")
    @XmlElement(name = "SupplierClientConfig")
    private SupplierClientConfig supplierClientConfig = new SupplierClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_productclientconfig")
    @XmlElement(name = "ProductClientConfig")
    private ProductClientConfig productClientConfig = new ProductClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_stateclientconfig")
    @XmlElement(name = "StateClientConfig")
    private StateClientConfig stateClientConfig = new StateClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_tariffingclientconfig")
    @XmlElement(name = "TariffingClientConfig")
    private TariffingClientConfig tariffingClientConfig = new TariffingClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_costingclientconfig")
    @XmlElement(name = "CostingClientConfig")
    private CostingClientConfig costingClientConfig = new CostingClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_consignmentclientconfig")
    @XmlElement(name = "ConsignmentClientConfig")
    private ConsignmentClientConfig consignmentClientConfig = new ConsignmentClientConfig();

    @OneToOne
    @ForeignKey(name = "fk_shipmentclientconfig")
    @XmlElement(name = "ShipmentClientConfig")
    private ShipmentClientConfig shipmentClientConfig = new ShipmentClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_documentclientconfig")
    @XmlElement(name = "DocumentClientConfig")
    private DocumentClientConfig documentClientConfig = new DocumentClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_containerclientconfig")
    @XmlElement(name = "ContainerClientConfig")
    private ContainerClientConfig containerClientConfig = new ContainerClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_exchangerateclientconfig")
    @XmlElement(name = "ExchangeRateClientConfig")
    private ExchangeRateClientConfig exchangeRateClientConfig = new ExchangeRateClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_elcconfig")
    @XmlElement(name = "ElcConfig")
    private ElcConfig elcConfig = new ElcConfig();

    @OneToMany(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_orderleadtime")
    @XmlElement(name = "OrderLeadTime")
    private List<OrderLeadTime> orderLeadTime = new ArrayList<OrderLeadTime>(0);

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_letterofcreditclientconfig")
    @XmlElement(name = "LetterOfCreditClientConfig")
    private LetterOfCreditClientConfig letterOfCreditClientConfig = new LetterOfCreditClientConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_exportconfig")
    @XmlElement(name = "ExportConfig")
    private ExportConfig exportconfig = new ExportConfig();

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_reportmainconfig")
    @XmlElement(name = "ReportMainConfig")
    private ReportMainConfig reportMainConfig = new ReportMainConfig();

    @OneToMany(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_autoemailreportconfig")
    @XmlElement(name = "AutoEmailReportConfig")
    private List<AutoEmailReportConfig> autoEmailReportConfigList = new ArrayList<>(0);

    @OneToMany(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_clientconfig_specialrequirement")
    @XmlElement(name = "SpecialRequirementConfig")
    private List<SpecialRequirementConfig> specialRequirementConfigList = new ArrayList<>(0);

    @OneToOne(cascade = CascadeType.ALL)
    @ForeignKey(name = "fk_paymentConfig")
    @XmlElement(name = "PaymentConfig")
    private PaymentConfig paymentConfig;

    @OneToMany(cascade = CascadeType.ALL)
    private List<SARSImportConfig> sarsImportConfig;

    public ClientConfig() {
    }

    public AgentClientConfig getAgentClientConfig() {
        return agentClientConfig;
    }

    public void setAgentClientConfig(AgentClientConfig agentClientConfig) {
        this.agentClientConfig = agentClientConfig;
    }

    public ItemsAndOrdersClientConfig getItemsAndOrdersClientConfig() {
        return itemsAndOrdersClientConfig;
    }

    public void setItemsAndOrdersClientConfig(ItemsAndOrdersClientConfig itemsAndOrdersClientConfig) {
        this.itemsAndOrdersClientConfig = itemsAndOrdersClientConfig;
    }

    public GlobalClientConfig getGlobalClientConfig() {
        return globalClientConfig;
    }

    public void setGlobalClientConfig(GlobalClientConfig globalClientConfig) {
        this.globalClientConfig = globalClientConfig;
    }

    public SupplierClientConfig getSupplierClientConfig() {
        return supplierClientConfig;
    }

    public void setSupplierClientConfig(SupplierClientConfig supplierClientConfig) {
        this.supplierClientConfig = supplierClientConfig;
    }

    public ProductClientConfig getProductClientConfig() {
        return productClientConfig;
    }

    public void setProductClientConfig(ProductClientConfig productClientConfig) {
        this.productClientConfig = productClientConfig;
    }

    public CostingClientConfig getCostingClientConfig() {
        return costingClientConfig;
    }

    public void setCostingClientConfig(CostingClientConfig costingClientConfig) {
        this.costingClientConfig = costingClientConfig;
    }

    public ConsignmentClientConfig getConsignmentClientConfig() {
        return consignmentClientConfig;
    }

    public void setConsignmentClientConfig(ConsignmentClientConfig consignmentClientConfig) {
        this.consignmentClientConfig = consignmentClientConfig;
    }

    public ShipmentClientConfig getShipmentClientConfig() {
        return shipmentClientConfig;
    }

    public void setShipmentClientConfig(ShipmentClientConfig shipmentClientConfig) {
        this.shipmentClientConfig = shipmentClientConfig;
    }

    public DocumentClientConfig getDocumentClientConfig() {
        return documentClientConfig;
    }

    public void setDocumentClientConfig(DocumentClientConfig documentClientConfig) {
        this.documentClientConfig = documentClientConfig;
    }

    public ContainerClientConfig getContainerClientConfig() {
        return containerClientConfig;
    }

    public void setContainerClientConfig(ContainerClientConfig containerClientConfig) {
        this.containerClientConfig = containerClientConfig;
    }

    public ExchangeRateClientConfig getExchangeRateClientConfig() {
        return exchangeRateClientConfig;
    }

    public void setExchangeRateClientConfig(ExchangeRateClientConfig exchangeRateClientConfig) {
        this.exchangeRateClientConfig = exchangeRateClientConfig;
    }

    public StateClientConfig getStateClientConfig() {
        return stateClientConfig;
    }

    public void setStateClientConfig(StateClientConfig stateClientConfig) {
        this.stateClientConfig = stateClientConfig;
    }

    public List<OrderLeadTime> getOrderLeadTime() {
        return orderLeadTime;
    }

    public void setOrderLeadTime(List<OrderLeadTime> orderLeadTime) {
        this.orderLeadTime = orderLeadTime;
    }

    public ElcConfig getElcConfig() {
        return elcConfig;
    }

    public void setElcConfig(ElcConfig elcConfig) {
        this.elcConfig = elcConfig;
    }

    public TariffingClientConfig getTariffingClientConfig() {
        return tariffingClientConfig;
    }

    public void setTariffingClientConfig(TariffingClientConfig tariffingClientConfig) {
        this.tariffingClientConfig = tariffingClientConfig;
    }

    public LetterOfCreditClientConfig getLetterOfCreditClientConfig() {
        return letterOfCreditClientConfig;
    }

    public void setLetterOfCreditClientConfig(LetterOfCreditClientConfig letterOfCreditClientConfig) {
        this.letterOfCreditClientConfig = letterOfCreditClientConfig;
    }

    public ExportConfig getExportconfig() {
        return exportconfig;
    }

    public void setExportconfig(ExportConfig exportconfig) {
        this.exportconfig = exportconfig;
    }

    public SABSSlidingScaleClientConfig getSabsSlidingScaleClientConfig() {
        return sabsSlidingScaleClientConfig;
    }

    public void setSabsSlidingScaleClientConfig(SABSSlidingScaleClientConfig sabsSlidingScaleClientConfig) {
        this.sabsSlidingScaleClientConfig = sabsSlidingScaleClientConfig;
    }

    public SABSTariffClientConfig getSabsTariffClientConfig() {
        return sabsTariffClientConfig;
    }

    public void setSabsTariffClientConfig(SABSTariffClientConfig sabsTariffClientConfig) {
        this.sabsTariffClientConfig = sabsTariffClientConfig;
    }

    public ReportMainConfig getReportMainConfig() {
        return reportMainConfig;
    }

    public void setReportMainConfig(ReportMainConfig reportMainConfig) {
        this.reportMainConfig = reportMainConfig;
    }

    public List<AutoEmailReportConfig> getAutoEmailReportConfigList() {
        return autoEmailReportConfigList;
    }

    public void setAutoEmailReportConfigList(List<AutoEmailReportConfig> autoEmailReportConfigList) {
        this.autoEmailReportConfigList = autoEmailReportConfigList;
    }

    public List<SpecialRequirementConfig> getSpecialRequirementConfigList() {
        return specialRequirementConfigList;
    }

    public void setSpecialRequirementConfigList(List<SpecialRequirementConfig> specialRequirementConfigList) {
        this.specialRequirementConfigList = specialRequirementConfigList;
    }

    public PaymentConfig getPaymentConfig() {
        return paymentConfig;
    }

    public void setPaymentConfig(PaymentConfig paymentConfig) {
        this.paymentConfig = paymentConfig;
    }

    public List<SARSImportConfig> getSarsImportConfig() {
        return sarsImportConfig;
    }

    public void setSarsImportConfig(List<SARSImportConfig> sarsImportConfig) {
        this.sarsImportConfig = sarsImportConfig;
    }

    public List<SARSImportConfig> getActiveSARSImportConfig() {
        return PersistenceBase.getActiveList(sarsImportConfig);
    }
}