Model/Tag.php
author ymh <ymh.work@gmail.com>
Fri, 26 Sep 2014 10:04:40 +0200
changeset 136 f209fcb0df6c
parent 83 e9f04298bdfa
permissions -rwxr-xr-x
Added tag V00.18 for changeset ab728cb3632c

<?php
/*
 * This file is part of the WikiTagBundle package.
 *
 * (c) IRI <http://www.iri.centrepompidou.fr/>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 namespace IRI\Bundle\WikiTagBundle\Model;
 
 use Doctrine\Common\Collections\ArrayCollection;

use IRI\Bundle\WikiTagBundle\Utils\WikiTagUtils;

abstract class Tag implements TagInterface {
    
    public static $TAG_URL_STATUS_DICT = array('null_result'=>0,'redirection'=>1,'homonyme'=>2,'match'=>3, 'unsemantized'=>4);
     
    /**
     * @var integer $id
     */
    protected $id;

    /**
     * @var string $label
     */
    protected $label;

    /**
     * @var string $normalizedLabel
     */
    protected $normalizedLabel;

    /**
     * @var string $originalLabel
     */
    protected $originalLabel;
    
    /**
     * @var $alternativeLabel
     */
    protected $alternativeLabel;

    /**
     * @var string $alias
     */
    protected $alias;

    /**
     * @var string $wikipediaUrl
     */
    protected $wikipediaUrl;

    /**
    * @var string $alternativeWikipediaUrl
    */
    protected $alternativeWikipediaUrl;
            
    /**
     * @var bigint $wikipediaPageId
     */
    protected $wikipediaPageId;

   /**
    * @var bigint $alternativeWikipediaPageId
    */
    protected $alternativeWikipediaPageId;
    
    /**
     * @var smallint $urlStatus
     */
    protected $urlStatus;

    /**
     * @var string $dbpediaUri
     */
    protected $dbpediaUri;

    /**
     * @var integer $popularity
     */
    protected $popularity = 0;

    /**
     * @var object $category
     */
    protected $category;

    /**
     * @var ArrayCollection $documents
     */
    protected $documents;
    
    /**
     * @var DateTime
     */
    protected $createdAt;


    /**
     *
     * construct the class
     */
    function __construct()
    {
        $this->createdAt = new \DateTime("now", new \DateTimeZone('UTC'));
    }
    
    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }
    
    /**
     * Set id
     *
     * @param integer $id
     */
    function setId($id)
    {
        $this->id = $id;
    }

    /**
     * Set label
     *
     * @param string $label
     */
    public function setLabel($label)
    {
        $this->label = $label;
        $this->normalizedLabel = WikiTagUtils::normalizeTag($label);
    }

    /**
     * Get label
     *
     * @return string
     */
    public function getLabel()
    {
        return $this->label;
    }

    /**
     * Set normalizedLabel
     *
     * @param string $normalizedLabel
     */
    public function setNormalizedLabel($normalizedLabel)
    {
        $this->normalizedLabel = $normalizedLabel;
    }

    /**
     * Get normalizedLabel
     *
     * @return string
     */
    public function getNormalizedLabel()
    {
        return $this->normalizedLabel;
    }

    /**
     * Set originalLabel
     *
     * @param string $originalLabel
     */
    public function setOriginalLabel($originalLabel)
    {
        $this->originalLabel = $originalLabel;
    }

    /**
     * Get originalLabel
     *
     * @return string
     */
    public function getOriginalLabel()
    {
        return $this->originalLabel;
    }

    /**
    * Set alternativeLabel
    *
    * @param string $alternativeLabel
    */
    public function setAlternativeLabel($alternativeLabel)
    {
        $this->alternativeLabel = $alternativeLabel;
    }
    
    /**
     * Get alternativeLabel
     *
     * @return string
     */
    public function getAlternativeLabel()
    {
        return $this->alternativeLabel;
    }
    
    
    
    /**
     * Set alias
     *
     * @param string $alias
     */
    public function setAlias($alias)
    {
        $this->alias = $alias;
    }

    /**
     * Get alias
     *
     * @return string
     */
    public function getAlias()
    {
        return $this->alias;
    }

    /**
     * Set wikipediaUrl
     *
     * @param string $wikipediaUrl
     */
    public function setWikipediaUrl($wikipediaUrl)
    {
        $this->wikipediaUrl = $wikipediaUrl;
    }

    /**
     * Get wikipediaUrl
     *
     * @return string
     */
    public function getWikipediaUrl()
    {
        return $this->wikipediaUrl;
    }

    
    /**
    * Set alternativeWikipediaUrl
    *
    * @param string $alternativeWikipediaUrl
    */
    public function setAlternativeWikipediaUrl($alternativeWikipediaUrl)
    {
        $this->alternativeWikipediaUrl = $alternativeWikipediaUrl;
    }
    
    /**
     * Get alternativeWikipediaUrl
     *
     * @return string
     */
    public function getAlternativeWikipediaUrl()
    {
        return $this->alternativeWikipediaUrl;
    }
    
    
    /**
     * Set wikipediaPageId
     *
     * @param bigint $wikipediaPageId
     */
    public function setWikipediaPageId($wikipediaPageId)
    {
        $this->wikipediaPageId = $wikipediaPageId;
    }

    /**
     * Get wikipediaPageId
     *
     * @return bigint
     */
    public function getWikipediaPageId()
    {
        return $this->wikipediaPageId;
    }

    /**
    * Set alternativeWikipediaPageId
    *
    * @param bigint $alternativeWikipediaPageId
    */
    function setAlternativeWikipediaPageId($alternativeWikipediaPageId)
    {
        $this->alternativeWikipediaPageId = $alternativeWikipediaPageId;
    }
    
    /**
     * Get alternativeWikipediaPageId
     *
     * @return bigint
     */
    function getAlternativeWikipediaPageId()
    {
        return $this->alternativeWikipediaPageId;
    }
    
    
    /**
     * Set urlStatus
     *
     * @param smallint $urlStatus
     */
    public function setUrlStatus($urlStatus)
    {
        $this->urlStatus = $urlStatus;
    }

    /**
     * Get urlStatus
     *
     * @return smallint
     */
    public function getUrlStatus()
    {
        return $this->urlStatus;
    }
    
    /**
    * Get UrlStatusText
    *
    * @return string
    */
    public function getUrlStatusText()
    {
        if(is_null($this->getUrlStatus()))
        {
            return null;
        }
        switch ($this->getUrlStatus()) {
            case 0:
                return "null_result";
            case 1:
                return "redirection";
            case 2:
                return "homonyme";
            case 3:
                return "match";
            case 4:
                return "unsemantized";
            default:
                return "";
        }
    }
    

    /**
     * Set dbpediaUri
     *
     * @param string $dbpediaUri
     */
    public function setDbpediaUri($dbpediaUri)
    {
        $this->dbpediaUri = $dbpediaUri;
    }

    /**
     * Get dbpediaUri
     *
     * @return string
     */
    public function getDbpediaUri()
    {
        return $this->dbpediaUri;
    }

    /**
     * Set popularity
     *
     * @param integer $popularity
     */
    public function setPopularity($popularity)
    {
        $this->popularity = $popularity;
    }

    /**
     * Get popularity
     *
     * @return integer
     */
    public function getPopularity()
    {
        return $this->popularity;
    }

    /**
    * Set category
    *
    * @param object $category
    */
    public function setCategory($category)
    {
        $this->category = $category;
    }
    
    /**
     * Get category
     *
     * @return object
     */
    function getCategory()
    {
        return $this->category;
    }
    
    /**
     * (non-PHPdoc)
     * @see IRI\Bundle\WikiTagBundle\Model.TagInterface::getCreatedAt()
     */
    function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
    * Set date of creation
    *
    * @param DateTime $date
    */
    public function setCreatedAt($date)
    {
        $this->createdAt = $date;
    }

    /**
     * Get Documents
     *
     * @return ArrayCollection
     */
    public function getDocuments()
    {
        return $this->documents;
    }
    
    /**
     * Set category to Null
     *
     */
    function nullCategory()
    {
        return $this->setCategory(NULL);
    }
    
    
    /**
     * (non-PHPdoc)
     * @see IRI\Bundle\WikiTagBundle\Model.TagInterface::setWikipediaInfo()
     */
    function setWikipediaInfo($wikipedia_info)
    {
        $new_label = $wikipedia_info['new_label'];
        $status = $wikipedia_info['status'];
        $url = $wikipedia_info['wikipedia_url'];
        $pageid = $wikipedia_info['pageid'];
        $dbpedia_uri = $wikipedia_info["dbpedia_uri"];
        $wikipedia_revision_id = $wikipedia_info['revision_id'];
        $alternative_label = array_key_exists('alternative_label', $wikipedia_info) ? $wikipedia_info['alternative_label'] : null;
        $alternative_url = array_key_exists('wikipedia_alternative_url', $wikipedia_info) ? $wikipedia_info['wikipedia_alternative_url'] : null;
        $alternative_pageid = array_key_exists('alternative_pageid', $wikipedia_info) ? $wikipedia_info['alternative_pageid'] : null;
        
        # We save the datas
        if(! is_null($new_label))
        {
            $this->setLabel($new_label);
        }
        
        if(! is_null($status))
        {
            $this->setUrlStatus($status);
        }

        $this->setWikipediaUrl($url);
        $this->setWikipediaPageId($pageid);
        $this->setDbpediaUri($dbpedia_uri);
        $this->setAlternativeLabel($alternative_label);
        $this->setAlternativeWikipediaUrl($alternative_url);
        $this->setAlternativeWikipediaPageId($alternative_pageid);
        
    }
    
     
 }