<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for DataCenterUrls StructType
 * @subpackage Structs
 */
class DataCenterUrls extends AbstractStructBase
{
    /**
     * The restDomain
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $restDomain;
    /**
     * The webservicesDomain
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $webservicesDomain;
    /**
     * The systemDomain
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var string
     */
    public $systemDomain;
    /**
     * Constructor method for DataCenterUrls
     * @uses DataCenterUrls::setRestDomain()
     * @uses DataCenterUrls::setWebservicesDomain()
     * @uses DataCenterUrls::setSystemDomain()
     * @param string $restDomain
     * @param string $webservicesDomain
     * @param string $systemDomain
     */
    public function __construct($restDomain = null, $webservicesDomain = null, $systemDomain = null)
    {
        $this
            ->setRestDomain($restDomain)
            ->setWebservicesDomain($webservicesDomain)
            ->setSystemDomain($systemDomain);
    }
    /**
     * Get restDomain value
     * @return string
     */
    public function getRestDomain()
    {
        return $this->restDomain;
    }
    /**
     * Set restDomain value
     * @param string $restDomain
     * @return \StructType\DataCenterUrls
     */
    public function setRestDomain($restDomain = null)
    {
        // validation for constraint: string
        if (!is_null($restDomain) && !is_string($restDomain)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($restDomain, true), gettype($restDomain)), __LINE__);
        }
        $this->restDomain = $restDomain;
        return $this;
    }
    /**
     * Get webservicesDomain value
     * @return string
     */
    public function getWebservicesDomain()
    {
        return $this->webservicesDomain;
    }
    /**
     * Set webservicesDomain value
     * @param string $webservicesDomain
     * @return \StructType\DataCenterUrls
     */
    public function setWebservicesDomain($webservicesDomain = null)
    {
        // validation for constraint: string
        if (!is_null($webservicesDomain) && !is_string($webservicesDomain)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($webservicesDomain, true), gettype($webservicesDomain)), __LINE__);
        }
        $this->webservicesDomain = $webservicesDomain;
        return $this;
    }
    /**
     * Get systemDomain value
     * @return string
     */
    public function getSystemDomain()
    {
        return $this->systemDomain;
    }
    /**
     * Set systemDomain value
     * @param string $systemDomain
     * @return \StructType\DataCenterUrls
     */
    public function setSystemDomain($systemDomain = null)
    {
        // validation for constraint: string
        if (!is_null($systemDomain) && !is_string($systemDomain)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($systemDomain, true), gettype($systemDomain)), __LINE__);
        }
        $this->systemDomain = $systemDomain;
        return $this;
    }
}
