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.MaestroSubtiposAviso;
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 = "MaestroSubtiposAvisoValidator")
public class MaestroSubtiposAvisoValidator {
	private static final Logger LOGGER = LoggerFactory.getLogger(MaestroSubtiposAvisoValidator.class);

	private static final String LABEL_DESCES41 = "subtipoAviso.descEs41";
	private static final String LABEL_DESCEU41 = "subtipoAviso.descEu4subtipoAviso";

	public static final int MAX_LENGTH_DESCES41 = 75;
	public static final int MAX_LENGTH_DESCEU41 = 75;

	@Resource
	private ReloadableResourceBundleMessageSource appMessageSource;

	public void validate(List<ErrorField> errorFields, MaestroSubtiposAviso maestroSubtiposAviso) {
		MaestroSubtiposAvisoValidator.LOGGER.info("MaestroSubtiposAvisoValidator: validate ");

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

		// #########################
		// ###### DESCES41 ######
		// #########################

		// # Demasiados Caracteres #
		if (Boolean.TRUE.equals(!Utilidades.validarLongitud(maestroSubtiposAviso.getDescEs41(),
				MaestroSubtiposAvisoValidator.MAX_LENGTH_DESCES41))) {
			errorFields.add(new ErrorField(MaestroSubtiposAvisoValidator.LABEL_DESCES41,
					UtilValidaciones.getMensajeValidaLongitud(Utilidades.getLength(maestroSubtiposAviso.getDescEs41()),
							MaestroSubtiposAvisoValidator.MAX_LENGTH_DESCES41)));
		}
		// # Vacío #
		if (Boolean.TRUE.equals(Utilidades.isEmpty(maestroSubtiposAviso.getDescEs41()))) {
			errorFields.add(new ErrorField(MaestroSubtiposAvisoValidator.LABEL_DESCES41,
					UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
		}

		// #########################
		// ###### DESCEU41 ######
		// #########################

		// # Demasiados Caracteres #
		if (Boolean.TRUE.equals(!Utilidades.validarLongitud(maestroSubtiposAviso.getDescEu41(),
				MaestroSubtiposAvisoValidator.MAX_LENGTH_DESCEU41))) {
			errorFields.add(new ErrorField(MaestroSubtiposAvisoValidator.LABEL_DESCEU41,
					UtilValidaciones.getMensajeValidaLongitud(Utilidades.getLength(maestroSubtiposAviso.getDescEu41()),
							MaestroSubtiposAvisoValidator.MAX_LENGTH_DESCEU41)));
		}
		// # Vacío #
		if (Boolean.TRUE.equals(Utilidades.isEmpty(maestroSubtiposAviso.getDescEu41()))) {
			errorFields.add(new ErrorField(MaestroSubtiposAvisoValidator.LABEL_DESCEU41,
					UtilValidaciones.LABEL_ERROR_OBLIGATORIO));
		}
	}
}
