/*
 * ParaUnValorDeUnaListaOtroCampoParejaDeCamposIgualesDep.java
 *
 * Created on 28 de marzo de 2007, 03:19 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;

/**
 * 
 * @author Jsolano
 */
public class ParaUnValorDeUnaListaOtroCampoParejaDeCamposIgualesDep extends AbstractRule {

    public ParaUnValorDeUnaListaOtroCampoParejaDeCamposIgualesDep() {
        
    }

    @Override
    public void setParams(Object[] params) {
        String valores = (String) params[3];
        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[3] = array;
        super.setParams(params);
    }

    @Override
    public boolean performValidation(String field, String[] registro,String nombreArchivo) {
        String codigoReturnCampo = registro[new Integer((String) getParams()[0]).intValue()];
        if (codigoReturnCampo.equals((String) getParams()[1])) {
            String otroCampo = registro[new Integer((String) getParams()[2]).intValue()];
            if (Arrays.binarySearch((String[]) getParams()[3], otroCampo) >= 0) {
                String campo1 = registro[new Integer((String) getParams()[4]).intValue()];
                String campo2 = registro[new Integer((String) getParams()[5]).intValue()];
                String campo3 = registro[new Integer((String) getParams()[6]).intValue()];
                String campo4 = registro[new Integer((String) getParams()[7]).intValue()];
                if (!campo1.equals(campo2) || !campo3.equals(campo4)) {
                    return true;
                }
            }
        }
        return false;
    }

}
