package com.ejie.ab39a.exceptions;

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

/**
 * ErrorField.
 * 
 *  
 */
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
	 *            Mensaje 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 campo
	 * @param mensaje
	 *            String mensaje
	 */
	public ErrorField(String campo, String mensaje) {
		this(campo != null ? new String[] { campo } : null, 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
	 * @param param
	 *            String String
	 */
	public ErrorField(String campo, String mensaje, String param) {
		this.campo = campo != null ? new String[] { campo } : null;
		this.mensajes = new ArrayList<Mensaje>();
		this.mensajes.add(new Mensaje(mensaje, param));
	}

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

	/**
	 * 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;
	}
}
