<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CustomRecordTypeSublists StructType
 * @subpackage Structs
 */
class CustomRecordTypeSublists extends AbstractStructBase
{
    /**
     * The recordSearch
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $recordSearch;
    /**
     * The recordDescr
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $recordDescr;
    /**
     * The recordDescrLanguageValueList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\LanguageValueList
     */
    public $recordDescrLanguageValueList;
    /**
     * The recordTab
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $recordTab;
    /**
     * The recordId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $recordId;
    /**
     * Constructor method for CustomRecordTypeSublists
     * @uses CustomRecordTypeSublists::setRecordSearch()
     * @uses CustomRecordTypeSublists::setRecordDescr()
     * @uses CustomRecordTypeSublists::setRecordDescrLanguageValueList()
     * @uses CustomRecordTypeSublists::setRecordTab()
     * @uses CustomRecordTypeSublists::setRecordId()
     * @param \StructType\RecordRef $recordSearch
     * @param string $recordDescr
     * @param \StructType\LanguageValueList $recordDescrLanguageValueList
     * @param \StructType\RecordRef $recordTab
     * @param string $recordId
     */
    public function __construct(\StructType\RecordRef $recordSearch = null, $recordDescr = null, \StructType\LanguageValueList $recordDescrLanguageValueList = null, \StructType\RecordRef $recordTab = null, $recordId = null)
    {
        $this
            ->setRecordSearch($recordSearch)
            ->setRecordDescr($recordDescr)
            ->setRecordDescrLanguageValueList($recordDescrLanguageValueList)
            ->setRecordTab($recordTab)
            ->setRecordId($recordId);
    }
    /**
     * Get recordSearch value
     * @return \StructType\RecordRef|null
     */
    public function getRecordSearch()
    {
        return $this->recordSearch;
    }
    /**
     * Set recordSearch value
     * @param \StructType\RecordRef $recordSearch
     * @return \StructType\CustomRecordTypeSublists
     */
    public function setRecordSearch(\StructType\RecordRef $recordSearch = null)
    {
        $this->recordSearch = $recordSearch;
        return $this;
    }
    /**
     * Get recordDescr value
     * @return string|null
     */
    public function getRecordDescr()
    {
        return $this->recordDescr;
    }
    /**
     * Set recordDescr value
     * @param string $recordDescr
     * @return \StructType\CustomRecordTypeSublists
     */
    public function setRecordDescr($recordDescr = null)
    {
        // validation for constraint: string
        if (!is_null($recordDescr) && !is_string($recordDescr)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($recordDescr, true), gettype($recordDescr)), __LINE__);
        }
        $this->recordDescr = $recordDescr;
        return $this;
    }
    /**
     * Get recordDescrLanguageValueList value
     * @return \StructType\LanguageValueList|null
     */
    public function getRecordDescrLanguageValueList()
    {
        return $this->recordDescrLanguageValueList;
    }
    /**
     * Set recordDescrLanguageValueList value
     * @param \StructType\LanguageValueList $recordDescrLanguageValueList
     * @return \StructType\CustomRecordTypeSublists
     */
    public function setRecordDescrLanguageValueList(\StructType\LanguageValueList $recordDescrLanguageValueList = null)
    {
        $this->recordDescrLanguageValueList = $recordDescrLanguageValueList;
        return $this;
    }
    /**
     * Get recordTab value
     * @return \StructType\RecordRef|null
     */
    public function getRecordTab()
    {
        return $this->recordTab;
    }
    /**
     * Set recordTab value
     * @param \StructType\RecordRef $recordTab
     * @return \StructType\CustomRecordTypeSublists
     */
    public function setRecordTab(\StructType\RecordRef $recordTab = null)
    {
        $this->recordTab = $recordTab;
        return $this;
    }
    /**
     * Get recordId value
     * @return string|null
     */
    public function getRecordId()
    {
        return $this->recordId;
    }
    /**
     * Set recordId value
     * @param string $recordId
     * @return \StructType\CustomRecordTypeSublists
     */
    public function setRecordId($recordId = null)
    {
        // validation for constraint: string
        if (!is_null($recordId) && !is_string($recordId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($recordId, true), gettype($recordId)), __LINE__);
        }
        $this->recordId = $recordId;
        return $this;
    }
}
