/*
 * ParaUnValorDeUnaListaOtroCampoParejaDeCamposIguales.java
 *
 * Created on 27 de marzo de 2007, 02:27 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.fidufosyga.rules;

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

// 11,3#4,20,1,21,2
/**
 * 
 * @author Julian
 */
public class ParaUnValorDeUnaListaOtroCampoParejaDeCamposIguales extends AbstractRule {
    public ParaUnValorDeUnaListaOtroCampoParejaDeCamposIguales() {
        
    }
    // /23,1,32,15,33,16
    @Override
    public void setParams(Object[] params) {
        String valores = (String) params[1];
        ArrayList<String> listaString = new ArrayList();
        StringTokenizer st = new StringTokenizer(valores, ",");
        while (st.hasMoreTokens()) {
            listaString.add(st.nextToken());
        }
        String[] array = listaString.toArray(new String[listaString.size()]);
        Arrays.sort(array);
        params[1] = array;
        super.setParams(params);
    }
    // /23,3,32,15,33,16"
    @Override
    public boolean performValidation(String field, String[] registro,String nombreArchivo) {
        String otroCampo = registro[new Integer((String) getParams()[0]).intValue()];
        if (Arrays.binarySearch((String[]) getParams()[1], otroCampo) >= 0) {
            String campo1 = registro[new Integer((String) getParams()[2]).intValue()];
            String campo2 = registro[new Integer((String) getParams()[3]).intValue()];
            String campo3 = registro[new Integer((String) getParams()[4]).intValue()];
            String campo4 = registro[new Integer((String) getParams()[5]).intValue()];
            System.out.println("campo1: " + campo1);
            System.out.println("campo2: " + campo2);
            System.out.println("campo3: " + campo3);
            System.out.println("campo4: " + campo4);
            if (!campo1.equals(campo2) || !campo3.equals(campo4)) {
                    return true;
            }
        }
        return false;
    }
}