<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SubscriptionRequestStructure StructType
 * Meta informations extracted from the WSDL
 * - documentation: Type for SIRI Subscription Request.
 * @subpackage Structs
 */
class SubscriptionRequestStructure extends AbstractSubscriptionRequestStructure
{
    /**
     * The ProductionTimetableSubscriptionRequest
     * @var \StructType\ProductionTimetableSubscriptionRequest
     */
    public $ProductionTimetableSubscriptionRequest;
    /**
     * The EstimatedTimetableSubscriptionRequest
     * @var \StructType\EstimatedTimetableSubscriptionStructure
     */
    public $EstimatedTimetableSubscriptionRequest;
    /**
     * The StopTimetableSubscriptionRequest
     * @var \StructType\StopTimetableSubscriptionStructure
     */
    public $StopTimetableSubscriptionRequest;
    /**
     * The StopMonitoringSubscriptionRequest
     * @var \StructType\StopMonitoringSubscriptionStructure
     */
    public $StopMonitoringSubscriptionRequest;
    /**
     * The VehicleMonitoringSubscriptionRequest
     * @var \StructType\VehicleMonitoringSubscriptionStructure
     */
    public $VehicleMonitoringSubscriptionRequest;
    /**
     * The ConnectionTimetableSubscriptionRequest
     * @var \StructType\ConnectionTimetableSubscriptionStructure
     */
    public $ConnectionTimetableSubscriptionRequest;
    /**
     * The ConnectionMonitoringSubscriptionRequest
     * @var \StructType\ConnectionMonitoringSubscriptionRequestStructure
     */
    public $ConnectionMonitoringSubscriptionRequest;
    /**
     * The GeneralMessageSubscriptionRequest
     * @var \StructType\GeneralMessageSubscriptionStructure
     */
    public $GeneralMessageSubscriptionRequest;
    /**
     * The FacilityMonitoringSubscriptionRequest
     * @var \StructType\FacilityMonitoringSubscriptionStructure
     */
    public $FacilityMonitoringSubscriptionRequest;
    /**
     * The SituationExchangeSubscriptionRequest
     * @var \StructType\SituationExchangeSubscriptionStructure
     */
    public $SituationExchangeSubscriptionRequest;
    /**
     * Constructor method for SubscriptionRequestStructure
     * @uses SubscriptionRequestStructure::setProductionTimetableSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setEstimatedTimetableSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setStopTimetableSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setStopMonitoringSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setVehicleMonitoringSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setConnectionTimetableSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setConnectionMonitoringSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setGeneralMessageSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setFacilityMonitoringSubscriptionRequest()
     * @uses SubscriptionRequestStructure::setSituationExchangeSubscriptionRequest()
     * @param \StructType\ProductionTimetableSubscriptionRequest $productionTimetableSubscriptionRequest
     * @param \StructType\EstimatedTimetableSubscriptionStructure $estimatedTimetableSubscriptionRequest
     * @param \StructType\StopTimetableSubscriptionStructure $stopTimetableSubscriptionRequest
     * @param \StructType\StopMonitoringSubscriptionStructure $stopMonitoringSubscriptionRequest
     * @param \StructType\VehicleMonitoringSubscriptionStructure $vehicleMonitoringSubscriptionRequest
     * @param \StructType\ConnectionTimetableSubscriptionStructure $connectionTimetableSubscriptionRequest
     * @param \StructType\ConnectionMonitoringSubscriptionRequestStructure $connectionMonitoringSubscriptionRequest
     * @param \StructType\GeneralMessageSubscriptionStructure $generalMessageSubscriptionRequest
     * @param \StructType\FacilityMonitoringSubscriptionStructure $facilityMonitoringSubscriptionRequest
     * @param \StructType\SituationExchangeSubscriptionStructure $situationExchangeSubscriptionRequest
     */
    public function __construct(\StructType\ProductionTimetableSubscriptionRequest $productionTimetableSubscriptionRequest = null, \StructType\EstimatedTimetableSubscriptionStructure $estimatedTimetableSubscriptionRequest = null, \StructType\StopTimetableSubscriptionStructure $stopTimetableSubscriptionRequest = null, \StructType\StopMonitoringSubscriptionStructure $stopMonitoringSubscriptionRequest = null, \StructType\VehicleMonitoringSubscriptionStructure $vehicleMonitoringSubscriptionRequest = null, \StructType\ConnectionTimetableSubscriptionStructure $connectionTimetableSubscriptionRequest = null, \StructType\ConnectionMonitoringSubscriptionRequestStructure $connectionMonitoringSubscriptionRequest = null, \StructType\GeneralMessageSubscriptionStructure $generalMessageSubscriptionRequest = null, \StructType\FacilityMonitoringSubscriptionStructure $facilityMonitoringSubscriptionRequest = null, \StructType\SituationExchangeSubscriptionStructure $situationExchangeSubscriptionRequest = null)
    {
        $this
            ->setProductionTimetableSubscriptionRequest($productionTimetableSubscriptionRequest)
            ->setEstimatedTimetableSubscriptionRequest($estimatedTimetableSubscriptionRequest)
            ->setStopTimetableSubscriptionRequest($stopTimetableSubscriptionRequest)
            ->setStopMonitoringSubscriptionRequest($stopMonitoringSubscriptionRequest)
            ->setVehicleMonitoringSubscriptionRequest($vehicleMonitoringSubscriptionRequest)
            ->setConnectionTimetableSubscriptionRequest($connectionTimetableSubscriptionRequest)
            ->setConnectionMonitoringSubscriptionRequest($connectionMonitoringSubscriptionRequest)
            ->setGeneralMessageSubscriptionRequest($generalMessageSubscriptionRequest)
            ->setFacilityMonitoringSubscriptionRequest($facilityMonitoringSubscriptionRequest)
            ->setSituationExchangeSubscriptionRequest($situationExchangeSubscriptionRequest);
    }
    /**
     * Get ProductionTimetableSubscriptionRequest value
     * @return \StructType\ProductionTimetableSubscriptionRequest|null
     */
    public function getProductionTimetableSubscriptionRequest()
    {
        return $this->ProductionTimetableSubscriptionRequest;
    }
    /**
     * Set ProductionTimetableSubscriptionRequest value
     * @param \StructType\ProductionTimetableSubscriptionRequest $productionTimetableSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setProductionTimetableSubscriptionRequest(\StructType\ProductionTimetableSubscriptionRequest $productionTimetableSubscriptionRequest = null)
    {
        $this->ProductionTimetableSubscriptionRequest = $productionTimetableSubscriptionRequest;
        return $this;
    }
    /**
     * Get EstimatedTimetableSubscriptionRequest value
     * @return \StructType\EstimatedTimetableSubscriptionStructure|null
     */
    public function getEstimatedTimetableSubscriptionRequest()
    {
        return $this->EstimatedTimetableSubscriptionRequest;
    }
    /**
     * Set EstimatedTimetableSubscriptionRequest value
     * @param \StructType\EstimatedTimetableSubscriptionStructure $estimatedTimetableSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setEstimatedTimetableSubscriptionRequest(\StructType\EstimatedTimetableSubscriptionStructure $estimatedTimetableSubscriptionRequest = null)
    {
        $this->EstimatedTimetableSubscriptionRequest = $estimatedTimetableSubscriptionRequest;
        return $this;
    }
    /**
     * Get StopTimetableSubscriptionRequest value
     * @return \StructType\StopTimetableSubscriptionStructure|null
     */
    public function getStopTimetableSubscriptionRequest()
    {
        return $this->StopTimetableSubscriptionRequest;
    }
    /**
     * Set StopTimetableSubscriptionRequest value
     * @param \StructType\StopTimetableSubscriptionStructure $stopTimetableSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setStopTimetableSubscriptionRequest(\StructType\StopTimetableSubscriptionStructure $stopTimetableSubscriptionRequest = null)
    {
        $this->StopTimetableSubscriptionRequest = $stopTimetableSubscriptionRequest;
        return $this;
    }
    /**
     * Get StopMonitoringSubscriptionRequest value
     * @return \StructType\StopMonitoringSubscriptionStructure|null
     */
    public function getStopMonitoringSubscriptionRequest()
    {
        return $this->StopMonitoringSubscriptionRequest;
    }
    /**
     * Set StopMonitoringSubscriptionRequest value
     * @param \StructType\StopMonitoringSubscriptionStructure $stopMonitoringSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setStopMonitoringSubscriptionRequest(\StructType\StopMonitoringSubscriptionStructure $stopMonitoringSubscriptionRequest = null)
    {
        $this->StopMonitoringSubscriptionRequest = $stopMonitoringSubscriptionRequest;
        return $this;
    }
    /**
     * Get VehicleMonitoringSubscriptionRequest value
     * @return \StructType\VehicleMonitoringSubscriptionStructure|null
     */
    public function getVehicleMonitoringSubscriptionRequest()
    {
        return $this->VehicleMonitoringSubscriptionRequest;
    }
    /**
     * Set VehicleMonitoringSubscriptionRequest value
     * @param \StructType\VehicleMonitoringSubscriptionStructure $vehicleMonitoringSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setVehicleMonitoringSubscriptionRequest(\StructType\VehicleMonitoringSubscriptionStructure $vehicleMonitoringSubscriptionRequest = null)
    {
        $this->VehicleMonitoringSubscriptionRequest = $vehicleMonitoringSubscriptionRequest;
        return $this;
    }
    /**
     * Get ConnectionTimetableSubscriptionRequest value
     * @return \StructType\ConnectionTimetableSubscriptionStructure|null
     */
    public function getConnectionTimetableSubscriptionRequest()
    {
        return $this->ConnectionTimetableSubscriptionRequest;
    }
    /**
     * Set ConnectionTimetableSubscriptionRequest value
     * @param \StructType\ConnectionTimetableSubscriptionStructure $connectionTimetableSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setConnectionTimetableSubscriptionRequest(\StructType\ConnectionTimetableSubscriptionStructure $connectionTimetableSubscriptionRequest = null)
    {
        $this->ConnectionTimetableSubscriptionRequest = $connectionTimetableSubscriptionRequest;
        return $this;
    }
    /**
     * Get ConnectionMonitoringSubscriptionRequest value
     * @return \StructType\ConnectionMonitoringSubscriptionRequestStructure|null
     */
    public function getConnectionMonitoringSubscriptionRequest()
    {
        return $this->ConnectionMonitoringSubscriptionRequest;
    }
    /**
     * Set ConnectionMonitoringSubscriptionRequest value
     * @param \StructType\ConnectionMonitoringSubscriptionRequestStructure $connectionMonitoringSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setConnectionMonitoringSubscriptionRequest(\StructType\ConnectionMonitoringSubscriptionRequestStructure $connectionMonitoringSubscriptionRequest = null)
    {
        $this->ConnectionMonitoringSubscriptionRequest = $connectionMonitoringSubscriptionRequest;
        return $this;
    }
    /**
     * Get GeneralMessageSubscriptionRequest value
     * @return \StructType\GeneralMessageSubscriptionStructure|null
     */
    public function getGeneralMessageSubscriptionRequest()
    {
        return $this->GeneralMessageSubscriptionRequest;
    }
    /**
     * Set GeneralMessageSubscriptionRequest value
     * @param \StructType\GeneralMessageSubscriptionStructure $generalMessageSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setGeneralMessageSubscriptionRequest(\StructType\GeneralMessageSubscriptionStructure $generalMessageSubscriptionRequest = null)
    {
        $this->GeneralMessageSubscriptionRequest = $generalMessageSubscriptionRequest;
        return $this;
    }
    /**
     * Get FacilityMonitoringSubscriptionRequest value
     * @return \StructType\FacilityMonitoringSubscriptionStructure|null
     */
    public function getFacilityMonitoringSubscriptionRequest()
    {
        return $this->FacilityMonitoringSubscriptionRequest;
    }
    /**
     * Set FacilityMonitoringSubscriptionRequest value
     * @param \StructType\FacilityMonitoringSubscriptionStructure $facilityMonitoringSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setFacilityMonitoringSubscriptionRequest(\StructType\FacilityMonitoringSubscriptionStructure $facilityMonitoringSubscriptionRequest = null)
    {
        $this->FacilityMonitoringSubscriptionRequest = $facilityMonitoringSubscriptionRequest;
        return $this;
    }
    /**
     * Get SituationExchangeSubscriptionRequest value
     * @return \StructType\SituationExchangeSubscriptionStructure|null
     */
    public function getSituationExchangeSubscriptionRequest()
    {
        return $this->SituationExchangeSubscriptionRequest;
    }
    /**
     * Set SituationExchangeSubscriptionRequest value
     * @param \StructType\SituationExchangeSubscriptionStructure $situationExchangeSubscriptionRequest
     * @return \StructType\SubscriptionRequestStructure
     */
    public function setSituationExchangeSubscriptionRequest(\StructType\SituationExchangeSubscriptionStructure $situationExchangeSubscriptionRequest = null)
    {
        $this->SituationExchangeSubscriptionRequest = $situationExchangeSubscriptionRequest;
        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 \StructType\SubscriptionRequestStructure
     */
    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__;
    }
}
