<?php
class InvalidOperatorException extends Exception{
	public $type;
	public $operator;
	
	public function __construct ($type,$operator){
		parent::__construct('Invalid operator "'.$operator.'" for the type '.$type);
	}
	
}
class Utility{
	
	/*
	 * <> ou !=
	
...les deux valeurs ne sont pas égales
<
	
...la valeur de gauche est strictement inférieure à celle de droite
>
	
...la valeur de gauche est strictement supérieure à celle de droite
<=
	
...la valeur de gauche est strictement inférieure ou égale à celle de droite
>=
	
...la valeur de gauche est strictement supérieure ou égale à celle de droite
BETWEEN..AND
	
...la valeur testée est située entre deux valeurs données
IN
	
...la valeur testée se situe dans une liste valeurs données
NOT IN
	
...la valeur testée ne se situe pas dans une liste de valeurs données
LIKE
	
...la valeur de gauche correspond à celle de droite (celle de droite peux utiliser le caractère % pour simuler n'importe quel nombre de caractère, et _ pour un seul caractère
NOT LIKE
	
...les deux valeurs ne correspondent pas
REGEXP ou RLIKE
	
...la valeur de gauche correspond à l'expression régulière donnée
NOT REGEXP
	
...la valeur de gauche ne correspond pas à l'expression régulière donnée
	 */
	
	public static function getIntegerSqlOperator($operator){
		switch ($operator){
			case '=':
				return '=';
			case '<':
				return '<';
			case '>':
				return '>';
			case '<=':
				return '<=';
			case '>=':
				return '>=';
			case '=<':
				return '<=';
			case '<>':
				return '<>';
			case '!=':
				return '!=';
			case '!<':
				return '!<';
			case '!>':
				return '!>';
			default:
				throw new InvalidOperatorException('integer',$operator);
		}
	}

	public static function getStringSqlOperator($operator){
		switch ($operator){
			case '=':
				return '=';
			case '&like;':
				return 'LIKE';
			default:
				throw new InvalidOperatorException('string',$operator);
		}
	}
	
	public static function getDateSqlOperator($operator){
		switch ($operator){
			case '=':
				return '=';
			case '<':
				return '<';
			case '>':
				return '>';
			case '<=':
				return '<=';
			case '>=':
				return '>=';
			case '=<':
				return '<=';
			case '<>':
				return '<>';
			case '!=':
				return '!=';
			case '!<':
				return '!<';
			case '!>':
				return '!>';
			default:
				throw new InvalidOperatorException('date',$operator);
		}
	}
	
}