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

import java.util.ArrayList;
import java.util.Arrays;
import java.util.StringTokenizer;

/**
 *
 * @author Marinela.QuinteroT1
 */
public class NoContieneValorObligatorioNov extends AbstractRule {

	/** Creates a new instance of NoContieneValorObligatorio */
	public NoContieneValorObligatorioNov() {
	}

	public void setParams(Object[] params) {
		String valores = (String) params[2];
		ArrayList<String> listaString = new ArrayList<String>();
		StringTokenizer st = new StringTokenizer(valores, ",");
		while (st.hasMoreTokens()) {
			listaString.add(st.nextToken());
		}
		String[] array = listaString.toArray(new String[listaString.size()]);
		Arrays.sort(array);
                 
               
		
                params[2] = array;
		super.setParams(params);
	}

	public boolean performValidation(String field, String[] registro,
			String nombreArchivo) {
                    
        String campoTipoNovedad = (String) (getParams()[0]);
        int campoDepNovedad = Integer.parseInt(campoTipoNovedad);
        String TipoNovedad = registro[campoDepNovedad];
        
        
        String Novedad = (String) getParams()[1];
        
//         if ( TipoNovedad.equals(Novedad)) {
//         
//            
//            if (field == null || field.trim().isEmpty()) {
//                
//                return true; 
//            }
//             if ((TipoNovedad.equals("N12") || TipoNovedad.equals("N41")) && (field == null || field.trim().isEmpty()))  {
//                return false;
//                 } else {
//         
//                 return Arrays.binarySearch((String[]) getParams()[2], field) < 0;
//
//                }
//             }
//            return false;

    if (TipoNovedad.equals(Novedad)) {

    field = field == null ? "" : field.trim();
    
    // permitir vacío
        if (field.isEmpty()) {
            if (TipoNovedad.equals("N41")) {
             return true;   // glosa
            }
             return false;      // permitido para N12
        }
        
        String[] valoresPermitidos = (String[]) getParams()[2];
        
        for (String v : valoresPermitidos) {
            if (field.equals(v)) {
                return false;
            }
        }

    return true; 
}
    return false;      
}
}