<?php

namespace Sabre\OTAAirRules\Structs;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SabreHeader Structs
 * Meta informations extracted from the WSDL
 * - type: SabreHeader
 * @subpackage Structs
 */
class SabreHeader extends AbstractStructBase
{
    /**
     * The Service
     * Meta informations extracted from the WSDL
     * - ref: Service
     * @var \Sabre\OTAAirRules\Structs\Service
     */
    public $Service;
    /**
     * The Identification
     * Meta informations extracted from the WSDL
     * - ref: Identification
     * @var \Sabre\OTAAirRules\Structs\Identification
     */
    public $Identification;
    /**
     * The ResultSummary
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - ref: ResultSummary
     * @var \Sabre\OTAAirRules\Structs\ResultSummary
     */
    public $ResultSummary;
    /**
     * The Security
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - ref: Security
     * @var \Sabre\OTAAirRules\Structs\Security
     */
    public $Security;
    /**
     * The Traces
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - ref: Traces
     * @var \Sabre\OTAAirRules\Structs\Traces
     */
    public $Traces;
    /**
     * The Diagnostics
     * Meta informations extracted from the WSDL
     * - minOccurs: 0
     * - ref: Diagnostics
     * @var \Sabre\OTAAirRules\Structs\Diagnostics
     */
    public $Diagnostics;
    /**
     * Constructor method for SabreHeader
     * @uses SabreHeader::setService()
     * @uses SabreHeader::setIdentification()
     * @uses SabreHeader::setResultSummary()
     * @uses SabreHeader::setSecurity()
     * @uses SabreHeader::setTraces()
     * @uses SabreHeader::setDiagnostics()
     * @param \Sabre\OTAAirRules\Structs\Service $service
     * @param \Sabre\OTAAirRules\Structs\Identification $identification
     * @param \Sabre\OTAAirRules\Structs\ResultSummary $resultSummary
     * @param \Sabre\OTAAirRules\Structs\Security $security
     * @param \Sabre\OTAAirRules\Structs\Traces $traces
     * @param \Sabre\OTAAirRules\Structs\Diagnostics $diagnostics
     */
    public function __construct(\Sabre\OTAAirRules\Structs\Service $service = null, \Sabre\OTAAirRules\Structs\Identification $identification = null, \Sabre\OTAAirRules\Structs\ResultSummary $resultSummary = null, \Sabre\OTAAirRules\Structs\Security $security = null, \Sabre\OTAAirRules\Structs\Traces $traces = null, \Sabre\OTAAirRules\Structs\Diagnostics $diagnostics = null)
    {
        $this
            ->setService($service)
            ->setIdentification($identification)
            ->setResultSummary($resultSummary)
            ->setSecurity($security)
            ->setTraces($traces)
            ->setDiagnostics($diagnostics);
    }
    /**
     * Get Service value
     * @return \Sabre\OTAAirRules\Structs\Service|null
     */
    public function getService()
    {
        return $this->Service;
    }
    /**
     * Set Service value
     * @param \Sabre\OTAAirRules\Structs\Service $service
     * @return \Sabre\OTAAirRules\Structs\SabreHeader
     */
    public function setService(\Sabre\OTAAirRules\Structs\Service $service = null)
    {
        $this->Service = $service;
        return $this;
    }
    /**
     * Get Identification value
     * @return \Sabre\OTAAirRules\Structs\Identification|null
     */
    public function getIdentification()
    {
        return $this->Identification;
    }
    /**
     * Set Identification value
     * @param \Sabre\OTAAirRules\Structs\Identification $identification
     * @return \Sabre\OTAAirRules\Structs\SabreHeader
     */
    public function setIdentification(\Sabre\OTAAirRules\Structs\Identification $identification = null)
    {
        $this->Identification = $identification;
        return $this;
    }
    /**
     * Get ResultSummary value
     * @return \Sabre\OTAAirRules\Structs\ResultSummary|null
     */
    public function getResultSummary()
    {
        return $this->ResultSummary;
    }
    /**
     * Set ResultSummary value
     * @param \Sabre\OTAAirRules\Structs\ResultSummary $resultSummary
     * @return \Sabre\OTAAirRules\Structs\SabreHeader
     */
    public function setResultSummary(\Sabre\OTAAirRules\Structs\ResultSummary $resultSummary = null)
    {
        $this->ResultSummary = $resultSummary;
        return $this;
    }
    /**
     * Get Security value
     * @return \Sabre\OTAAirRules\Structs\Security|null
     */
    public function getSecurity()
    {
        return $this->Security;
    }
    /**
     * Set Security value
     * @param \Sabre\OTAAirRules\Structs\Security $security
     * @return \Sabre\OTAAirRules\Structs\SabreHeader
     */
    public function setSecurity(\Sabre\OTAAirRules\Structs\Security $security = null)
    {
        $this->Security = $security;
        return $this;
    }
    /**
     * Get Traces value
     * @return \Sabre\OTAAirRules\Structs\Traces|null
     */
    public function getTraces()
    {
        return $this->Traces;
    }
    /**
     * Set Traces value
     * @param \Sabre\OTAAirRules\Structs\Traces $traces
     * @return \Sabre\OTAAirRules\Structs\SabreHeader
     */
    public function setTraces(\Sabre\OTAAirRules\Structs\Traces $traces = null)
    {
        $this->Traces = $traces;
        return $this;
    }
    /**
     * Get Diagnostics value
     * @return \Sabre\OTAAirRules\Structs\Diagnostics|null
     */
    public function getDiagnostics()
    {
        return $this->Diagnostics;
    }
    /**
     * Set Diagnostics value
     * @param \Sabre\OTAAirRules\Structs\Diagnostics $diagnostics
     * @return \Sabre\OTAAirRules\Structs\SabreHeader
     */
    public function setDiagnostics(\Sabre\OTAAirRules\Structs\Diagnostics $diagnostics = null)
    {
        $this->Diagnostics = $diagnostics;
        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\OTAAirRules\Structs\SabreHeader
     */
    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__;
    }
}
