package client.model.problem;

import java.util.ArrayList;

/** <u><b>Explication générale de la classe :</b></u>
 * <P>Cette classe permet de créer une contrainte
 *
 * @author Dream Team - ING2
 */
public class Contrainte {
	
	private static int idGenerator = -1;
	
	//Déclaration des variables
	private ArrayList<Parameters> listParameters;
	private int idContrainte;
	
	/**<u><i>Explication générale du constructeur :</i></u>
     * <P> Constructeur de la classe permettant de créer un objet de type Contrainte.
     * 
     */
	public Contrainte(){
		this.idContrainte = ++idGenerator;
		listParameters = new ArrayList<Parameters>(); 
	}
	
	/**<u><i>Explication générale de la méthode :</i></u>
     *  méthode permet de récupérer l'array des paramètres
     * 
     * @return l'array des paramètres
     * 
     */
	public ArrayList<Parameters> getTabParameters(){
		return listParameters;
	}
	
	/**<u><i>Explication générale de la méthode :</i></u>
     *  méthode permet de mettre une nouvelle référence de l'array des paramètres
     * 
     * @param listParameters nouvel array des paramètres
     * 
     */
	public void setTabParameters(ArrayList<Parameters> listParameters){
		this.listParameters = listParameters;
	}
	
	/**<u><i>Explication générale de la méthode :</i></u>
     *  méthode permet d'ajouter des paramètres
     * 
     * @param p paramètres à ajouter
     * 
     */
	public void addParameters(Parameters p){
		listParameters.add(p);
	}
	
	/**<u><i>Explication générale de la méthode :</i></u>
     *  méthode permet de récupérer un paramètre à un indice donné
     * 
     * @param i indice
     * 
     * @return paramètres à ajouter
     * 
     */
	public Parameters getParameters(int i){
		return listParameters.get(i);
	}
	
	/**<u><i>Explication générale de la méthode :</i></u>
     *  méthode permet de supprimer un paramètre à un indice donné
     * 
     * @param i indice
     * 
     */
	public void removeParameters(int i){
		listParameters.remove(i);
	}

	/**<u><i>Explication générale de la méthode :</i></u>
     *  méthode permet de récupérer l'id d'une contrainte
     * 
     * @return id de la contrainte
     * 
     */
	public int getIdContrainte() {
		return idContrainte;
	}

	/**<u><i>Explication générale de la méthode :</i></u>
     *  méthode permet de mettre un nouvel id d'une contrainte
     * 
     * @param idContrainte nouvel id de la contrainte
     * 
     */
	public void setIdContrainte(int idContrainte) {
		this.idContrainte = idContrainte;
	}
	
}
