<?php

/**
 * Generated by phpSPO model generator 2020-05-26T22:30:38+00:00 
 */
namespace Office365\Graph;


use Office365\Runtime\ResourcePath;
/**
 *  "The drive resource is the top level object representing a user's OneDrive or a document library in SharePoint."
 */
class Drive extends BaseItem
{
    /**
     * @return string
     */
    public function getDriveType()
    {
        if (!$this->isPropertyAvailable("DriveType")) {
            return null;
        }
        return $this->getProperty("DriveType");
    }
    /**
     * @var string
     */
    public function setDriveType($value)
    {
        $this->setProperty("DriveType", $value, true);
    }
    /**
     * @return IdentitySet
     */
    public function getOwner()
    {
        if (!$this->isPropertyAvailable("Owner")) {
            $this->setProperty("Owner", new IdentitySet());
        }
        return $this->getProperty("Owner");
    }
    /**
     * @var IdentitySet
     */
    public function setOwner($value)
    {
        $this->setProperty("Owner", $value, true);
    }
    /**
     * @return Quota
     */
    public function getQuota()
    {
        if (!$this->isPropertyAvailable("Quota")) {
            return null;
        }
        return $this->getProperty("Quota");
    }
    /**
     * @var Quota
     */
    public function setQuota($value)
    {
        $this->setProperty("Quota", $value, true);
    }
    /**
     * @return SharepointIds
     */
    public function getSharePointIds()
    {
        if (!$this->isPropertyAvailable("SharePointIds")) {
            return null;
        }
        return $this->getProperty("SharePointIds");
    }
    /**
     * @var SharepointIds
     */
    public function setSharePointIds($value)
    {
        $this->setProperty("SharePointIds", $value, true);
    }
    /**
     * @return SystemFacet
     */
    public function getSystem()
    {
        if (!$this->isPropertyAvailable("System")) {
            return null;
        }
        return $this->getProperty("System");
    }
    /**
     * @var SystemFacet
     */
    public function setSystem($value)
    {
        $this->setProperty("System", $value, true);
    }
    /**
     * @return SharePointList
     */
    public function getList()
    {
        if (!$this->isPropertyAvailable("List")) {
            $this->setProperty("List", new SharePointList($this->getContext(), new ResourcePath("List", $this->getResourcePath())));
        }
        return $this->getProperty("List");
    }
    /**
     * @return DriveItem
     */
    public function getRoot()
    {
        if (!$this->isPropertyAvailable("Root")) {
            $this->setProperty("Root", new DriveItem($this->getContext(), new ResourcePath("Root", $this->getResourcePath())));
        }
        return $this->getProperty("Root");
    }
    /**
     * @return DriveItemCollection
     */
    public function getItems()
    {
        if (!$this->isPropertyAvailable("Items")) {
            $this->setProperty("Items", new DriveItemCollection($this->getContext(), new ResourcePath("Items", $this->getResourcePath())));
        }
        return $this->getProperty("Items");
    }
    /**
     * @return DriveItemCollection
     */
    public function getSpecial()
    {
        if (!$this->isPropertyAvailable("Special")) {
            $this->setProperty("Special", new DriveItemCollection($this->getContext(), new ResourcePath("Special", $this->getResourcePath())));
        }
        return $this->getProperty("Special");
    }
}