<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Document StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:Document
 * @subpackage Structs
 */
class Document extends AbstractStructBase
{
    /**
     * The docInfo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var ArrayOfstring
     */
    public $docInfo;
    /**
     * The documentId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $documentId;
    /**
     * The documentJSon
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $documentJSon;
    /**
     * The documentUuid
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $documentUuid;
    /**
     * Constructor method for Document
     * @uses Document::setDocInfo()
     * @uses Document::setDocumentId()
     * @uses Document::setDocumentJSon()
     * @uses Document::setDocumentUuid()
     * @param ArrayOfstring $docInfo
     * @param string $documentId
     * @param string $documentJSon
     * @param string $documentUuid
     */
    public function __construct(ArrayOfstring $docInfo = null, $documentId = null, $documentJSon = null, $documentUuid = null)
    {
        $this
            ->setDocInfo($docInfo)
            ->setDocumentId($documentId)
            ->setDocumentJSon($documentJSon)
            ->setDocumentUuid($documentUuid);
    }
    /**
     * Get docInfo value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return ArrayOfstring|null
     */
    public function getDocInfo()
    {
        return isset($this->docInfo) ? $this->docInfo : null;
    }
    /**
     * Set docInfo value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param ArrayOfstring $docInfo
     * @return Document
     */
    public function setDocInfo(ArrayOfstring $docInfo = null)
    {
        if (is_null($docInfo) || (is_array($docInfo) && empty($docInfo))) {
            unset($this->docInfo);
        } else {
            $this->docInfo = $docInfo;
        }
        return $this;
    }
    /**
     * Get documentId value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getDocumentId()
    {
        return isset($this->documentId) ? $this->documentId : null;
    }
    /**
     * Set documentId value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $documentId
     * @return Document
     */
    public function setDocumentId($documentId = null)
    {
        if (is_null($documentId) || (is_array($documentId) && empty($documentId))) {
            unset($this->documentId);
        } else {
            $this->documentId = $documentId;
        }
        return $this;
    }
    /**
     * Get documentJSon value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getDocumentJSon()
    {
        return isset($this->documentJSon) ? $this->documentJSon : null;
    }
    /**
     * Set documentJSon value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $documentJSon
     * @return Document
     */
    public function setDocumentJSon($documentJSon = null)
    {
        if (is_null($documentJSon) || (is_array($documentJSon) && empty($documentJSon))) {
            unset($this->documentJSon);
        } else {
            $this->documentJSon = $documentJSon;
        }
        return $this;
    }
    /**
     * Get documentUuid value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getDocumentUuid()
    {
        return isset($this->documentUuid) ? $this->documentUuid : null;
    }
    /**
     * Set documentUuid value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $documentUuid
     * @return Document
     */
    public function setDocumentUuid($documentUuid = null)
    {
        if (is_null($documentUuid) || (is_array($documentUuid) && empty($documentUuid))) {
            unset($this->documentUuid);
        } else {
            $this->documentUuid = $documentUuid;
        }
        return $this;
    }
}
