<?php

/**
* Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.  See License in the project root for license information.
* 
* RegistryKeyState File
* PHP version 7
*
* @category  Library
* @package   Microsoft.Graph
* @copyright (c) Microsoft Corporation. All rights reserved.
* @license   https://opensource.org/licenses/MIT MIT License
* @link      https://graph.microsoft.com
*/
namespace XCloner\Microsoft\Graph\Model;

if (!defined('ABSPATH') && \PHP_SAPI !== 'cli') {
    die;
}
/**
* RegistryKeyState class
*
* @category  Model
* @package   Microsoft.Graph
* @copyright (c) Microsoft Corporation. All rights reserved.
* @license   https://opensource.org/licenses/MIT MIT License
* @link      https://graph.microsoft.com
*/
class RegistryKeyState extends Entity
{
    /**
     * Gets the hive
     * A Windows registry hive : HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE/SAM HKEY_LOCAL_MACHINE/Security HKEY_LOCAL_MACHINE/Software HKEY_LOCAL_MACHINE/System HKEY_USERS/.Default. Possible values are: unknown, currentConfig, currentUser, localMachineSam, localMachineSecurity, localMachineSoftware, localMachineSystem, usersDefault.
     *
     * @return RegistryHive|null The hive
     */
    public function getHive()
    {
        if (array_key_exists("hive", $this->_propDict)) {
            if (is_a($this->_propDict["hive"], "XCloner\\Microsoft\\Graph\\Model\\RegistryHive") || is_null($this->_propDict["hive"])) {
                return $this->_propDict["hive"];
            } else {
                $this->_propDict["hive"] = new RegistryHive($this->_propDict["hive"]);
                return $this->_propDict["hive"];
            }
        }
        return null;
    }
    /**
     * Sets the hive
     * A Windows registry hive : HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE/SAM HKEY_LOCAL_MACHINE/Security HKEY_LOCAL_MACHINE/Software HKEY_LOCAL_MACHINE/System HKEY_USERS/.Default. Possible values are: unknown, currentConfig, currentUser, localMachineSam, localMachineSecurity, localMachineSoftware, localMachineSystem, usersDefault.
     *
     * @param RegistryHive $val The value to assign to the hive
     *
     * @return RegistryKeyState The RegistryKeyState
     */
    public function setHive($val)
    {
        $this->_propDict["hive"] = $val;
        return $this;
    }
    /**
     * Gets the key
     * Current (i.e. changed) registry key (excludes HIVE).
     *
     * @return string|null The key
     */
    public function getKey()
    {
        if (array_key_exists("key", $this->_propDict)) {
            return $this->_propDict["key"];
        } else {
            return null;
        }
    }
    /**
     * Sets the key
     * Current (i.e. changed) registry key (excludes HIVE).
     *
     * @param string $val The value of the key
     *
     * @return RegistryKeyState
     */
    public function setKey($val)
    {
        $this->_propDict["key"] = $val;
        return $this;
    }
    /**
     * Gets the oldKey
     * Previous (i.e. before changed) registry key (excludes HIVE).
     *
     * @return string|null The oldKey
     */
    public function getOldKey()
    {
        if (array_key_exists("oldKey", $this->_propDict)) {
            return $this->_propDict["oldKey"];
        } else {
            return null;
        }
    }
    /**
     * Sets the oldKey
     * Previous (i.e. before changed) registry key (excludes HIVE).
     *
     * @param string $val The value of the oldKey
     *
     * @return RegistryKeyState
     */
    public function setOldKey($val)
    {
        $this->_propDict["oldKey"] = $val;
        return $this;
    }
    /**
     * Gets the oldValueData
     * Previous (i.e. before changed) registry key value data (contents).
     *
     * @return string|null The oldValueData
     */
    public function getOldValueData()
    {
        if (array_key_exists("oldValueData", $this->_propDict)) {
            return $this->_propDict["oldValueData"];
        } else {
            return null;
        }
    }
    /**
     * Sets the oldValueData
     * Previous (i.e. before changed) registry key value data (contents).
     *
     * @param string $val The value of the oldValueData
     *
     * @return RegistryKeyState
     */
    public function setOldValueData($val)
    {
        $this->_propDict["oldValueData"] = $val;
        return $this;
    }
    /**
     * Gets the oldValueName
     * Previous (i.e. before changed) registry key value name.
     *
     * @return string|null The oldValueName
     */
    public function getOldValueName()
    {
        if (array_key_exists("oldValueName", $this->_propDict)) {
            return $this->_propDict["oldValueName"];
        } else {
            return null;
        }
    }
    /**
     * Sets the oldValueName
     * Previous (i.e. before changed) registry key value name.
     *
     * @param string $val The value of the oldValueName
     *
     * @return RegistryKeyState
     */
    public function setOldValueName($val)
    {
        $this->_propDict["oldValueName"] = $val;
        return $this;
    }
    /**
     * Gets the operation
     * Operation that changed the registry key name and/or value. Possible values are: unknown, create, modify, delete.
     *
     * @return RegistryOperation|null The operation
     */
    public function getOperation()
    {
        if (array_key_exists("operation", $this->_propDict)) {
            if (is_a($this->_propDict["operation"], "XCloner\\Microsoft\\Graph\\Model\\RegistryOperation") || is_null($this->_propDict["operation"])) {
                return $this->_propDict["operation"];
            } else {
                $this->_propDict["operation"] = new RegistryOperation($this->_propDict["operation"]);
                return $this->_propDict["operation"];
            }
        }
        return null;
    }
    /**
     * Sets the operation
     * Operation that changed the registry key name and/or value. Possible values are: unknown, create, modify, delete.
     *
     * @param RegistryOperation $val The value to assign to the operation
     *
     * @return RegistryKeyState The RegistryKeyState
     */
    public function setOperation($val)
    {
        $this->_propDict["operation"] = $val;
        return $this;
    }
    /**
     * Gets the processId
     * Process ID (PID) of the process that modified the registry key (process details will appear in the alert 'processes' collection).
     *
     * @return int|null The processId
     */
    public function getProcessId()
    {
        if (array_key_exists("processId", $this->_propDict)) {
            return $this->_propDict["processId"];
        } else {
            return null;
        }
    }
    /**
     * Sets the processId
     * Process ID (PID) of the process that modified the registry key (process details will appear in the alert 'processes' collection).
     *
     * @param int $val The value of the processId
     *
     * @return RegistryKeyState
     */
    public function setProcessId($val)
    {
        $this->_propDict["processId"] = $val;
        return $this;
    }
    /**
     * Gets the valueData
     * Current (i.e. changed) registry key value data (contents).
     *
     * @return string|null The valueData
     */
    public function getValueData()
    {
        if (array_key_exists("valueData", $this->_propDict)) {
            return $this->_propDict["valueData"];
        } else {
            return null;
        }
    }
    /**
     * Sets the valueData
     * Current (i.e. changed) registry key value data (contents).
     *
     * @param string $val The value of the valueData
     *
     * @return RegistryKeyState
     */
    public function setValueData($val)
    {
        $this->_propDict["valueData"] = $val;
        return $this;
    }
    /**
     * Gets the valueName
     * Current (i.e. changed) registry key value name
     *
     * @return string|null The valueName
     */
    public function getValueName()
    {
        if (array_key_exists("valueName", $this->_propDict)) {
            return $this->_propDict["valueName"];
        } else {
            return null;
        }
    }
    /**
     * Sets the valueName
     * Current (i.e. changed) registry key value name
     *
     * @param string $val The value of the valueName
     *
     * @return RegistryKeyState
     */
    public function setValueName($val)
    {
        $this->_propDict["valueName"] = $val;
        return $this;
    }
    /**
     * Gets the valueType
     * Registry key value type REG_BINARY REG_DWORD REG_DWORD_LITTLE_ENDIAN REG_DWORD_BIG_ENDIANREG_EXPAND_SZ REG_LINK REG_MULTI_SZ REG_NONE REG_QWORD REG_QWORD_LITTLE_ENDIAN REG_SZ Possible values are: unknown, binary, dword, dwordLittleEndian, dwordBigEndian, expandSz, link, multiSz, none, qword, qwordlittleEndian, sz.
     *
     * @return RegistryValueType|null The valueType
     */
    public function getValueType()
    {
        if (array_key_exists("valueType", $this->_propDict)) {
            if (is_a($this->_propDict["valueType"], "XCloner\\Microsoft\\Graph\\Model\\RegistryValueType") || is_null($this->_propDict["valueType"])) {
                return $this->_propDict["valueType"];
            } else {
                $this->_propDict["valueType"] = new RegistryValueType($this->_propDict["valueType"]);
                return $this->_propDict["valueType"];
            }
        }
        return null;
    }
    /**
     * Sets the valueType
     * Registry key value type REG_BINARY REG_DWORD REG_DWORD_LITTLE_ENDIAN REG_DWORD_BIG_ENDIANREG_EXPAND_SZ REG_LINK REG_MULTI_SZ REG_NONE REG_QWORD REG_QWORD_LITTLE_ENDIAN REG_SZ Possible values are: unknown, binary, dword, dwordLittleEndian, dwordBigEndian, expandSz, link, multiSz, none, qword, qwordlittleEndian, sz.
     *
     * @param RegistryValueType $val The value to assign to the valueType
     *
     * @return RegistryKeyState The RegistryKeyState
     */
    public function setValueType($val)
    {
        $this->_propDict["valueType"] = $val;
        return $this;
    }
}
