<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SiteCategorySearchRowBasic StructType
 * @subpackage Structs
 */
class SiteCategorySearchRowBasic extends SearchRowBasic
{
    /**
     * The dateViewed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $dateViewed;
    /**
     * The description
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $description;
    /**
     * The excludeFromSitemap
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $excludeFromSitemap;
    /**
     * The externalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $externalId;
    /**
     * The fullName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $fullName;
    /**
     * The hidden
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $hidden;
    /**
     * The hits
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $hits;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The longDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $longDescription;
    /**
     * The name
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $name;
    /**
     * The pageTitle
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $pageTitle;
    /**
     * The sitemapPriority
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $sitemapPriority;
    /**
     * The urlComponent
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $urlComponent;
    /**
     * Constructor method for SiteCategorySearchRowBasic
     * @uses SiteCategorySearchRowBasic::setDateViewed()
     * @uses SiteCategorySearchRowBasic::setDescription()
     * @uses SiteCategorySearchRowBasic::setExcludeFromSitemap()
     * @uses SiteCategorySearchRowBasic::setExternalId()
     * @uses SiteCategorySearchRowBasic::setFullName()
     * @uses SiteCategorySearchRowBasic::setHidden()
     * @uses SiteCategorySearchRowBasic::setHits()
     * @uses SiteCategorySearchRowBasic::setInternalId()
     * @uses SiteCategorySearchRowBasic::setLongDescription()
     * @uses SiteCategorySearchRowBasic::setName()
     * @uses SiteCategorySearchRowBasic::setPageTitle()
     * @uses SiteCategorySearchRowBasic::setSitemapPriority()
     * @uses SiteCategorySearchRowBasic::setUrlComponent()
     * @param \StructType\SearchColumnDateField[] $dateViewed
     * @param \StructType\SearchColumnStringField[] $description
     * @param \StructType\SearchColumnBooleanField[] $excludeFromSitemap
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnStringField[] $fullName
     * @param \StructType\SearchColumnBooleanField[] $hidden
     * @param \StructType\SearchColumnLongField[] $hits
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnStringField[] $longDescription
     * @param \StructType\SearchColumnStringField[] $name
     * @param \StructType\SearchColumnStringField[] $pageTitle
     * @param \StructType\SearchColumnEnumSelectField[] $sitemapPriority
     * @param \StructType\SearchColumnStringField[] $urlComponent
     */
    public function __construct(array $dateViewed = array(), array $description = array(), array $excludeFromSitemap = array(), array $externalId = array(), array $fullName = array(), array $hidden = array(), array $hits = array(), array $internalId = array(), array $longDescription = array(), array $name = array(), array $pageTitle = array(), array $sitemapPriority = array(), array $urlComponent = array())
    {
        $this
            ->setDateViewed($dateViewed)
            ->setDescription($description)
            ->setExcludeFromSitemap($excludeFromSitemap)
            ->setExternalId($externalId)
            ->setFullName($fullName)
            ->setHidden($hidden)
            ->setHits($hits)
            ->setInternalId($internalId)
            ->setLongDescription($longDescription)
            ->setName($name)
            ->setPageTitle($pageTitle)
            ->setSitemapPriority($sitemapPriority)
            ->setUrlComponent($urlComponent);
    }
    /**
     * Get dateViewed value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getDateViewed()
    {
        return $this->dateViewed;
    }
    /**
     * This method is responsible for validating the values passed to the setDateViewed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDateViewed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDateViewedForArrayConstraintsFromSetDateViewed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicDateViewedItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicDateViewedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicDateViewedItem) ? get_class($siteCategorySearchRowBasicDateViewedItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicDateViewedItem), var_export($siteCategorySearchRowBasicDateViewedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The dateViewed property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set dateViewed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $dateViewed
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setDateViewed(array $dateViewed = array())
    {
        // validation for constraint: array
        if ('' !== ($dateViewedArrayErrorMessage = self::validateDateViewedForArrayConstraintsFromSetDateViewed($dateViewed))) {
            throw new \InvalidArgumentException($dateViewedArrayErrorMessage, __LINE__);
        }
        $this->dateViewed = $dateViewed;
        return $this;
    }
    /**
     * Add item to dateViewed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToDateViewed(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The dateViewed property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->dateViewed[] = $item;
        return $this;
    }
    /**
     * Get description value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getDescription()
    {
        return $this->description;
    }
    /**
     * This method is responsible for validating the values passed to the setDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDescriptionForArrayConstraintsFromSetDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicDescriptionItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicDescriptionItem) ? get_class($siteCategorySearchRowBasicDescriptionItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicDescriptionItem), var_export($siteCategorySearchRowBasicDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The description property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set description value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $description
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setDescription(array $description = array())
    {
        // validation for constraint: array
        if ('' !== ($descriptionArrayErrorMessage = self::validateDescriptionForArrayConstraintsFromSetDescription($description))) {
            throw new \InvalidArgumentException($descriptionArrayErrorMessage, __LINE__);
        }
        $this->description = $description;
        return $this;
    }
    /**
     * Add item to description value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The description property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->description[] = $item;
        return $this;
    }
    /**
     * Get excludeFromSitemap value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getExcludeFromSitemap()
    {
        return $this->excludeFromSitemap;
    }
    /**
     * This method is responsible for validating the values passed to the setExcludeFromSitemap method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExcludeFromSitemap method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExcludeFromSitemapForArrayConstraintsFromSetExcludeFromSitemap(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicExcludeFromSitemapItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicExcludeFromSitemapItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicExcludeFromSitemapItem) ? get_class($siteCategorySearchRowBasicExcludeFromSitemapItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicExcludeFromSitemapItem), var_export($siteCategorySearchRowBasicExcludeFromSitemapItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The excludeFromSitemap property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set excludeFromSitemap value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $excludeFromSitemap
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setExcludeFromSitemap(array $excludeFromSitemap = array())
    {
        // validation for constraint: array
        if ('' !== ($excludeFromSitemapArrayErrorMessage = self::validateExcludeFromSitemapForArrayConstraintsFromSetExcludeFromSitemap($excludeFromSitemap))) {
            throw new \InvalidArgumentException($excludeFromSitemapArrayErrorMessage, __LINE__);
        }
        $this->excludeFromSitemap = $excludeFromSitemap;
        return $this;
    }
    /**
     * Add item to excludeFromSitemap value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToExcludeFromSitemap(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The excludeFromSitemap property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->excludeFromSitemap[] = $item;
        return $this;
    }
    /**
     * Get externalId value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getExternalId()
    {
        return $this->externalId;
    }
    /**
     * This method is responsible for validating the values passed to the setExternalId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExternalId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExternalIdForArrayConstraintsFromSetExternalId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicExternalIdItem) ? get_class($siteCategorySearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicExternalIdItem), var_export($siteCategorySearchRowBasicExternalIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The externalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set externalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setExternalId(array $externalId = array())
    {
        // validation for constraint: array
        if ('' !== ($externalIdArrayErrorMessage = self::validateExternalIdForArrayConstraintsFromSetExternalId($externalId))) {
            throw new \InvalidArgumentException($externalIdArrayErrorMessage, __LINE__);
        }
        $this->externalId = $externalId;
        return $this;
    }
    /**
     * Add item to externalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToExternalId(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The externalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->externalId[] = $item;
        return $this;
    }
    /**
     * Get fullName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getFullName()
    {
        return $this->fullName;
    }
    /**
     * This method is responsible for validating the values passed to the setFullName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFullName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFullNameForArrayConstraintsFromSetFullName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicFullNameItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicFullNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicFullNameItem) ? get_class($siteCategorySearchRowBasicFullNameItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicFullNameItem), var_export($siteCategorySearchRowBasicFullNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fullName property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set fullName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $fullName
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setFullName(array $fullName = array())
    {
        // validation for constraint: array
        if ('' !== ($fullNameArrayErrorMessage = self::validateFullNameForArrayConstraintsFromSetFullName($fullName))) {
            throw new \InvalidArgumentException($fullNameArrayErrorMessage, __LINE__);
        }
        $this->fullName = $fullName;
        return $this;
    }
    /**
     * Add item to fullName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToFullName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The fullName property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->fullName[] = $item;
        return $this;
    }
    /**
     * Get hidden value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getHidden()
    {
        return $this->hidden;
    }
    /**
     * This method is responsible for validating the values passed to the setHidden method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHidden method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHiddenForArrayConstraintsFromSetHidden(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicHiddenItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicHiddenItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicHiddenItem) ? get_class($siteCategorySearchRowBasicHiddenItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicHiddenItem), var_export($siteCategorySearchRowBasicHiddenItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The hidden property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set hidden value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $hidden
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setHidden(array $hidden = array())
    {
        // validation for constraint: array
        if ('' !== ($hiddenArrayErrorMessage = self::validateHiddenForArrayConstraintsFromSetHidden($hidden))) {
            throw new \InvalidArgumentException($hiddenArrayErrorMessage, __LINE__);
        }
        $this->hidden = $hidden;
        return $this;
    }
    /**
     * Add item to hidden value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToHidden(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The hidden property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->hidden[] = $item;
        return $this;
    }
    /**
     * Get hits value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getHits()
    {
        return $this->hits;
    }
    /**
     * This method is responsible for validating the values passed to the setHits method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHits method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHitsForArrayConstraintsFromSetHits(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicHitsItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicHitsItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicHitsItem) ? get_class($siteCategorySearchRowBasicHitsItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicHitsItem), var_export($siteCategorySearchRowBasicHitsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The hits property can only contain items of type \StructType\SearchColumnLongField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set hits value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $hits
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setHits(array $hits = array())
    {
        // validation for constraint: array
        if ('' !== ($hitsArrayErrorMessage = self::validateHitsForArrayConstraintsFromSetHits($hits))) {
            throw new \InvalidArgumentException($hitsArrayErrorMessage, __LINE__);
        }
        $this->hits = $hits;
        return $this;
    }
    /**
     * Add item to hits value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToHits(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The hits property can only contain items of type \StructType\SearchColumnLongField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->hits[] = $item;
        return $this;
    }
    /**
     * Get internalId value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getInternalId()
    {
        return $this->internalId;
    }
    /**
     * This method is responsible for validating the values passed to the setInternalId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInternalId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInternalIdForArrayConstraintsFromSetInternalId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicInternalIdItem) ? get_class($siteCategorySearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicInternalIdItem), var_export($siteCategorySearchRowBasicInternalIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The internalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set internalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setInternalId(array $internalId = array())
    {
        // validation for constraint: array
        if ('' !== ($internalIdArrayErrorMessage = self::validateInternalIdForArrayConstraintsFromSetInternalId($internalId))) {
            throw new \InvalidArgumentException($internalIdArrayErrorMessage, __LINE__);
        }
        $this->internalId = $internalId;
        return $this;
    }
    /**
     * Add item to internalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToInternalId(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The internalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->internalId[] = $item;
        return $this;
    }
    /**
     * Get longDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getLongDescription()
    {
        return $this->longDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setLongDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLongDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLongDescriptionForArrayConstraintsFromSetLongDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicLongDescriptionItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicLongDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicLongDescriptionItem) ? get_class($siteCategorySearchRowBasicLongDescriptionItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicLongDescriptionItem), var_export($siteCategorySearchRowBasicLongDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The longDescription property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set longDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $longDescription
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setLongDescription(array $longDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($longDescriptionArrayErrorMessage = self::validateLongDescriptionForArrayConstraintsFromSetLongDescription($longDescription))) {
            throw new \InvalidArgumentException($longDescriptionArrayErrorMessage, __LINE__);
        }
        $this->longDescription = $longDescription;
        return $this;
    }
    /**
     * Add item to longDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToLongDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The longDescription property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->longDescription[] = $item;
        return $this;
    }
    /**
     * Get name value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * This method is responsible for validating the values passed to the setName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNameForArrayConstraintsFromSetName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicNameItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicNameItem) ? get_class($siteCategorySearchRowBasicNameItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicNameItem), var_export($siteCategorySearchRowBasicNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The name property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set name value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $name
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setName(array $name = array())
    {
        // validation for constraint: array
        if ('' !== ($nameArrayErrorMessage = self::validateNameForArrayConstraintsFromSetName($name))) {
            throw new \InvalidArgumentException($nameArrayErrorMessage, __LINE__);
        }
        $this->name = $name;
        return $this;
    }
    /**
     * Add item to name value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The name property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->name[] = $item;
        return $this;
    }
    /**
     * Get pageTitle value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPageTitle()
    {
        return $this->pageTitle;
    }
    /**
     * This method is responsible for validating the values passed to the setPageTitle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPageTitle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePageTitleForArrayConstraintsFromSetPageTitle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicPageTitleItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicPageTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicPageTitleItem) ? get_class($siteCategorySearchRowBasicPageTitleItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicPageTitleItem), var_export($siteCategorySearchRowBasicPageTitleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pageTitle property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set pageTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $pageTitle
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setPageTitle(array $pageTitle = array())
    {
        // validation for constraint: array
        if ('' !== ($pageTitleArrayErrorMessage = self::validatePageTitleForArrayConstraintsFromSetPageTitle($pageTitle))) {
            throw new \InvalidArgumentException($pageTitleArrayErrorMessage, __LINE__);
        }
        $this->pageTitle = $pageTitle;
        return $this;
    }
    /**
     * Add item to pageTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToPageTitle(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The pageTitle property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->pageTitle[] = $item;
        return $this;
    }
    /**
     * Get sitemapPriority value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getSitemapPriority()
    {
        return $this->sitemapPriority;
    }
    /**
     * This method is responsible for validating the values passed to the setSitemapPriority method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSitemapPriority method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSitemapPriorityForArrayConstraintsFromSetSitemapPriority(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicSitemapPriorityItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicSitemapPriorityItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicSitemapPriorityItem) ? get_class($siteCategorySearchRowBasicSitemapPriorityItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicSitemapPriorityItem), var_export($siteCategorySearchRowBasicSitemapPriorityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sitemapPriority property can only contain items of type \StructType\SearchColumnEnumSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set sitemapPriority value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $sitemapPriority
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setSitemapPriority(array $sitemapPriority = array())
    {
        // validation for constraint: array
        if ('' !== ($sitemapPriorityArrayErrorMessage = self::validateSitemapPriorityForArrayConstraintsFromSetSitemapPriority($sitemapPriority))) {
            throw new \InvalidArgumentException($sitemapPriorityArrayErrorMessage, __LINE__);
        }
        $this->sitemapPriority = $sitemapPriority;
        return $this;
    }
    /**
     * Add item to sitemapPriority value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToSitemapPriority(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The sitemapPriority property can only contain items of type \StructType\SearchColumnEnumSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->sitemapPriority[] = $item;
        return $this;
    }
    /**
     * Get urlComponent value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getUrlComponent()
    {
        return $this->urlComponent;
    }
    /**
     * This method is responsible for validating the values passed to the setUrlComponent method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUrlComponent method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUrlComponentForArrayConstraintsFromSetUrlComponent(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $siteCategorySearchRowBasicUrlComponentItem) {
            // validation for constraint: itemType
            if (!$siteCategorySearchRowBasicUrlComponentItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($siteCategorySearchRowBasicUrlComponentItem) ? get_class($siteCategorySearchRowBasicUrlComponentItem) : sprintf('%s(%s)', gettype($siteCategorySearchRowBasicUrlComponentItem), var_export($siteCategorySearchRowBasicUrlComponentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The urlComponent property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set urlComponent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $urlComponent
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function setUrlComponent(array $urlComponent = array())
    {
        // validation for constraint: array
        if ('' !== ($urlComponentArrayErrorMessage = self::validateUrlComponentForArrayConstraintsFromSetUrlComponent($urlComponent))) {
            throw new \InvalidArgumentException($urlComponentArrayErrorMessage, __LINE__);
        }
        $this->urlComponent = $urlComponent;
        return $this;
    }
    /**
     * Add item to urlComponent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\SiteCategorySearchRowBasic
     */
    public function addToUrlComponent(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The urlComponent property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->urlComponent[] = $item;
        return $this;
    }
}
