package com.fidufosyga.rules;

import com.fidufosyga.context.Context;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/**
 *
 * @author: Fabio Castillo G.
 */
public class NoCoincideFechaPermitidaMovilidad extends AbstractRule {
    public static final String ENTIDADES = "ENTIDADES";
    
    private SimpleDateFormat sdf;

    /**
     * @param field
     * @param registro
     * @param nombreArchivo
     * @return
     */
    @Override
    public boolean performValidation(String field, String registro[], String nombreArchivo) {
        if (field.length() == 0) {
            field = " ";
        }
        sdf = new SimpleDateFormat("dd/MM/yyyy");
        if (Context.getContext().getAttribute(ENTIDADES) == null) {
            Properties defaultProps = new Properties();
            FileInputStream in;
            try {
                in = new FileInputStream(System.getProperty("user.dir")
                        + File.separator + "entidades" + File.separator
                        + "entidadesContributivoHomologada.properties");
                defaultProps.load(in);
                in.close();
                Context.getContext().addAttribute(ENTIDADES, defaultProps);
            } catch (FileNotFoundException e) {
                return false;
            } catch (IOException e) {
                return false;
            }
        }
        int valor =Integer.valueOf((String) getParams()[0]);
        if (((Properties) Context.getContext().getAttribute(ENTIDADES)).getProperty(registro[valor]) != null) {
            try {
                Date fe = sdf.parse((String) getParams()[1]);
                return !fe.before(sdf.parse(field));
            } catch (ParseException ex) {
                return false;
            }
        }
        return false;
    }

}
