/*
 * SegunValorDeUnCampoPos6DiferenteParaValorCampo.java
 *
 * Created on 22 de marzo de 2007, 11:12 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.fidufosyga.rules;

/**
 * 
 * 
 * 4,'MS'#'AS','1'#'2'
 * 
 * ListaDiferenteOtroCampoValorCampoInvalido COL?1 NOT IN (?2) AND
 * 
 * @campo in (?3)
 * 
 * @author Julian
 */
public class SegunValorDeUnCampoPos6DiferenteParaValorCampo extends
		AbstractRule {

	/** Creates a new instance of SubcadenaArchivoDiferenteValorCampo */
	public SegunValorDeUnCampoPos6DiferenteParaValorCampo() {
	}

	// COL?1=?2 AND SUBSTRING(COL?3, ?4,1)<>?5 AND @campo=?6
	// 4,AS,5,6,D,1
	public boolean performValidation(String field, String registro[],
			String nombreArchivo) {

		String otroCampo = registro[new Integer((String) getParams()[0])
				.intValue()];
		String valorEsperadoOtroCampo = (String) getParams()[1];

		String stringACortar = registro[new Integer((String) getParams()[2])
				.intValue()];
		int posACortar = new Integer((String) getParams()[3]).intValue() - 1;
		int posFinal = new Integer((String) getParams()[3]).intValue();
		String letra = (String) getParams()[4];
		String valorDelCampo = (String) getParams()[5];
		try {

			if ((otroCampo.equals(valorEsperadoOtroCampo) && field
					.equals(valorDelCampo)))
				if (!stringACortar.substring(posACortar, posFinal)
						.equals(letra))
					return true;

		} catch (Exception e) {
			return false;
		}

		return false;
	}
}
