<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for DocumentAttachment StructType
 * @subpackage Structs
 */
class DocumentAttachment extends AbstractStructBase
{
    /**
     * The id
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var int
     */
    public $id;
    /**
     * The parentId
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var int
     */
    public $parentId;
    /**
     * The creationDate
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $creationDate;
    /**
     * The description
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $description;
    /**
     * The author
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $author;
    /**
     * The type
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var int
     */
    public $type;
    /**
     * The state
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var int
     */
    public $state;
    /**
     * The nonRepudiationId
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $nonRepudiationId;
    /**
     * The fileSize
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var int
     */
    public $fileSize;
    /**
     * The fileName
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $fileName;
    /**
     * The csv
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $csv;
    /**
     * The attId
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $attId;
    /**
     * The detachedSigned
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $detachedSigned;
    /**
     * The formatSignature
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var int
     */
    public $formatSignature;
    /**
     * The mimeType
     * Meta informations extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $mimeType;
    /**
     * Constructor method for DocumentAttachment
     * @uses DocumentAttachment::setId()
     * @uses DocumentAttachment::setParentId()
     * @uses DocumentAttachment::setCreationDate()
     * @uses DocumentAttachment::setDescription()
     * @uses DocumentAttachment::setAuthor()
     * @uses DocumentAttachment::setType()
     * @uses DocumentAttachment::setState()
     * @uses DocumentAttachment::setNonRepudiationId()
     * @uses DocumentAttachment::setFileSize()
     * @uses DocumentAttachment::setFileName()
     * @uses DocumentAttachment::setCsv()
     * @uses DocumentAttachment::setAttId()
     * @uses DocumentAttachment::setDetachedSigned()
     * @uses DocumentAttachment::setFormatSignature()
     * @uses DocumentAttachment::setMimeType()
     * @param int $id
     * @param int $parentId
     * @param string $creationDate
     * @param string $description
     * @param string $author
     * @param int $type
     * @param int $state
     * @param string $nonRepudiationId
     * @param int $fileSize
     * @param string $fileName
     * @param string $csv
     * @param string $attId
     * @param string $detachedSigned
     * @param int $formatSignature
     * @param string $mimeType
     */
    public function __construct($id = null, $parentId = null, $creationDate = null, $description = null, $author = null, $type = null, $state = null, $nonRepudiationId = null, $fileSize = null, $fileName = null, $csv = null, $attId = null, $detachedSigned = null, $formatSignature = null, $mimeType = null)
    {
        $this
            ->setId($id)
            ->setParentId($parentId)
            ->setCreationDate($creationDate)
            ->setDescription($description)
            ->setAuthor($author)
            ->setType($type)
            ->setState($state)
            ->setNonRepudiationId($nonRepudiationId)
            ->setFileSize($fileSize)
            ->setFileName($fileName)
            ->setCsv($csv)
            ->setAttId($attId)
            ->setDetachedSigned($detachedSigned)
            ->setFormatSignature($formatSignature)
            ->setMimeType($mimeType);
    }
    /**
     * Get id value
     * @return int|null
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Set id value
     * @param int $id
     * @return DocumentAttachment
     */
    public function setId($id = null)
    {
        // validation for constraint: int
        if (!is_null($id) && !is_numeric($id)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($id)), __LINE__);
        }
        $this->id = $id;
        return $this;
    }
    /**
     * Get parentId value
     * @return int|null
     */
    public function getParentId()
    {
        return $this->parentId;
    }
    /**
     * Set parentId value
     * @param int $parentId
     * @return DocumentAttachment
     */
    public function setParentId($parentId = null)
    {
        // validation for constraint: int
        if (!is_null($parentId) && !is_numeric($parentId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($parentId)), __LINE__);
        }
        $this->parentId = $parentId;
        return $this;
    }
    /**
     * Get creationDate value
     * @return string|null
     */
    public function getCreationDate()
    {
        return $this->creationDate;
    }
    /**
     * Set creationDate value
     * @param string $creationDate
     * @return DocumentAttachment
     */
    public function setCreationDate($creationDate = null)
    {
        // validation for constraint: string
        if (!is_null($creationDate) && !is_string($creationDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($creationDate)), __LINE__);
        }
        $this->creationDate = $creationDate;
        return $this;
    }
    /**
     * Get description value
     * @return string|null
     */
    public function getDescription()
    {
        return $this->description;
    }
    /**
     * Set description value
     * @param string $description
     * @return DocumentAttachment
     */
    public function setDescription($description = null)
    {
        // validation for constraint: string
        if (!is_null($description) && !is_string($description)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($description)), __LINE__);
        }
        $this->description = $description;
        return $this;
    }
    /**
     * Get author value
     * @return string|null
     */
    public function getAuthor()
    {
        return $this->author;
    }
    /**
     * Set author value
     * @param string $author
     * @return DocumentAttachment
     */
    public function setAuthor($author = null)
    {
        // validation for constraint: string
        if (!is_null($author) && !is_string($author)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($author)), __LINE__);
        }
        $this->author = $author;
        return $this;
    }
    /**
     * Get type value
     * @return int|null
     */
    public function getType()
    {
        return $this->type;
    }
    /**
     * Set type value
     * @param int $type
     * @return DocumentAttachment
     */
    public function setType($type = null)
    {
        // validation for constraint: int
        if (!is_null($type) && !is_numeric($type)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($type)), __LINE__);
        }
        $this->type = $type;
        return $this;
    }
    /**
     * Get state value
     * @return int|null
     */
    public function getState()
    {
        return $this->state;
    }
    /**
     * Set state value
     * @param int $state
     * @return DocumentAttachment
     */
    public function setState($state = null)
    {
        // validation for constraint: int
        if (!is_null($state) && !is_numeric($state)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($state)), __LINE__);
        }
        $this->state = $state;
        return $this;
    }
    /**
     * Get nonRepudiationId value
     * @return string|null
     */
    public function getNonRepudiationId()
    {
        return $this->nonRepudiationId;
    }
    /**
     * Set nonRepudiationId value
     * @param string $nonRepudiationId
     * @return DocumentAttachment
     */
    public function setNonRepudiationId($nonRepudiationId = null)
    {
        // validation for constraint: string
        if (!is_null($nonRepudiationId) && !is_string($nonRepudiationId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($nonRepudiationId)), __LINE__);
        }
        $this->nonRepudiationId = $nonRepudiationId;
        return $this;
    }
    /**
     * Get fileSize value
     * @return int|null
     */
    public function getFileSize()
    {
        return $this->fileSize;
    }
    /**
     * Set fileSize value
     * @param int $fileSize
     * @return DocumentAttachment
     */
    public function setFileSize($fileSize = null)
    {
        // validation for constraint: int
        if (!is_null($fileSize) && !is_numeric($fileSize)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($fileSize)), __LINE__);
        }
        $this->fileSize = $fileSize;
        return $this;
    }
    /**
     * Get fileName value
     * @return string|null
     */
    public function getFileName()
    {
        return $this->fileName;
    }
    /**
     * Set fileName value
     * @param string $fileName
     * @return DocumentAttachment
     */
    public function setFileName($fileName = null)
    {
        // validation for constraint: string
        if (!is_null($fileName) && !is_string($fileName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($fileName)), __LINE__);
        }
        $this->fileName = $fileName;
        return $this;
    }
    /**
     * Get csv value
     * @return string|null
     */
    public function getCsv()
    {
        return $this->csv;
    }
    /**
     * Set csv value
     * @param string $csv
     * @return DocumentAttachment
     */
    public function setCsv($csv = null)
    {
        // validation for constraint: string
        if (!is_null($csv) && !is_string($csv)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($csv)), __LINE__);
        }
        $this->csv = $csv;
        return $this;
    }
    /**
     * Get attId value
     * @return string|null
     */
    public function getAttId()
    {
        return $this->attId;
    }
    /**
     * Set attId value
     * @param string $attId
     * @return DocumentAttachment
     */
    public function setAttId($attId = null)
    {
        // validation for constraint: string
        if (!is_null($attId) && !is_string($attId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($attId)), __LINE__);
        }
        $this->attId = $attId;
        return $this;
    }
    /**
     * Get detachedSigned value
     * @return string|null
     */
    public function getDetachedSigned()
    {
        return $this->detachedSigned;
    }
    /**
     * Set detachedSigned value
     * @param string $detachedSigned
     * @return DocumentAttachment
     */
    public function setDetachedSigned($detachedSigned = null)
    {
        // validation for constraint: string
        if (!is_null($detachedSigned) && !is_string($detachedSigned)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($detachedSigned)), __LINE__);
        }
        $this->detachedSigned = $detachedSigned;
        return $this;
    }
    /**
     * Get formatSignature value
     * @return int|null
     */
    public function getFormatSignature()
    {
        return $this->formatSignature;
    }
    /**
     * Set formatSignature value
     * @param int $formatSignature
     * @return DocumentAttachment
     */
    public function setFormatSignature($formatSignature = null)
    {
        // validation for constraint: int
        if (!is_null($formatSignature) && !is_numeric($formatSignature)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a numeric value, "%s" given', gettype($formatSignature)), __LINE__);
        }
        $this->formatSignature = $formatSignature;
        return $this;
    }
    /**
     * Get mimeType value
     * @return string|null
     */
    public function getMimeType()
    {
        return $this->mimeType;
    }
    /**
     * Set mimeType value
     * @param string $mimeType
     * @return DocumentAttachment
     */
    public function setMimeType($mimeType = null)
    {
        // validation for constraint: string
        if (!is_null($mimeType) && !is_string($mimeType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($mimeType)), __LINE__);
        }
        $this->mimeType = $mimeType;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return DocumentAttachment
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
