<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GetDocumentDesignerData-Response StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:GetDocumentDesignerData-Response
 * @subpackage Structs
 */
class GetDocumentDesignerData_Response extends ExtensibleDataContract
{
    /**
     * The DocumentTypeAuxDataItemsInfo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfPrintableItemInfo
     */
    public $DocumentTypeAuxDataItemsInfo;
    /**
     * The DocumentTypePrintableItemInfo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\PrintableItemInfo
     */
    public $DocumentTypePrintableItemInfo;
    /**
     * The PrintableDocument
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Printing_PrintableDocument
     */
    public $PrintableDocument;
    /**
     * The PrintableDocumentType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Printing_PrintableDocumentType
     */
    public $PrintableDocumentType;
    /**
     * The SupportedCultures
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfScreenParts_SupportedCulture
     */
    public $SupportedCultures;
    /**
     * The SupportedDocumentSizes
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfPrinting_DocumentSize
     */
    public $SupportedDocumentSizes;
    /**
     * The SupportedPrinterGroups
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfPrinting_PrinterGroup
     */
    public $SupportedPrinterGroups;
    /**
     * The SupportedPrinterTypes
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfPrinting_PrinterType
     */
    public $SupportedPrinterTypes;
    /**
     * The SupportedPrinters
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\RecordSetOfAnyEntity
     */
    public $SupportedPrinters;
    /**
     * Constructor method for GetDocumentDesignerData-Response
     * @uses GetDocumentDesignerData_Response::setDocumentTypeAuxDataItemsInfo()
     * @uses GetDocumentDesignerData_Response::setDocumentTypePrintableItemInfo()
     * @uses GetDocumentDesignerData_Response::setPrintableDocument()
     * @uses GetDocumentDesignerData_Response::setPrintableDocumentType()
     * @uses GetDocumentDesignerData_Response::setSupportedCultures()
     * @uses GetDocumentDesignerData_Response::setSupportedDocumentSizes()
     * @uses GetDocumentDesignerData_Response::setSupportedPrinterGroups()
     * @uses GetDocumentDesignerData_Response::setSupportedPrinterTypes()
     * @uses GetDocumentDesignerData_Response::setSupportedPrinters()
     * @param \patest\ArrayType\ArrayOfPrintableItemInfo $documentTypeAuxDataItemsInfo
     * @param \patest\StructType\PrintableItemInfo $documentTypePrintableItemInfo
     * @param \patest\StructType\Printing_PrintableDocument $printableDocument
     * @param \patest\StructType\Printing_PrintableDocumentType $printableDocumentType
     * @param \patest\ArrayType\ArrayOfScreenParts_SupportedCulture $supportedCultures
     * @param \patest\ArrayType\ArrayOfPrinting_DocumentSize $supportedDocumentSizes
     * @param \patest\ArrayType\ArrayOfPrinting_PrinterGroup $supportedPrinterGroups
     * @param \patest\ArrayType\ArrayOfPrinting_PrinterType $supportedPrinterTypes
     * @param \patest\StructType\RecordSetOfAnyEntity $supportedPrinters
     */
    public function __construct(\patest\ArrayType\ArrayOfPrintableItemInfo $documentTypeAuxDataItemsInfo = null, \patest\StructType\PrintableItemInfo $documentTypePrintableItemInfo = null, \patest\StructType\Printing_PrintableDocument $printableDocument = null, \patest\StructType\Printing_PrintableDocumentType $printableDocumentType = null, \patest\ArrayType\ArrayOfScreenParts_SupportedCulture $supportedCultures = null, \patest\ArrayType\ArrayOfPrinting_DocumentSize $supportedDocumentSizes = null, \patest\ArrayType\ArrayOfPrinting_PrinterGroup $supportedPrinterGroups = null, \patest\ArrayType\ArrayOfPrinting_PrinterType $supportedPrinterTypes = null, \patest\StructType\RecordSetOfAnyEntity $supportedPrinters = null)
    {
        $this
            ->setDocumentTypeAuxDataItemsInfo($documentTypeAuxDataItemsInfo)
            ->setDocumentTypePrintableItemInfo($documentTypePrintableItemInfo)
            ->setPrintableDocument($printableDocument)
            ->setPrintableDocumentType($printableDocumentType)
            ->setSupportedCultures($supportedCultures)
            ->setSupportedDocumentSizes($supportedDocumentSizes)
            ->setSupportedPrinterGroups($supportedPrinterGroups)
            ->setSupportedPrinterTypes($supportedPrinterTypes)
            ->setSupportedPrinters($supportedPrinters);
    }
    /**
     * Get DocumentTypeAuxDataItemsInfo 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 \patest\ArrayType\ArrayOfPrintableItemInfo|null
     */
    public function getDocumentTypeAuxDataItemsInfo()
    {
        return isset($this->DocumentTypeAuxDataItemsInfo) ? $this->DocumentTypeAuxDataItemsInfo : null;
    }
    /**
     * Set DocumentTypeAuxDataItemsInfo 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 \patest\ArrayType\ArrayOfPrintableItemInfo $documentTypeAuxDataItemsInfo
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setDocumentTypeAuxDataItemsInfo(\patest\ArrayType\ArrayOfPrintableItemInfo $documentTypeAuxDataItemsInfo = null)
    {
        if (is_null($documentTypeAuxDataItemsInfo) || (is_array($documentTypeAuxDataItemsInfo) && empty($documentTypeAuxDataItemsInfo))) {
            unset($this->DocumentTypeAuxDataItemsInfo);
        } else {
            $this->DocumentTypeAuxDataItemsInfo = $documentTypeAuxDataItemsInfo;
        }
        return $this;
    }
    /**
     * Get DocumentTypePrintableItemInfo 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 \patest\StructType\PrintableItemInfo|null
     */
    public function getDocumentTypePrintableItemInfo()
    {
        return isset($this->DocumentTypePrintableItemInfo) ? $this->DocumentTypePrintableItemInfo : null;
    }
    /**
     * Set DocumentTypePrintableItemInfo 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 \patest\StructType\PrintableItemInfo $documentTypePrintableItemInfo
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setDocumentTypePrintableItemInfo(\patest\StructType\PrintableItemInfo $documentTypePrintableItemInfo = null)
    {
        if (is_null($documentTypePrintableItemInfo) || (is_array($documentTypePrintableItemInfo) && empty($documentTypePrintableItemInfo))) {
            unset($this->DocumentTypePrintableItemInfo);
        } else {
            $this->DocumentTypePrintableItemInfo = $documentTypePrintableItemInfo;
        }
        return $this;
    }
    /**
     * Get PrintableDocument 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 \patest\StructType\Printing_PrintableDocument|null
     */
    public function getPrintableDocument()
    {
        return isset($this->PrintableDocument) ? $this->PrintableDocument : null;
    }
    /**
     * Set PrintableDocument 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 \patest\StructType\Printing_PrintableDocument $printableDocument
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setPrintableDocument(\patest\StructType\Printing_PrintableDocument $printableDocument = null)
    {
        if (is_null($printableDocument) || (is_array($printableDocument) && empty($printableDocument))) {
            unset($this->PrintableDocument);
        } else {
            $this->PrintableDocument = $printableDocument;
        }
        return $this;
    }
    /**
     * Get PrintableDocumentType 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 \patest\StructType\Printing_PrintableDocumentType|null
     */
    public function getPrintableDocumentType()
    {
        return isset($this->PrintableDocumentType) ? $this->PrintableDocumentType : null;
    }
    /**
     * Set PrintableDocumentType 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 \patest\StructType\Printing_PrintableDocumentType $printableDocumentType
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setPrintableDocumentType(\patest\StructType\Printing_PrintableDocumentType $printableDocumentType = null)
    {
        if (is_null($printableDocumentType) || (is_array($printableDocumentType) && empty($printableDocumentType))) {
            unset($this->PrintableDocumentType);
        } else {
            $this->PrintableDocumentType = $printableDocumentType;
        }
        return $this;
    }
    /**
     * Get SupportedCultures 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 \patest\ArrayType\ArrayOfScreenParts_SupportedCulture|null
     */
    public function getSupportedCultures()
    {
        return isset($this->SupportedCultures) ? $this->SupportedCultures : null;
    }
    /**
     * Set SupportedCultures 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 \patest\ArrayType\ArrayOfScreenParts_SupportedCulture $supportedCultures
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setSupportedCultures(\patest\ArrayType\ArrayOfScreenParts_SupportedCulture $supportedCultures = null)
    {
        if (is_null($supportedCultures) || (is_array($supportedCultures) && empty($supportedCultures))) {
            unset($this->SupportedCultures);
        } else {
            $this->SupportedCultures = $supportedCultures;
        }
        return $this;
    }
    /**
     * Get SupportedDocumentSizes 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 \patest\ArrayType\ArrayOfPrinting_DocumentSize|null
     */
    public function getSupportedDocumentSizes()
    {
        return isset($this->SupportedDocumentSizes) ? $this->SupportedDocumentSizes : null;
    }
    /**
     * Set SupportedDocumentSizes 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 \patest\ArrayType\ArrayOfPrinting_DocumentSize $supportedDocumentSizes
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setSupportedDocumentSizes(\patest\ArrayType\ArrayOfPrinting_DocumentSize $supportedDocumentSizes = null)
    {
        if (is_null($supportedDocumentSizes) || (is_array($supportedDocumentSizes) && empty($supportedDocumentSizes))) {
            unset($this->SupportedDocumentSizes);
        } else {
            $this->SupportedDocumentSizes = $supportedDocumentSizes;
        }
        return $this;
    }
    /**
     * Get SupportedPrinterGroups 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 \patest\ArrayType\ArrayOfPrinting_PrinterGroup|null
     */
    public function getSupportedPrinterGroups()
    {
        return isset($this->SupportedPrinterGroups) ? $this->SupportedPrinterGroups : null;
    }
    /**
     * Set SupportedPrinterGroups 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 \patest\ArrayType\ArrayOfPrinting_PrinterGroup $supportedPrinterGroups
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setSupportedPrinterGroups(\patest\ArrayType\ArrayOfPrinting_PrinterGroup $supportedPrinterGroups = null)
    {
        if (is_null($supportedPrinterGroups) || (is_array($supportedPrinterGroups) && empty($supportedPrinterGroups))) {
            unset($this->SupportedPrinterGroups);
        } else {
            $this->SupportedPrinterGroups = $supportedPrinterGroups;
        }
        return $this;
    }
    /**
     * Get SupportedPrinterTypes 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 \patest\ArrayType\ArrayOfPrinting_PrinterType|null
     */
    public function getSupportedPrinterTypes()
    {
        return isset($this->SupportedPrinterTypes) ? $this->SupportedPrinterTypes : null;
    }
    /**
     * Set SupportedPrinterTypes 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 \patest\ArrayType\ArrayOfPrinting_PrinterType $supportedPrinterTypes
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setSupportedPrinterTypes(\patest\ArrayType\ArrayOfPrinting_PrinterType $supportedPrinterTypes = null)
    {
        if (is_null($supportedPrinterTypes) || (is_array($supportedPrinterTypes) && empty($supportedPrinterTypes))) {
            unset($this->SupportedPrinterTypes);
        } else {
            $this->SupportedPrinterTypes = $supportedPrinterTypes;
        }
        return $this;
    }
    /**
     * Get SupportedPrinters 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 \patest\StructType\RecordSetOfAnyEntity|null
     */
    public function getSupportedPrinters()
    {
        return isset($this->SupportedPrinters) ? $this->SupportedPrinters : null;
    }
    /**
     * Set SupportedPrinters 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 \patest\StructType\RecordSetOfAnyEntity $supportedPrinters
     * @return \patest\StructType\GetDocumentDesignerData_Response
     */
    public function setSupportedPrinters(\patest\StructType\RecordSetOfAnyEntity $supportedPrinters = null)
    {
        if (is_null($supportedPrinters) || (is_array($supportedPrinters) && empty($supportedPrinters))) {
            unset($this->SupportedPrinters);
        } else {
            $this->SupportedPrinters = $supportedPrinters;
        }
        return $this;
    }
}
