Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/repo/includes/StatementRankSerializer.php
<?php

namespace Wikibase;

use Deserializers\Deserializer;
use Deserializers\Exceptions\DeserializationException;
use Serializers\Exceptions\SerializationException;
use Serializers\Serializer;
use Wikibase\DataModel\Statement\Statement;

/**
 * Serializer and Deserializer for Statement Ranks.
 *
 * @todo this could be moved to DataModelSerialization (in some form)
 *
 * @license GPL-2.0+
 * @author Jeroen De Dauw < jeroendedauw@gmail.com >
 * @author Daniel Kinzler
 * @author Addshore
 * @author Thiemo Mättig
 */
class StatementRankSerializer implements Serializer, Deserializer {

	/**
	 * @var string[]
	 */
	private static $rankMap = array(
		Statement::RANK_DEPRECATED => 'deprecated',
		Statement::RANK_NORMAL => 'normal',
		Statement::RANK_PREFERRED => 'preferred',
	);

	/**
	 * Returns the available ranks in serialized form.
	 *
	 * @return string[]
	 */
	public static function getRanks() {
		return array_values( self::$rankMap );
	}

	/**
	 * Deserializes the rank and returns an element from the Statement::RANK_ enum.
	 *
	 * @param string $serializedRank
	 *
	 * @throws DeserializationException
	 * @return int
	 */
	public function deserialize( $serializedRank ) {
		$ranks = array_flip( self::$rankMap );

		if ( !array_key_exists( $serializedRank, $ranks ) ) {
			throw new DeserializationException( 'Invalid rank serialization' );
		}

		return $ranks[$serializedRank];
	}

	/**
	 * Serializes the rank.
	 *
	 * @param int $rank
	 *
	 * @throws SerializationException
	 * @return string
	 */
	public function serialize( $rank ) {
		if ( !array_key_exists( $rank, self::$rankMap ) ) {
			throw new SerializationException( 'Invalid rank' );
		}

		return self::$rankMap[$rank];
	}

}