package com.fidufosyga.model;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class FormularioModel {

	private int numeroRegistros;

	private String version;

	private String tipoFormulario;

	private String archivoGlosas;

	private boolean cifrado;

	private boolean compresion;

	private EstadisticasBean estadisticas = new EstadisticasBean();

	private List<String> filtros = new ArrayList<String>();

	private List<String> tablasDescripcion = new ArrayList<String>();

	private List<String> tablasOrigen = new ArrayList<String>();

	private List<ArchivoModel> archivosValidar = new ArrayList<ArchivoModel>();

	// private Map<String, String> paramatrosPaquete = new LinkedHashMap<String,
	// String>();

	public FormularioModel(String tipoFormulario) {
		// TODO Auto-generated constructor stub
		this.tipoFormulario = tipoFormulario;
	}

	public int getNumeroRegistros() {
		return numeroRegistros;
	}

	public void setNumeroRegistros(int numeroRegistros) {
		this.numeroRegistros = numeroRegistros;
	}

	public String getVersion() {
		return version;
	}

	public void setVersion(String version) {
		this.version = version;
	}

	public String getTipoFormulario() {
		return tipoFormulario;
	}

	public void setTipoFormulario(String tipoFormulario) {
		this.tipoFormulario = tipoFormulario;
	}

	public String getArchivoGlosas() {
		return archivoGlosas;
	}

	public void setArchivoGlosas(String archivoGlosas) {
		this.archivoGlosas = archivoGlosas;
	}

	public boolean isCifrado() {
		return cifrado;
	}

	public void setCifrado(boolean cifrado) {
		this.cifrado = cifrado;
	}

	public boolean isCompresion() {
		return compresion;
	}

	public void setCompresion(boolean compresion) {
		this.compresion = compresion;
	}

	public List<ArchivoModel> getArchivosValidar() {
		return archivosValidar;
	}

	public void setArchivosValidar(List<ArchivoModel> archivosValidar) {
		this.archivosValidar = archivosValidar;
	}

	public List<String> getFiltros() {
		return filtros;
	}

	public void setFiltros(List<String> filtros) {
		this.filtros = filtros;
	}

	public List<String> getTablasDescripcion() {
		return tablasDescripcion;
	}

	public void setTablasDescripcion(List<String> tablasDescripcion) {
		this.tablasDescripcion = tablasDescripcion;
	}

	public List<String> getTablasOrigen() {
		return tablasOrigen;
	}

	public void setTablasOrigen(List<String> tablasOrigen) {
		this.tablasOrigen = tablasOrigen;
	}

	public EstadisticasBean getEstadisticas() {
		return estadisticas;
	}

	public void setEstadisticas(EstadisticasBean estadisticas) {
		this.estadisticas = estadisticas;
	}

	/*
	 * public void consolidarEstadisticas() { for (int i = 0; i <
	 * getArchivosValidar().size(); i++) { EstadisticasBean est =
	 * getArchivosValidar().get(i).getEstadisticas();
	 * this.estadisticas.setRegistrosValidos(
	 * this.estadisticas.getRegistrosValidos() + est.getRegistrosValidos() +
	 * est.getRegistrosValidosCruce()); this.estadisticas.setRegistrosGlosados(
	 * this.estadisticas.getRegistrosGlosados() + est.getRegistrosGlosados() +
	 * est.getRegistrosGlosadosCruce()); } this.estadisticas.setTotalRegistros(
	 * this.estadisticas.getRegistrosValidos() +
	 * this.estadisticas.getRegistrosGlosados() ); }
	 */

	/*
	 * public Map<String, String> getParamatrosPaquete() { return
	 * paramatrosPaquete; }
	 * 
	 * public void setParamatrosPaquete(Map<String, String> paramatrosPaquete) {
	 * this.paramatrosPaquete = paramatrosPaquete; }
	 */

	public void borrarArchivosSalida() {
		Iterator<ArchivoModel> archivos = getArchivosValidar().iterator();
		while (archivos.hasNext()) {
			ArchivoModel archivo = archivos.next();
			if (archivo != null
					&& archivo.getEstadisticas().getRegistrosValidos() > 0) {
				File temporal = new File(archivo.getNombreArchivoSalida());
				temporal.delete();
			}
		}
	}

	/*
	 * public void borrarArchivosTemporales() { Iterator<ArchivoModel> archivos
	 * = getArchivosValidar().iterator(); while(archivos.hasNext()){
	 * ArchivoModel archivo = archivos.next();
	 * if(archivo.getNombreArchivoTemporal() != null) { File temporal = new
	 * File(archivo.getNombreArchivoTemporal()); temporal.delete(); } } }
	 */

	public void borrarArchivosEntrada() {
		Iterator<ArchivoModel> archivos = getArchivosValidar().iterator();
		while (archivos.hasNext()) {
			ArchivoModel archivo = archivos.next();
			if (archivo != null
					&& archivo.getEstadisticas().getRegistrosValidos() > 0) {
				File temporal = new File(archivo.getNombreArchivoEntrada());
				temporal.delete();
			}
		}
	}

	public String getNombrePaquete() {
		// TODO Auto-generated method stub
		return null;
	}

	public List<String> getArchivosSalida() {
		Iterator<ArchivoModel> archivos = getArchivosValidar().iterator();
		List<String> lista = new ArrayList<String>();
		while (archivos.hasNext()) {
			ArchivoModel archivo = archivos.next();
			if (archivo != null
					&& archivo.getEstadisticas().getRegistrosValidos() > 0) {
				lista.add(archivo.getNombreArchivoSalida());
			}
		}
		return lista;
	}

	/*
	 * public String getNombrePaquete() {
	 * 
	 * String nombrePaquete = null;
	 * 
	 * if(getParamatrosPaquete().get("TipoArchivo") != null &&
	 * getParamatrosPaquete().get("ValoresExtraerNombre") != null &&
	 * getParamatrosPaquete().get("FormatoNombrePaquete") != null ) {
	 * 
	 * String formatoPaquete =
	 * getParamatrosPaquete().get("FormatoNombrePaquete"); String tipoArchivo =
	 * getParamatrosPaquete().get("TipoArchivo"); String fracmentosABuscar =
	 * getParamatrosPaquete().get("ValoresExtraerNombre"); String nombreArchivo
	 * = null; String rutaArchivo = null;
	 * 
	 * Iterator<ArchivoModel> iter = getArchivosValidar().iterator();
	 * while(iter.hasNext()){ ArchivoModel arc = iter.next(); if(
	 * tipoArchivo.equalsIgnoreCase(arc.getTipoArchivo())) { File archivo = new
	 * File(arc.getNombreArchivoSalida()); nombreArchivo = archivo.getName();
	 * rutaArchivo = archivo.toString().substring(0, archivo.toString().length()
	 * - nombreArchivo.length()); } } String Cadenas[] =
	 * fracmentosABuscar.split("#"); for (Integer i = 0; i < Cadenas.length;
	 * i++) { Pattern patron = Pattern.compile(Cadenas[i]); Matcher matcher =
	 * patron.matcher(nombreArchivo); if(matcher.find()) { formatoPaquete =
	 * formatoPaquete.replaceAll( "\\(" + i.toString() + "\\)",
	 * matcher.group()); } } nombrePaquete = rutaArchivo + formatoPaquete; }
	 * return nombrePaquete; }
	 */

}