<?php
/*
 * Created on 11.02.2012
 * Oliver Soop(osoop1@ut.ee)
 */
 
 include_once("YahooMediaTagger.php");
 include_once("DCTagger.php");
 include_once("../Story.php");
 class XMLBaseTagger {
 	
 	protected $name;
 	protected $baseTag;
 	protected $tagCollection;
 	
 	//Nimekiri k�ikidest RSS versioonidest, millele on parsimine kirjeldatud
 	private static $version20 = "2.0";
 	private static $version091 = "0.91";
 	private static $version092 = "0.92";
 	private static $version10 = "rdf:RDF";
 	
 	//Nimekiri k�ikidest nimeruumidest, millele on parsimine kirjeldatud
 	private static $yahooNS = "http://search.yahoo.com/mrss/";
 	private static $dcNS = "http://purl.org/dc/elements/1.1/";
 	
 	public function __construct() {
 		
 	}
 	
 	/**
 	 * Funktsioon, mis tagastab vastavalt sisendiks olevale nimeruumi kirjeldusele selle nimeruumi töötlemiseks
 	 * õige Tagger klassi
 	 */
 	public static function getNamespaceTagger($attribute) {
 		switch($attribute->nodeValue) {
 			case self::$yahooNS:
 			 	return new YahooMediaTagger();
 			case self::$dcNS:
 			 	return new DCTagger();
 			default:
 				return null;
 		}
 	}
 	
 	/**
 	 * Funktsioon, mis tagastab vastavalt versioonile õige <item> objektide põhitöötleja Tagger klassi
 	 */
 	public static function getRSSTagger($attribute) {
 		if($attribute == null) {
 			return new RSSBaseTagger();
 		}
 		switch($attribute->nodeValue) {
 			case self::$version20:
 				return new RSSBaseTagger();
 			case self::$version091:
 				return new RSSBaseTagger();
 			case self::$version092:
 				return new RSSBaseTagger();
 			case self::$version10:
 				return new RSSV10Tagger();
 			default:
 				return new RSSBaseTagger();
 		}
 	}
 	
 	
 	protected function updateNewsStory($story, $domElement) {
 	}
 	
 	 /**
 	 * Funktsioon, mis tagastab DOM objektide listist esimese väärtuse
 	 */
 	public static function getTagValue($domNodeList) {
 		if($domNodeList->length == 0) {
 			return null;
 		}
 		return strip_tags($domNodeList->item(0)->nodeValue);
 	}
 	
	/**
	 * Funktsioon, mis tagastab põhimärgendi
	 */ 	
 	public function getBaseTag() {
 		return $this->baseTag;
 	}
 	
 	/**
 	 * Funktsioon, mis tagastab nimetuse
 	 */
 	public function getName() {
 		return $this->name;
 	}
 	
 	
 	
 }
?>
