package tool.regEx;

import java.util.regex.Pattern;

/******************************************************************************
 * RegExFactory.java (visitor Pattern)
 * 
 * Permet de centraliser les regex et de les appeler de façon dynamique
 *  
 * Dependances:
 * java.util.regex.Pattern
 * 
 * Projet Orford
 *****************************************************************************
 *modification
 *nom date     explication
 *Martin 29 aout  centraliser la redondance des différent pays en une
 *classe abstraite
 ****************************************************************************/

/**
 * @author Jonathan Guertin
 *
 */
public abstract class RegExFactoryGeneral implements RegExFactory {
	
	/**
	 * Retourne le pattern du regex pour vérifier un montant d'argent
	 */
	private static Pattern argent = Pattern.compile("^\\$?[\\d ]+([,\\.]\\d{1,2})?\\$?$");
	/* (non-Javadoc)
	 * @see regEx.RegExFactory#argent()
	 */
	@Override
	public  Pattern argent(){
		return argent;
	}
	
	/**
	 * Retourne le pattern du regex pour vérifier une ville ou une province
	 */
	private static Pattern villeProvince = Pattern.compile("^[a-zA-Z]([a-zA-Z \\-]+)?");
	/* (non-Javadoc)
	 * @see regEx.RegExFactory#villeProvince()
	 */
	@Override
	public  Pattern villeProvince(){
		return villeProvince;
	}

	
	/**
	 * Retourne le pattern du regex pour vérifier une date de carte de credit
	 */
	private static Pattern dateCarteCredit = Pattern.compile("^(1[0-1-2]|0?[1-9])\\/\\d{4}$");
	/* (non-Javadoc)
	 * @see regEx.RegExFactory#dateCarteCredit()
	 */
	@Override
	public  Pattern dateCarteCredit(){
		return dateCarteCredit;
	}
	
	/* (non-Javadoc)
	 * @see regEx.RegExFactory#chaineArgent()
	 */
	@Override
	public  String chaineArgent(){
		return "Le montant doit être sous les forme: 10 | 10.0 | 10.00";
	}
	
	/* (non-Javadoc)
	 * @see regEx.RegExFactory#chaineVilleProvince()
	 */
	@Override
	public  String chaineVilleProvince(){
		return "La ville ou la province doit commencer par une lettre et doit être suivi par des lettres, tirets ou apostrophes";
	}
	
	/* (non-Javadoc)
	 * @see regEx.RegExFactory#chaineDateCarteCredit()
	 */
	@Override
	public  String chaineDateCarteCredit(){
		return "La date de carte de credit doit être sous les forme: 1/2013 | 12/2013";
	}
}
