martes, 18 de mayo de 2010

Validador de Archivos


Ver en CodePlex http://filevalidator.codeplex.com/

En un proyecto del sector bancario existía un requerimiento en donde los clientes suben archivos al servidor para procesar una serie de pagos, básicamente la aplicación WEB guarda el archivo en una ruta en especifico  y luego un servicio de Windows agarra el archivo y lo carga en BD para correr una serie de validaciones y procesos.

El requerimiento indicaba que había que validar el formato del archivo de texto antes de proceder a cargarlo en BD, por lo cual surge el presente componente.

El Componente permite realizar la validación de archivos (txt, imagenes, PDF, etc) actualmente solo tiene implementado la parte de los txt, permite validar un archivo con cabecera o no, con registros o no, permite la validación de cada columna del archivo.

Ejemplos:

Validar un archivo que tenga 6 columnas de header y al menos 2 registros (1 header y 1 detalle) El detalle debe tener 5 columnas
//Nota: El separador de columnas es punto y coma (;) pero es seteable para cualquier caracter en el header y en el detalle
ValidateContentFile target = new ValidateContentFile();
target.CantidadMinimaLineas = 2;
target.ValidarContenido = new BodyValidation();
target.ValidarContenido.CantidadMinColumnas = 5;
target.ValidarHeader = new HeaderValidation();
target.ValidarHeader.CantidadColumnas =6;
//Puede indicar la ruta o pasar un array de Bytes
DTOresultado expected = target.ValidateContent(FilePath, ValidateContentFile.ValidationType.OnlyText);


Validar un archivo que tenga 6 columnas de header y al menos 2 registros (1 header y 1 detalle) El detalle debe tener 5 columnas
Y ademas que la primera columna del Header sea un Rif, y la segunda sea una número de cuenta (20 digitos)
Ademas se desea que en el contenido tenga en la cuarta columna números que inicien en 0174 o 0428

ValidateContentFile target = new ValidateContentFile();
target.CantidadMinimaLineas = 2;
target.ValidarContenido = new BodyValidation();
target.ValidarContenido.CantidadMinColumnas = 5;
target.ValidarHeader = new HeaderValidation();
target.ValidarHeader.CantidadColumnas =6;
//se indica la expresión regular a usar en este caso para el header, se debe hacer en el orden que se esperan las columnas, si no se desea aplicar regex para una columna se debe dejar en blanco ""
target.ValidarHeader.sRegexColumnas = new string[] { "^[jJ]\\d{9}\\b\\b", "\\b\\d{20}\\b", " ","","",""};
//Se especifica las expresiones regulares para el detalle del archivo
target.ValidarContenido.sRegexColumnas = new string[] { "", "", "", "^(?!0174)(?!0428)\\d+", "" };
//Puede indicar la ruta o pasar un array de Bytes
DTOresultado expected = target.ValidateContent(FilePath, ValidateContentFile.ValidationType.OnlyText);

Pueden bajarlo en http://filevalidator.codeplex.com/

Por construir:
1- Documentación
2- Enriquecer la cantidad de información de respuesta del componente
3- Permitir que el componente valide todo el archivo antes de parar la revisión
4- Incluir las validaciones de imagen, PDF y otras

No hay comentarios.:

Publicar un comentario