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

package com.fidufosyga.rules;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.fidufosyga.rules.util.ValidarFecha;

/**
 * 
 * @author jlozanop
 */
public class FechaRangoMinimaMaximaDependienteCompuesta extends AbstractRule {

	String DATE_FORMAT = "dd/MM/yyyy";

	SimpleDateFormat sdf;

	// Create object of SimpleDateFormat and pass the desired date format.

	/** Creates a new instance of CampoVacio */
	public FechaRangoMinimaMaximaDependienteCompuesta() {
		sdf = new SimpleDateFormat(DATE_FORMAT);
		sdf.setLenient(false);
	}

	public boolean performValidation(String field, String registro[],String nombreArchivo) 
	{
		String DatoCompara1 = registro[new Integer((String) getParams()[0]).intValue()];
		String DatoCompara2 = registro[new Integer((String) getParams()[2]).intValue()];
		Date dateMinima = null;
		Date dateMaxima = null;
		if (DatoCompara1.equals((String) getParams()[1])) {
			if (DatoCompara2.equals((String) getParams()[3])) {

				Date dateCampo = null;
	
				if (!ValidarFecha.esFecha(field))
					return false;
	
				try {
					dateCampo = sdf.parse(field);
					dateMinima = sdf.parse((String) getParams()[2]);
					
					if(sdf.parse((String) getParams()[3]).equals("GETDATE()"))				
						dateMaxima = Calendar.getInstance().getTime();
					else
						dateMaxima = sdf.parse((String) getParams()[3]);
					
				} catch (Exception e) {
					return false;
				}
	
				if (dateCampo.after(dateMaxima) || dateCampo.before(dateMinima)) {
					return true;
				}
			}
		}
		return false;
	}
}
