open-orchestra/open-orchestra-model-bundle

View on GitHub
ModelBundle/Document/RouteDocument.php

Summary

Maintainability
B
5 hrs
Test Coverage
<?php

namespace OpenOrchestra\ModelBundle\Document;

use OpenOrchestra\ModelInterface\Model\RouteDocumentInterface;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/**
 * Class RouteDocument
 *
 * @ODM\Document(
 *   collection="route_document",
 *   repositoryClass="OpenOrchestra\ModelBundle\Repository\RouteDocumentRepository"
 * )
 * @ODM\Indexes({
 *  @ODM\Index(name="route_document_search_index", keys={"name"="asc", "token0"="asc", "token1"="asc", "token2"="asc", "token3"="asc", "token4"="asc", "token5"="asc", "token6"="asc", "token7"="asc", "token8"="asc", "token9"="asc", "token10"="asc", "weight"="desc"})
 * })
 */
class RouteDocument implements RouteDocumentInterface
{
    /**
     * @var string $id
     *
     * @ODM\Id
     */
    protected $id;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $name;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $nodeId;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $language;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $siteId;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $aliasId;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $pattern;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $host;

    /**
     * @var array
     *
     * @ODM\Field(type="raw")
     */
    protected $defaults;

    /**
     * @var array
     *
     * @ODM\Field(type="raw")
     */
    protected $requirements = array();

    /**
     * @var array
     *
     * @ODM\Field(type="raw")
     */
    protected $options = array();

    /**
     * @var string|array
     *
     * @ODM\Field(type="raw")
     */
    protected $schemes;

    /**
     * @var string|array
     *
     * @ODM\Field(type="raw")
     */
    protected $methods;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token0;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token1;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token2;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token3;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token4;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token5;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token6;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token7;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token8;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token9;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $token10;

    /**
     * @var string
     *
     * @ODM\Field(type="raw")
     */
    protected $token11;

    /**
     * @var string
     *
     * @ODM\Field(type="string")
     */
    protected $condition;

    /**
     * @var int
     *
     * @ODM\Field(type="int")
     */
    protected $weight = 0;

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

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * @return string
     */
    public function getPattern()
    {
        return $this->pattern;
    }

    /**
     * @param string $pattern
     */
    public function setPattern($pattern)
    {
        $this->pattern = $pattern;

        $workingPattern = explode('/', trim($pattern, '/'));

        foreach (array_slice($workingPattern, 0, 11) as $key => $value) {
            $this->setToken($key, $value);
        }

        $restPattern = null;
        foreach (array_slice($workingPattern, 11, null, true) as $key => $element) {
            $restPattern[$key] = $element;
            if (preg_match('/{.*}/', $element)) {
                $restPattern[$key] = '*';
                $this->weight += pow(10, $key);
            }
        }

        $this->token11 = $restPattern;
    }

    /**
     * @param int    $number
     * @param string $value
     */
    protected function setToken($number, $value)
    {
        $tokenNumber = 'token' . $number;
        if (preg_match('/{.*}/', $value)) {
            $value = '*';
            $this->weight += pow(10, $number);
        }
        $this->$tokenNumber = $value;
    }

    /**
     * @return array
     */
    public function getDefaults()
    {
        if (null === $this->defaults) {
            return array(
                '_locale' => $this->getLanguage(),
                'nodeId' => $this->getNodeId(),
                'siteId' => $this->getSiteId(),
                'aliasId' => $this->getAliasId(),
            );
        }

        return $this->defaults;
    }

    /**
     * @param array $defaults
     */
    public function setDefaults(array $defaults)
    {
        $this->defaults = $defaults;
    }

    /**
     * @return array
     */
    public function getRequirements()
    {
        return $this->requirements;
    }

    /**
     * @param array $requirements
     */
    public function setRequirements($requirements)
    {
        $this->requirements = $requirements;
    }

    /**
     * @return array
     */
    public function getOptions()
    {
        return $this->options;
    }

    /**
     * @param array $options
     */
    public function setOptions($options)
    {
        $this->options = $options;
    }

    /**
     * @return array|string
     */
    public function getSchemes()
    {
        return $this->schemes;
    }

    /**
     * @param array|string $schemes
     */
    public function setSchemes($schemes)
    {
        $this->schemes = $schemes;
    }

    /**
     * @return array|string
     */
    public function getMethods()
    {
        return $this->methods;
    }

    /**
     * @param array|string $methods
     */
    public function setMethods($methods)
    {
        $this->methods = $methods;
    }

    /**
     * @return string
     */
    public function getCondition()
    {
        return $this->condition;
    }

    /**
     * @param string $condition
     */
    public function setCondition($condition)
    {
        $this->condition = $condition;
    }

    /**
     * @return string
     */
    public function getHost()
    {
        return $this->host;
    }

    /**
     * @param string $host
     */
    public function setHost($host)
    {
        $this->host = $host;
    }

    /**
     * @return string
     */
    public function getToken0()
    {
        return $this->token0;
    }

    /**
     * @return string
     */
    public function getToken1()
    {
        return $this->token1;
    }

    /**
     * @return string
     */
    public function getToken2()
    {
        return $this->token2;
    }

    /**
     * @return string
     */
    public function getToken3()
    {
        return $this->token3;
    }

    /**
     * @return string
     */
    public function getToken4()
    {
        return $this->token4;
    }

    /**
     * @return string
     */
    public function getToken5()
    {
        return $this->token5;
    }

    /**
     * @return string
     */
    public function getToken6()
    {
        return $this->token6;
    }

    /**
     * @return string
     */
    public function getToken7()
    {
        return $this->token7;
    }

    /**
     * @return string
     */
    public function getToken8()
    {
        return $this->token8;
    }

    /**
     * @return string
     */
    public function getToken9()
    {
        return $this->token9;
    }

    /**
     * @return string
     */
    public function getToken10()
    {
        return $this->token10;
    }

    /**
     * @return string
     */
    public function getToken11()
    {
        return $this->token11;
    }

    /**
     * @return int
     */
    public function getWeight()
    {
        return $this->weight;
    }

    /**
     * @return string
     */
    public function getNodeId()
    {
        return $this->nodeId;
    }

    /**
     * @param string $nodeId
     */
    public function setNodeId($nodeId)
    {
        $this->nodeId = $nodeId;
    }

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

    /**
     * @param string $language
     */
    public function setLanguage($language)
    {
        $this->language = $language;
    }

    /**
     * @return string
     */
    public function getSiteId()
    {
        return $this->siteId;
    }

    /**
     * @param string $siteId
     */
    public function setSiteId($siteId)
    {
        $this->siteId = $siteId;
    }

    /**
     * @return string
     */
    public function getAliasId()
    {
        return $this->aliasId;
    }

    /**
     * @param string $aliasId
     */
    public function setAliasId($aliasId)
    {
        $this->aliasId = $aliasId;
    }
}