package com.ejie.ad74a.validacion;

import java.util.List;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.stereotype.Component;

import com.ejie.ad74a.exceptions.Ad74aException;
import com.ejie.ad74a.exceptions.ErrorField;
import com.ejie.ad74a.model.MaestroTiposAviso;
import com.ejie.ad74a.util.comun.UtilLiterales;
import com.ejie.ad74a.util.comun.UtilValidaciones;
import com.ejie.ad74a.util.comun.Utilidades;
import com.ejie.ad74a.util.constantes.Constantes;

@Component(value = "MaestroTiposAvisoValidator")
public class MaestroTiposAvisoValidator {
	private static final Logger LOGGER = LoggerFactory.getLogger(MaestroTiposAvisoValidator.class);

	private static final String LABEL_DESCES40 = "tipoAviso.descEs40";
	private static final String LABEL_DESCEU40 = "tipoAviso.descEu40";

	public static final int MAX_LENGTH_DESCES40 = 75;
	public static final int MAX_LENGTH_DESCEU40 = 75;

	@Resource
	private ReloadableResourceBundleMessageSource appMessageSource;

	public void validate(List<ErrorField> errorFields, MaestroTiposAviso maestroTiposAviso) {
		MaestroTiposAvisoValidator.LOGGER.info("MaestroTiposAvisoValidator: validate ");

		if (maestroTiposAviso == null) {
			throw new Ad74aException(UtilLiterales.getLiteralMessage(appMessageSource, Constantes.ERROR_GENERICO));
		}

		// #########################
		// ###### DESCES40 ######
		// #########################

		// # Demasiados Caracteres #
		if (Boolean.TRUE.equals(!Utilidades.validarLongitud(maestroTiposAviso.getDescEs40(),
				MaestroTiposAvisoValidator.MAX_LENGTH_DESCES40))) {
			errorFields.add(new ErrorField(MaestroTiposAvisoValidator.LABEL_DESCES40,
					UtilValidaciones.getMensajeValidaLongitud(Utilidades.getLength(maestroTiposAviso.getDescEs40()),
							MaestroTiposAvisoValidator.MAX_LENGTH_DESCES40)));
		}
		// # Vacío #
		if (Boolean.TRUE.equals(Utilidades.isEmpty(maestroTiposAviso.getDescEs40()))) {
			errorFields.add(new ErrorField(MaestroTiposAvisoValidator.LABEL_DESCES40,
					UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
		}

		// #########################
		// ###### DESCEU40 ######
		// #########################

		// # Demasiados Caracteres #
		if (Boolean.TRUE.equals(!Utilidades.validarLongitud(maestroTiposAviso.getDescEu40(),
				MaestroTiposAvisoValidator.MAX_LENGTH_DESCEU40))) {
			errorFields.add(new ErrorField(MaestroTiposAvisoValidator.LABEL_DESCEU40,
					UtilValidaciones.getMensajeValidaLongitud(Utilidades.getLength(maestroTiposAviso.getDescEu40()),
							MaestroTiposAvisoValidator.MAX_LENGTH_DESCEU40)));
		}
		// # Vacío #
		if (Boolean.TRUE.equals(Utilidades.isEmpty(maestroTiposAviso.getDescEu40()))) {
			errorFields.add(new ErrorField(MaestroTiposAvisoValidator.LABEL_DESCEU40,
					UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
		}
	}
}
