/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.fidufosyga.rules;

/**
 *
 * @author Marinela.Quintero
 */

public class ValidaN46Vacio extends AbstractRule {

    private int campoReferencia;
    private String valorEsperado;
    private int[] camposAValidar;

    @Override
    public void setParams(Object[] params) {
        if (params.length < 3) {
            throw new IllegalArgumentException("Se esperaban al menos 3 parámetros: campoReferencia, valorEsperado y campos a validar.");
        }

        campoReferencia = Integer.parseInt((String) params[0]);
        valorEsperado = (String) params[1];

        camposAValidar = new int[params.length - 2];
        for (int i = 2; i < params.length; i++) {
            camposAValidar[i - 2] = Integer.parseInt((String) params[i]);
        }

        super.setParams(params);
    }

    @Override
    public boolean performValidation(String field, String[] registro, String nombreArchivo) {
        // Solo se aplica la validación si el campo de referencia coincide con el valor esperado
        if (!registro[campoReferencia].equals(valorEsperado)) {
            return false;
        }

        boolean algunoConValor = false;

        for (int i : camposAValidar) {
            if (i >= registro.length) continue;

            String valor = registro[i];
            if (valor != null && !valor.trim().isEmpty()) {
                algunoConValor = true;
                break;
            }
        }

        // Retorna true (es inválido) si ninguno tiene valor
        return !algunoConValor;
    }
}

