<?php
namespace Pleomorph\Entities\Core\Domain;

use Doctrine\Common\Collections\ArrayCollection;

/**
 * @Entity
 * @Table(name="page_directory")
 */
class PageDirectory
{
    /**
     * @Id @Column(name="id", type="integer")
     * @GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @Column(name="title", type="string", length=255)
     */
    private $title;

    /**
     * @Column(name="position", type="integer")
     */
    private $position;

    /**
     * @OneToOne(targetEntity="Language")
     * @JoinColumns({
     *   @JoinColumn(name="id_language", referencedColumnName="id")
     * })
     */
    private $language;

    /**
     * @OneToOne(targetEntity="Page")
     * @JoinColumns({
     *   @JoinColumn(name="default_page_id", referencedColumnName="id")
     * })
     */
    private $defaultPage;


    /**
     * @OneToMany(targetEntity="Page", mappedBy="parentDirectory"))
     */
    private $pages;

    /**
     * @ManyToOne(targetEntity="PageDirectory")
     * @JoinColumn(name="parent_id", referencedColumnName="id")
     */
    private $parentDirectory;

    /**
     * @OneToMany(targetEntity="PageDirectory", mappedBy="parentDirectory"))
     */
    private $childrenDirectories;

    public function __construct()
    {
        $this->childrenDirectories = new ArrayCollection;
    }

    /**
     * Set id
     */
    public function setId($value)
    {
        $this->id = $value;
    }

    /**
     * Get id
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set title
     */
    public function setTitle($value)
    {
        $this->title = $value;
    }

    /**
     * Get title
     */
    public function getTitle()
    {
        return $this->title;
    }

    /**
     * Set position
     */
    public function setPosition($value)
    {
        $this->position = $value;
    }

    /**
     * Get position
     */
    public function getPosition()
    {
        return $this->position;
    }

    /**
     * Set language
     */
    public function setLanguage($value)
    {
        $this->language = $value;
    }

    /**
     * Get language
     */
    public function getLanguage()
    {
        return $this->language;
    }

    /**
     * Set defaultPage
     */
    public function setDefaultPage($value)
    {
        $this->defaultPage = $value;
    }

    /**
     * Get defaultPage
     */
    public function getDefaultPage()
    {
        return $this->defaultPage;
    }

    /**
     * Set childrenDirectories
     */
    public function setChildrenDirectories($value)
    {
        $this->childrenDirectories = $value;
    }

    /**
     * Get childrenDirectories
     */
    public function getChildrenDirectories()
    {
        return $this->childrenDirectories;
    }


    /**
     * Set parentDirectory
     */
    public function setParentDirectory($value)
    {
        $this->parentDirectory = $value;
    }

    /**
     * Get parentDirectory
     */
    public function getParentDirectory()
    {
        return $this->parentDirectory;
    }

    public function getPages() {
        return $this->pages;
    }

    public function setPages($pages) {
        $this->pages = $pages;
    }

    
}