package com.ejie.ad74a.exceptions;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * ErrorField.
 * 
 * @author
 */
public class ErrorField implements Serializable {

	private static final long serialVersionUID = 1L;

	// Nombre del campo o label del campo
	private String[] campo;
	// Errores del campo
	private List<Mensaje> mensajes;

	/**
	 * Method 'ErrorField'.
	 * 
	 * @param campo    String campo
	 * @param mensajes List<Mensaje> mensajes
	 */
	public ErrorField(String campo, List<Mensaje> mensajes) {
		this.campo = campo != null ? new String[] { campo } : null;
		this.mensajes = mensajes;
	}

	/**
	 * Method 'ErrorField'.
	 * 
	 * @param campo   String campo
	 * @param mensaje String Mensaje
	 */
	public ErrorField(String campo, Mensaje mensaje) {
		this.campo = campo != null ? new String[] { campo } : null;
		this.mensajes = new ArrayList<Mensaje>();
		this.mensajes.add(mensaje);
	}

	/**
	 * Method 'ErrorField'.
	 * 
	 * @param mensaje String mensaje
	 */
	public ErrorField(String mensaje) {
		this.campo = null;
		this.mensajes = new ArrayList<Mensaje>();
		this.mensajes.add(new Mensaje(mensaje));
	}

	/**
	 * Method 'ErrorField'.
	 * 
	 * @param campo   String[] array de campos
	 * @param mensaje String mensaje
	 */
	public ErrorField(String[] campo, String mensaje) {
		this.campo = campo;
		this.mensajes = new ArrayList<Mensaje>();
		this.mensajes.add(new Mensaje(mensaje));
	}

	/**
	 * Method 'ErrorField'.
	 * 
	 * @param campo   String campo
	 * @param mensaje String mensaje
	 */
	public ErrorField(String campo, String mensaje) {
		this(campo != null ? new String[] { campo } : null, mensaje);
	}

	/**
	 * Method 'ErrorField'.
	 * 
	 * @param campo   String campo
	 * @param mensaje String mensaje
	 * @param params  String ...params
	 */

	public ErrorField(String campo, String mensaje, String... params) {
		this.campo = campo != null ? new String[] { campo } : null;
		this.mensajes = new ArrayList<Mensaje>();

		this.mensajes.add(new Mensaje(mensaje, true, params));
	}

	/**
	 * Method 'ErrorField'.
	 * 
	 * @param campo      String campo
	 * @param mensaje    String mensaje
	 * @param params     String params
	 * @param paramIsKey boolean paramIsKey
	 */
	public ErrorField(String campo, String mensaje, boolean paramIsKey, String... params) {
		this.campo = campo != null ? new String[] { campo } : null;
		this.mensajes = new ArrayList<Mensaje>();

		this.mensajes.add(new Mensaje(mensaje, paramIsKey, params));

	}

	/**
	 * Method 'getCampo'.
	 * 
	 * @return String
	 */
	public String[] getCampo() {
		return this.campo;
	}

	/**
	 * Method 'setCampo'.
	 * 
	 * @param campo String
	 */
	public void setCampo(String... campo) {
		this.campo = campo;
	}

	/**
	 * Method 'getMensajes'.
	 * 
	 * @return List<Mensaje>
	 */
	public List<Mensaje> getMensajes() {
		return this.mensajes;
	}

	/**
	 * Method 'setMensajes'.
	 * 
	 * @param mensajes List<Mensaje>
	 */
	public void setMensajes(List<Mensaje> mensajes) {
		this.mensajes = mensajes;
	}
}
