package utils;

import java.util.ArrayList;
import java.util.List;

public class DettaglioErrori {

	public enum LivelliErrore {BLOCCANTE, OK, WARNING};

	private class ErrorDescription
	{
		LivelliErrore Livello;
		String Dettaglio;
		
		public ErrorDescription(LivelliErrore livello, String dettaglio) {
			super();
			this.Livello = livello;
			this.Dettaglio = dettaglio;
		}
		
		public LivelliErrore getLivello() {
			return Livello;
		}
		public void setLivello(LivelliErrore livello) {
			Livello = livello;
		}
		public String getDettaglio() {
			return Dettaglio;
		}
		public void setDettaglio(String dettaglio) {
			Dettaglio = dettaglio;
		}
		
		
	}

	
	
	int erroriCampiObbligatori;
	int erroriCampiData;
	int erroriCongruenza;
	int erroriPiazzatura;
	int erroriWarning;

	private LivelliErrore livello;
	private List<ErrorDescription> _campiConErrore = new ArrayList<ErrorDescription>();

	
	public DettaglioErrori() {
		this.erroriCampiObbligatori = 0;
		this.erroriCampiData = 0;
		this.erroriCongruenza = 0;
		this.erroriPiazzatura = 0;
		this.erroriWarning = 0;
		this.livello = LivelliErrore.OK;
	}
	
	
	public int getErroriCampiObbligatori() {
		return erroriCampiObbligatori;
	}


	public void setErroriCampiObbligatori(int erroriCampiObbligatori) {
		this.erroriCampiObbligatori = erroriCampiObbligatori;
	}


	public int getErroriCampiData() {
		return erroriCampiData;
	}


	public void setErroriCampiData(int erroriCampiData) {
		this.erroriCampiData = erroriCampiData;
	}


	public int getErroriCongruenza() {
		return erroriCongruenza;
	}


	public void setErroriCongruenza(int erroriCongruenza) {
		this.erroriCongruenza = erroriCongruenza;
	}


	public int getErroriPiazzatura() {
		return erroriPiazzatura;
	}


	public void setErroriPiazzatura(int erroriPiazzatura) {
		this.erroriPiazzatura = erroriPiazzatura;
	}


	public List<ErrorDescription> get_campiConErrore() {
		return _campiConErrore;
	}


	public void set_campiConErrore(List<ErrorDescription> _campiConErrore) {
		this._campiConErrore = _campiConErrore;
	}


	public LivelliErrore getLivelloErrore() {
		return livello;
	}

	public void setLivelloErrore(LivelliErrore livelloErrore) {
		this.livello = livelloErrore;
	}

	public int getErroriWarning() {
		return erroriWarning;
	}

	public void setErroriWarning(int erroriWarning) {
		this.erroriWarning = erroriWarning;
	}
	

	public void AggiungiErroriCampiObbligatori(String NomeCampo, String Valore )
	{
		erroriCampiObbligatori++;
		_campiConErrore.add( 
			new ErrorDescription(LivelliErrore.BLOCCANTE,String.format("Errore Campo Obbligatorio '%s=%s'", NomeCampo, Valore))
		);
	}
	public void AggiungiErroriCampiData(String NomeCampo, String Valore )
	{
		erroriCampiData++;
		_campiConErrore.add(
			new ErrorDescription(LivelliErrore.BLOCCANTE,String.format("Errore Campo Data '%s=%s'", NomeCampo, Valore))
		);
	}
	public void AggiungiErroriCongruenza( String NomeCampo, String SubError, String Valore )
	{
		erroriCongruenza++;
		_campiConErrore.add(
			new ErrorDescription(
				LivelliErrore.BLOCCANTE,
				String.format("Errore Congruenza '%s=%s : %s'", NomeCampo, Valore, SubError))
			);
	}
	public void AggiungiErroriPiazzatura( String NomeCampo, String Valore )
	{
		erroriPiazzatura++;
		_campiConErrore.add(
			new ErrorDescription(
				LivelliErrore.BLOCCANTE,
				String.format("Errore Piazzatura '%s=%s'", NomeCampo, Valore))
			);
	}
	public void AggiungiErroriWarning( String NomeCampo, String Valore )
	{
		erroriWarning++;
		_campiConErrore.add(
			new ErrorDescription(
				LivelliErrore.WARNING,
				String.format("Campo in Warning '%s=%s'", NomeCampo, Valore))
			);
	}

	protected void Clear()
	{
		erroriCampiObbligatori = 0;
		erroriCampiData = 0;
		erroriCongruenza = 0;
		erroriPiazzatura = 0;
		erroriWarning = 0;
		_campiConErrore = new ArrayList<ErrorDescription>();
	}	
	
}
