<?php
 
 
 

namespace PhpWA\Protocol\Proto\Message\HighlyStructuredMessage\HSMLocalizableParameter\HSMDateTime;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\GPBUtil;
use Google\Protobuf\RepeatedField;




class HSMDateTimeComponent extends \Google\Protobuf\Internal\Message
{
    


    protected $dayOfWeek = null;
    


    protected $year = null;
    


    protected $month = null;
    


    protected $dayOfMonth = null;
    


    protected $hour = null;
    


    protected $minute = null;
    


    protected $calendar = null;

    














    public function __construct($data = NULL) {
        \PhpWA\Protocol\Proto\Metadata\WAProto::initOnce();
        parent::__construct($data);
    }

    



    public function getDayOfWeek()
    {
        return isset($this->dayOfWeek) ? $this->dayOfWeek : 0;
    }

    public function hasDayOfWeek()
    {
        return isset($this->dayOfWeek);
    }

    public function clearDayOfWeek()
    {
        unset($this->dayOfWeek);
    }

    




    public function setDayOfWeek($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\Message\HighlyStructuredMessage\HSMLocalizableParameter\HSMDateTime\HSMDateTimeComponent\DayOfWeekType::class);
        $this->dayOfWeek = $var;

        return $this;
    }

    



    public function getYear()
    {
        return isset($this->year) ? $this->year : 0;
    }

    public function hasYear()
    {
        return isset($this->year);
    }

    public function clearYear()
    {
        unset($this->year);
    }

    




    public function setYear($var)
    {
        GPBUtil::checkUint32($var);
        $this->year = $var;

        return $this;
    }

    



    public function getMonth()
    {
        return isset($this->month) ? $this->month : 0;
    }

    public function hasMonth()
    {
        return isset($this->month);
    }

    public function clearMonth()
    {
        unset($this->month);
    }

    




    public function setMonth($var)
    {
        GPBUtil::checkUint32($var);
        $this->month = $var;

        return $this;
    }

    



    public function getDayOfMonth()
    {
        return isset($this->dayOfMonth) ? $this->dayOfMonth : 0;
    }

    public function hasDayOfMonth()
    {
        return isset($this->dayOfMonth);
    }

    public function clearDayOfMonth()
    {
        unset($this->dayOfMonth);
    }

    




    public function setDayOfMonth($var)
    {
        GPBUtil::checkUint32($var);
        $this->dayOfMonth = $var;

        return $this;
    }

    



    public function getHour()
    {
        return isset($this->hour) ? $this->hour : 0;
    }

    public function hasHour()
    {
        return isset($this->hour);
    }

    public function clearHour()
    {
        unset($this->hour);
    }

    




    public function setHour($var)
    {
        GPBUtil::checkUint32($var);
        $this->hour = $var;

        return $this;
    }

    



    public function getMinute()
    {
        return isset($this->minute) ? $this->minute : 0;
    }

    public function hasMinute()
    {
        return isset($this->minute);
    }

    public function clearMinute()
    {
        unset($this->minute);
    }

    




    public function setMinute($var)
    {
        GPBUtil::checkUint32($var);
        $this->minute = $var;

        return $this;
    }

    



    public function getCalendar()
    {
        return isset($this->calendar) ? $this->calendar : 0;
    }

    public function hasCalendar()
    {
        return isset($this->calendar);
    }

    public function clearCalendar()
    {
        unset($this->calendar);
    }

    




    public function setCalendar($var)
    {
        GPBUtil::checkEnum($var, \PhpWA\Protocol\Proto\Message\HighlyStructuredMessage\HSMLocalizableParameter\HSMDateTime\HSMDateTimeComponent\CalendarType::class);
        $this->calendar = $var;

        return $this;
    }

}

