<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for BizAction.Foundation.RulesOverview.RuleSystem StructType
 * @subpackage Structs
 */
class BizAction_Foundation_RulesOverview_RuleSystem extends AnyEntity
{
    /**
     * The CoreRuleEntityName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CoreRuleEntityName;
    /**
     * The Items
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\RecordSetOfBizAction_Foundation_RulesOverview_RuleSet
     */
    public $Items;
    /**
     * The Name
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Name;
    /**
     * The RuleSystemName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RuleSystemName;
    /**
     * The ServiceName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ServiceName;
    /**
     * The Title
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Title;
    /**
     * Constructor method for BizAction.Foundation.RulesOverview.RuleSystem
     * @uses BizAction_Foundation_RulesOverview_RuleSystem::setCoreRuleEntityName()
     * @uses BizAction_Foundation_RulesOverview_RuleSystem::setItems()
     * @uses BizAction_Foundation_RulesOverview_RuleSystem::setName()
     * @uses BizAction_Foundation_RulesOverview_RuleSystem::setRuleSystemName()
     * @uses BizAction_Foundation_RulesOverview_RuleSystem::setServiceName()
     * @uses BizAction_Foundation_RulesOverview_RuleSystem::setTitle()
     * @param string $coreRuleEntityName
     * @param \patest\StructType\RecordSetOfBizAction_Foundation_RulesOverview_RuleSet $items
     * @param string $name
     * @param string $ruleSystemName
     * @param string $serviceName
     * @param string $title
     */
    public function __construct($coreRuleEntityName = null, \patest\StructType\RecordSetOfBizAction_Foundation_RulesOverview_RuleSet $items = null, $name = null, $ruleSystemName = null, $serviceName = null, $title = null)
    {
        $this
            ->setCoreRuleEntityName($coreRuleEntityName)
            ->setItems($items)
            ->setName($name)
            ->setRuleSystemName($ruleSystemName)
            ->setServiceName($serviceName)
            ->setTitle($title);
    }
    /**
     * Get CoreRuleEntityName 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 getCoreRuleEntityName()
    {
        return isset($this->CoreRuleEntityName) ? $this->CoreRuleEntityName : null;
    }
    /**
     * Set CoreRuleEntityName 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 $coreRuleEntityName
     * @return \patest\StructType\BizAction_Foundation_RulesOverview_RuleSystem
     */
    public function setCoreRuleEntityName($coreRuleEntityName = null)
    {
        // validation for constraint: string
        if (!is_null($coreRuleEntityName) && !is_string($coreRuleEntityName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($coreRuleEntityName, true), gettype($coreRuleEntityName)), __LINE__);
        }
        if (is_null($coreRuleEntityName) || (is_array($coreRuleEntityName) && empty($coreRuleEntityName))) {
            unset($this->CoreRuleEntityName);
        } else {
            $this->CoreRuleEntityName = $coreRuleEntityName;
        }
        return $this;
    }
    /**
     * Get Items 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\RecordSetOfBizAction_Foundation_RulesOverview_RuleSet|null
     */
    public function getItems()
    {
        return isset($this->Items) ? $this->Items : null;
    }
    /**
     * Set Items 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\RecordSetOfBizAction_Foundation_RulesOverview_RuleSet $items
     * @return \patest\StructType\BizAction_Foundation_RulesOverview_RuleSystem
     */
    public function setItems(\patest\StructType\RecordSetOfBizAction_Foundation_RulesOverview_RuleSet $items = null)
    {
        if (is_null($items) || (is_array($items) && empty($items))) {
            unset($this->Items);
        } else {
            $this->Items = $items;
        }
        return $this;
    }
    /**
     * Get Name 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 getName()
    {
        return isset($this->Name) ? $this->Name : null;
    }
    /**
     * Set Name 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 $name
     * @return \patest\StructType\BizAction_Foundation_RulesOverview_RuleSystem
     */
    public function setName($name = null)
    {
        // validation for constraint: string
        if (!is_null($name) && !is_string($name)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($name, true), gettype($name)), __LINE__);
        }
        if (is_null($name) || (is_array($name) && empty($name))) {
            unset($this->Name);
        } else {
            $this->Name = $name;
        }
        return $this;
    }
    /**
     * Get RuleSystemName 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 getRuleSystemName()
    {
        return isset($this->RuleSystemName) ? $this->RuleSystemName : null;
    }
    /**
     * Set RuleSystemName 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 $ruleSystemName
     * @return \patest\StructType\BizAction_Foundation_RulesOverview_RuleSystem
     */
    public function setRuleSystemName($ruleSystemName = null)
    {
        // validation for constraint: string
        if (!is_null($ruleSystemName) && !is_string($ruleSystemName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($ruleSystemName, true), gettype($ruleSystemName)), __LINE__);
        }
        if (is_null($ruleSystemName) || (is_array($ruleSystemName) && empty($ruleSystemName))) {
            unset($this->RuleSystemName);
        } else {
            $this->RuleSystemName = $ruleSystemName;
        }
        return $this;
    }
    /**
     * Get ServiceName 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 getServiceName()
    {
        return isset($this->ServiceName) ? $this->ServiceName : null;
    }
    /**
     * Set ServiceName 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 $serviceName
     * @return \patest\StructType\BizAction_Foundation_RulesOverview_RuleSystem
     */
    public function setServiceName($serviceName = null)
    {
        // validation for constraint: string
        if (!is_null($serviceName) && !is_string($serviceName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($serviceName, true), gettype($serviceName)), __LINE__);
        }
        if (is_null($serviceName) || (is_array($serviceName) && empty($serviceName))) {
            unset($this->ServiceName);
        } else {
            $this->ServiceName = $serviceName;
        }
        return $this;
    }
    /**
     * Get Title 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 getTitle()
    {
        return isset($this->Title) ? $this->Title : null;
    }
    /**
     * Set Title 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 $title
     * @return \patest\StructType\BizAction_Foundation_RulesOverview_RuleSystem
     */
    public function setTitle($title = null)
    {
        // validation for constraint: string
        if (!is_null($title) && !is_string($title)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($title, true), gettype($title)), __LINE__);
        }
        if (is_null($title) || (is_array($title) && empty($title))) {
            unset($this->Title);
        } else {
            $this->Title = $title;
        }
        return $this;
    }
}
