<?php

namespace Sabre\ContextChange\Structs;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ContextChangeRQ Structs
 * @subpackage Structs
 */
class ContextChangeRQ extends AbstractStructBase
{
    /**
     * The Version
     * Meta informations extracted from the WSDL
     * - fixed: 2.0.3
     * - use: required
     * @var string
     */
    public $Version;
    /**
     * The ChangeAAA
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\ContextChange\Structs\ChangeAAA
     */
    public $ChangeAAA;
    /**
     * The ChangeDuty
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\ContextChange\Structs\ChangeDuty
     */
    public $ChangeDuty;
    /**
     * The ChangePartition
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\ContextChange\Structs\ChangePartition
     */
    public $ChangePartition;
    /**
     * The OverSign
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * @var \Sabre\ContextChange\Structs\OverSign
     */
    public $OverSign;
    /**
     * The ReturnHostCommand
     * Meta informations extracted from the WSDL
     * - use: optional
     * @var bool
     */
    public $ReturnHostCommand;
    /**
     * The TimeStamp
     * Meta informations extracted from the WSDL
     * - use: optional
     * @var string
     */
    public $TimeStamp;
    /**
     * Constructor method for ContextChangeRQ
     * @uses ContextChangeRQ::setVersion()
     * @uses ContextChangeRQ::setChangeAAA()
     * @uses ContextChangeRQ::setChangeDuty()
     * @uses ContextChangeRQ::setChangePartition()
     * @uses ContextChangeRQ::setOverSign()
     * @uses ContextChangeRQ::setReturnHostCommand()
     * @uses ContextChangeRQ::setTimeStamp()
     * @param string $version
     * @param \Sabre\ContextChange\Structs\ChangeAAA $changeAAA
     * @param \Sabre\ContextChange\Structs\ChangeDuty $changeDuty
     * @param \Sabre\ContextChange\Structs\ChangePartition $changePartition
     * @param \Sabre\ContextChange\Structs\OverSign $overSign
     * @param bool $returnHostCommand
     * @param string $timeStamp
     */
    public function __construct($version = null, \Sabre\ContextChange\Structs\ChangeAAA $changeAAA = null, \Sabre\ContextChange\Structs\ChangeDuty $changeDuty = null, \Sabre\ContextChange\Structs\ChangePartition $changePartition = null, \Sabre\ContextChange\Structs\OverSign $overSign = null, $returnHostCommand = null, $timeStamp = null)
    {
        $this
            ->setVersion($version)
            ->setChangeAAA($changeAAA)
            ->setChangeDuty($changeDuty)
            ->setChangePartition($changePartition)
            ->setOverSign($overSign)
            ->setReturnHostCommand($returnHostCommand)
            ->setTimeStamp($timeStamp);
    }
    /**
     * Get Version value
     * @return string
     */
    public function getVersion()
    {
        return $this->Version;
    }
    /**
     * Set Version value
     * @param string $version
     * @return \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    public function setVersion($version = null)
    {
        $this->Version = $version;
        return $this;
    }
    /**
     * Get ChangeAAA value
     * @return \Sabre\ContextChange\Structs\ChangeAAA|null
     */
    public function getChangeAAA()
    {
        return $this->ChangeAAA;
    }
    /**
     * Set ChangeAAA value
     * @param \Sabre\ContextChange\Structs\ChangeAAA $changeAAA
     * @return \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    public function setChangeAAA(\Sabre\ContextChange\Structs\ChangeAAA $changeAAA = null)
    {
        $this->ChangeAAA = $changeAAA;
        return $this;
    }
    /**
     * Get ChangeDuty value
     * @return \Sabre\ContextChange\Structs\ChangeDuty|null
     */
    public function getChangeDuty()
    {
        return $this->ChangeDuty;
    }
    /**
     * Set ChangeDuty value
     * @param \Sabre\ContextChange\Structs\ChangeDuty $changeDuty
     * @return \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    public function setChangeDuty(\Sabre\ContextChange\Structs\ChangeDuty $changeDuty = null)
    {
        $this->ChangeDuty = $changeDuty;
        return $this;
    }
    /**
     * Get ChangePartition value
     * @return \Sabre\ContextChange\Structs\ChangePartition|null
     */
    public function getChangePartition()
    {
        return $this->ChangePartition;
    }
    /**
     * Set ChangePartition value
     * @param \Sabre\ContextChange\Structs\ChangePartition $changePartition
     * @return \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    public function setChangePartition(\Sabre\ContextChange\Structs\ChangePartition $changePartition = null)
    {
        $this->ChangePartition = $changePartition;
        return $this;
    }
    /**
     * Get OverSign value
     * @return \Sabre\ContextChange\Structs\OverSign|null
     */
    public function getOverSign()
    {
        return $this->OverSign;
    }
    /**
     * Set OverSign value
     * @param \Sabre\ContextChange\Structs\OverSign $overSign
     * @return \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    public function setOverSign(\Sabre\ContextChange\Structs\OverSign $overSign = null)
    {
        $this->OverSign = $overSign;
        return $this;
    }
    /**
     * Get ReturnHostCommand value
     * @return bool|null
     */
    public function getReturnHostCommand()
    {
        return $this->ReturnHostCommand;
    }
    /**
     * Set ReturnHostCommand value
     * @param bool $returnHostCommand
     * @return \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    public function setReturnHostCommand($returnHostCommand = null)
    {
        $this->ReturnHostCommand = $returnHostCommand;
        return $this;
    }
    /**
     * Get TimeStamp value
     * @return string|null
     */
    public function getTimeStamp()
    {
        return $this->TimeStamp;
    }
    /**
     * Set TimeStamp value
     * @param string $timeStamp
     * @return \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    public function setTimeStamp($timeStamp = null)
    {
        $this->TimeStamp = $timeStamp;
        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 \Sabre\ContextChange\Structs\ContextChangeRQ
     */
    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__;
    }
}
