/**
 * ProductOrderInfo.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
 */

package com.style24.core.biz.checkout.base;

public class ProductOrderInfo  implements java.io.Serializable, org.apache.axis.encoding.AnyContentType {
    private com.style24.core.biz.checkout.base.CancelInfo cancelInfo;

    private com.style24.core.biz.checkout.base.DecisionHoldbackInfo decisionHoldbackInfo;

    private com.style24.core.biz.checkout.base.Delivery delivery;

    private com.style24.core.biz.checkout.base.ExchangeInfo exchangeInfo;

    private com.style24.core.biz.checkout.base.Order order;

    private com.style24.core.biz.checkout.base.ProductOrder productOrder;

    private com.style24.core.biz.checkout.base.ReturnInfo returnInfo;

    private org.apache.axis.message.MessageElement [] _any;

    public ProductOrderInfo() {
    }

    public ProductOrderInfo(
           com.style24.core.biz.checkout.base.CancelInfo cancelInfo,
           com.style24.core.biz.checkout.base.DecisionHoldbackInfo decisionHoldbackInfo,
           com.style24.core.biz.checkout.base.Delivery delivery,
           com.style24.core.biz.checkout.base.ExchangeInfo exchangeInfo,
           com.style24.core.biz.checkout.base.Order order,
           com.style24.core.biz.checkout.base.ProductOrder productOrder,
           com.style24.core.biz.checkout.base.ReturnInfo returnInfo,
           org.apache.axis.message.MessageElement [] _any) {
           this.cancelInfo = cancelInfo;
           this.decisionHoldbackInfo = decisionHoldbackInfo;
           this.delivery = delivery;
           this.exchangeInfo = exchangeInfo;
           this.order = order;
           this.productOrder = productOrder;
           this.returnInfo = returnInfo;
           this._any = _any;
    }


    /**
     * Gets the cancelInfo value for this ProductOrderInfo.
     * 
     * @return cancelInfo
     */
    public com.style24.core.biz.checkout.base.CancelInfo getCancelInfo() {
        return cancelInfo;
    }


    /**
     * Sets the cancelInfo value for this ProductOrderInfo.
     * 
     * @param cancelInfo
     */
    public void setCancelInfo(com.style24.core.biz.checkout.base.CancelInfo cancelInfo) {
        this.cancelInfo = cancelInfo;
    }


    /**
     * Gets the decisionHoldbackInfo value for this ProductOrderInfo.
     * 
     * @return decisionHoldbackInfo
     */
    public com.style24.core.biz.checkout.base.DecisionHoldbackInfo getDecisionHoldbackInfo() {
        return decisionHoldbackInfo;
    }


    /**
     * Sets the decisionHoldbackInfo value for this ProductOrderInfo.
     * 
     * @param decisionHoldbackInfo
     */
    public void setDecisionHoldbackInfo(com.style24.core.biz.checkout.base.DecisionHoldbackInfo decisionHoldbackInfo) {
        this.decisionHoldbackInfo = decisionHoldbackInfo;
    }


    /**
     * Gets the delivery value for this ProductOrderInfo.
     * 
     * @return delivery
     */
    public com.style24.core.biz.checkout.base.Delivery getDelivery() {
        return delivery;
    }


    /**
     * Sets the delivery value for this ProductOrderInfo.
     * 
     * @param delivery
     */
    public void setDelivery(com.style24.core.biz.checkout.base.Delivery delivery) {
        this.delivery = delivery;
    }


    /**
     * Gets the exchangeInfo value for this ProductOrderInfo.
     * 
     * @return exchangeInfo
     */
    public com.style24.core.biz.checkout.base.ExchangeInfo getExchangeInfo() {
        return exchangeInfo;
    }


    /**
     * Sets the exchangeInfo value for this ProductOrderInfo.
     * 
     * @param exchangeInfo
     */
    public void setExchangeInfo(com.style24.core.biz.checkout.base.ExchangeInfo exchangeInfo) {
        this.exchangeInfo = exchangeInfo;
    }


    /**
     * Gets the order value for this ProductOrderInfo.
     * 
     * @return order
     */
    public com.style24.core.biz.checkout.base.Order getOrder() {
        return order;
    }


    /**
     * Sets the order value for this ProductOrderInfo.
     * 
     * @param order
     */
    public void setOrder(com.style24.core.biz.checkout.base.Order order) {
        this.order = order;
    }


    /**
     * Gets the productOrder value for this ProductOrderInfo.
     * 
     * @return productOrder
     */
    public com.style24.core.biz.checkout.base.ProductOrder getProductOrder() {
        return productOrder;
    }


    /**
     * Sets the productOrder value for this ProductOrderInfo.
     * 
     * @param productOrder
     */
    public void setProductOrder(com.style24.core.biz.checkout.base.ProductOrder productOrder) {
        this.productOrder = productOrder;
    }


    /**
     * Gets the returnInfo value for this ProductOrderInfo.
     * 
     * @return returnInfo
     */
    public com.style24.core.biz.checkout.base.ReturnInfo getReturnInfo() {
        return returnInfo;
    }


    /**
     * Sets the returnInfo value for this ProductOrderInfo.
     * 
     * @param returnInfo
     */
    public void setReturnInfo(com.style24.core.biz.checkout.base.ReturnInfo returnInfo) {
        this.returnInfo = returnInfo;
    }


    /**
     * Gets the _any value for this ProductOrderInfo.
     * 
     * @return _any
     */
    public org.apache.axis.message.MessageElement [] get_any() {
        return _any;
    }


    /**
     * Sets the _any value for this ProductOrderInfo.
     * 
     * @param _any
     */
    public void set_any(org.apache.axis.message.MessageElement [] _any) {
        this._any = _any;
    }

    private Object __equalsCalc = null;
    public synchronized boolean equals(Object obj) {
        if (!(obj instanceof ProductOrderInfo)) return false;
        ProductOrderInfo other = (ProductOrderInfo) obj;
        if (obj == null) return false;
        if (this == obj) return true;
        if (__equalsCalc != null) {
            return (__equalsCalc == obj);
        }
        __equalsCalc = obj;
        boolean _equals;
        _equals = true &&
            ((this.cancelInfo==null && other.getCancelInfo()==null) ||
             (this.cancelInfo!=null &&
              this.cancelInfo.equals(other.getCancelInfo()))) &&
            ((this.decisionHoldbackInfo==null && other.getDecisionHoldbackInfo()==null) ||
             (this.decisionHoldbackInfo!=null &&
              this.decisionHoldbackInfo.equals(other.getDecisionHoldbackInfo()))) &&
            ((this.delivery==null && other.getDelivery()==null) ||
             (this.delivery!=null &&
              this.delivery.equals(other.getDelivery()))) &&
            ((this.exchangeInfo==null && other.getExchangeInfo()==null) ||
             (this.exchangeInfo!=null &&
              this.exchangeInfo.equals(other.getExchangeInfo()))) &&
            ((this.order==null && other.getOrder()==null) ||
             (this.order!=null &&
              this.order.equals(other.getOrder()))) &&
            ((this.productOrder==null && other.getProductOrder()==null) ||
             (this.productOrder!=null &&
              this.productOrder.equals(other.getProductOrder()))) &&
            ((this.returnInfo==null && other.getReturnInfo()==null) ||
             (this.returnInfo!=null &&
              this.returnInfo.equals(other.getReturnInfo()))) &&
            ((this._any==null && other.get_any()==null) ||
             (this._any!=null &&
              java.util.Arrays.equals(this._any, other.get_any())));
        __equalsCalc = null;
        return _equals;
    }

    private boolean __hashCodeCalc = false;
    public synchronized int hashCode() {
        if (__hashCodeCalc) {
            return 0;
        }
        __hashCodeCalc = true;
        int _hashCode = 1;
        if (getCancelInfo() != null) {
            _hashCode += getCancelInfo().hashCode();
        }
        if (getDecisionHoldbackInfo() != null) {
            _hashCode += getDecisionHoldbackInfo().hashCode();
        }
        if (getDelivery() != null) {
            _hashCode += getDelivery().hashCode();
        }
        if (getExchangeInfo() != null) {
            _hashCode += getExchangeInfo().hashCode();
        }
        if (getOrder() != null) {
            _hashCode += getOrder().hashCode();
        }
        if (getProductOrder() != null) {
            _hashCode += getProductOrder().hashCode();
        }
        if (getReturnInfo() != null) {
            _hashCode += getReturnInfo().hashCode();
        }
        if (get_any() != null) {
            for (int i=0;
                 i<java.lang.reflect.Array.getLength(get_any());
                 i++) {
                Object obj = java.lang.reflect.Array.get(get_any(), i);
                if (obj != null &&
                    !obj.getClass().isArray()) {
                    _hashCode += obj.hashCode();
                }
            }
        }
        __hashCodeCalc = false;
        return _hashCode;
    }

    // Type metadata
    private static org.apache.axis.description.TypeDesc typeDesc =
        new org.apache.axis.description.TypeDesc(ProductOrderInfo.class, true);

    static {
        typeDesc.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "productOrderInfo"));
        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("cancelInfo");
        elemField.setXmlName(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "CancelInfo"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "cancelInfo"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("decisionHoldbackInfo");
        elemField.setXmlName(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "DecisionHoldbackInfo"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "decisionHoldbackInfo"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("delivery");
        elemField.setXmlName(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "Delivery"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "delivery"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("exchangeInfo");
        elemField.setXmlName(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "ExchangeInfo"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "exchangeInfo"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("order");
        elemField.setXmlName(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "Order"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "order"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("productOrder");
        elemField.setXmlName(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "ProductOrder"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "productOrder"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("returnInfo");
        elemField.setXmlName(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "ReturnInfo"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://base.checkout.platform.nhncorp.com/", "returnInfo"));
        elemField.setMinOccurs(0);
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
    }

    /**
     * Return type metadata object
     */
    public static org.apache.axis.description.TypeDesc getTypeDesc() {
        return typeDesc;
    }

    /**
     * Get Custom Serializer
     */
    public static org.apache.axis.encoding.Serializer getSerializer(
           String mechType,
           Class _javaType,
           javax.xml.namespace.QName _xmlType) {
        return
          new  org.apache.axis.encoding.ser.BeanSerializer(
            _javaType, _xmlType, typeDesc);
    }

    /**
     * Get Custom Deserializer
     */
    public static org.apache.axis.encoding.Deserializer getDeserializer(
           String mechType,
           Class _javaType,
           javax.xml.namespace.QName _xmlType) {
        return 
          new  org.apache.axis.encoding.ser.BeanDeserializer(
            _javaType, _xmlType, typeDesc);
    }

}
