/*
 * SegunValorDeUnCampoPos6DiferenteParaValorCampoDependiente.java
 *
 * Created on 23 de marzo de 2007, 08:46 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.fidufosyga.rules;

/**
 * 
 * @author Julian
 */
public class SegunValorDeUnCampoPos6DiferenteParaValorCampoDependiente extends
		AbstractRule {

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

	// 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) {

		if (registro[new Integer((String) getParams()[0]).intValue()]
				.equals(getParams()[1])) {
			String otroCampo = registro[new Integer((String) getParams()[2])
					.intValue()];
			String valorEsperadoOtroCampo = (String) getParams()[3];

			String stringACortar = registro[new Integer((String) getParams()[4])
					.intValue()];
			int posACortar = new Integer((String) getParams()[5]).intValue() - 1;
			int posFinal = new Integer((String) getParams()[5]).intValue();
			String letra = (String) getParams()[6];
			String valorDelCampo = (String) getParams()[7];
			try {
				if (otroCampo.equals(valorEsperadoOtroCampo)
						&& field.equals(valorDelCampo))
					if (!stringACortar.substring(posACortar, posFinal).equals(
							letra))

						return true;

			} catch (Exception e) {
				return false;
			}

		}

		return false;
	}
}
