'''

@author: olivier.massot, 2018
'''

VALIDATION_ERROR_LEVELS = {10: "MINEURE", 20: "ATTENTION", 30: "ERREUR", 40: "CRITIQUE"}

MINOR = 10
WARNING = 20
ERROR = 30
CRITICAL = 40

### Vérifications générales

# Fichiers présents
# Fichiers lisibles
# SRID

#### Schéma de données

# Présence des champs
# Type de données
# Données obligatoires
# Valeurs autorisées
# Emprise géographique
# Type de géométrie

####

# Unicité des codes
# Vérification de la présence dans la base des code existants, et si exsitence, vérifie s'il s'agit du même
# Vérification des cardinalités










class BaseValidationError():
    name = ""
    level = 0
    def __init__(self, message):
        self.message = message
        
#### Erreurs Critiques

class MissingFile(BaseValidationError):
    level = CRITICAL
    name = "Fichier Manquant"
    
class UnreadableFile(BaseValidationError):
    level = CRITICAL
    name = "Fichier Illisible"

class WrongSrid(BaseValidationError):
    level = CRITICAL
    name = "Mauvais SRID"

class FieldTypeError(BaseValidationError):
    level = CRITICAL
    name = "Le champs n'a pas le bon type de donnée"
    
#### Erreurs

class OutOfBoxCoordinates(BaseValidationError):
    level = ERROR
    name = "Coordonnées hors de la zone autorisée"

class FormatError(BaseValidationError):
    level = ERROR
    name = "Le champs n'a pas le bon format"

class MissingValueError(BaseValidationError):
    level = ERROR
    name = "Le champs doit être renseigné"
    
class FieldValueError(BaseValidationError):
    level = ERROR
    name = "La valeur du champs est invalide"

#### Avertissements






#### Erreurs mineures



