La simplificaria un poco mas…. Si en principio lo unico que te cambia es el
orden de las columnas empezaria asi:

 

Una tabla EmpresaImportConfig:

ID         Empresa           ImporterClass

Una hija EmpresaImportColumns:

ID         EmpresaImportConfigId               Nombre             Posicion

 

Arrancaria con una clase que importe usando esa configuración, fácil de
mantener desde la base de datos. Vamos a llamarla DefaultImporter

 

Hago un break para comentarte, que apostaria un Black label etiqueta verde,
a que en algun momento te van a decir … “el archivo de esta empresa, viene
distinto en x columna y vamos a tener que procesarlo distinto”.

 

Ahí, si empezaría a crear subclases de DefaultImporter, que customicen la
forma de implementar la importación para una o varias empresas en
particular.

Esas subclases las podes crear en assemblies a partes, asi te evitas
compilaciones de la app principal,

 

Y en la tabla EmpresaImportConfig, traes por reflection una instancia de la
clase que queres usar para la empresa para importar, y se la chantas a
alguna otra por IoC como dice el amigo.

 

Una idea nomas.

 

  _____  

De: puntonet@mug.org.ar [mailto:puntonet@mug.org.ar] En nombre de Carlos
Peix
Enviado el: 11/04/2013 06:25
Para: puntonet@mug.org.ar
Asunto: [puntonet] Orientacion para realizar validacion

 

Hola Leandro,

 

A mi me parece que la solucion que sugeris es un poco dificil de probar.

 

No se mucho de tu contexto, pero lo que yo haria es programar un componente
por cada empresa y que ese componente este en un assembly separado.

 

Por supuesto el componente tiene que implementar una interfaz de tu
aplicacion. Luego levantas el componente via configuracion (por reflection o
mediante un framework IoC como Windsor).

 

Esto tiene la ventaja de que en cada componente tenes maxima flexibilidad
para el orden de los campos, tipo de archivo, validaciones. Otra ventaja es
que podes escribir tests detalladas para cada componente. Tiene el
inconveniente de que tenes que programar un componente distinto para cada
cliente.

 

La evaluacion del peso de estas ventajas y desventajas depende del contexto,
sin embargo.




----------------------------------
Carlos Peix

 

2013/4/10 Leandro Halfon <leandrohal...@gmail.com>

Hola Lista, les escribo para ver si alguno me puedo orientar para donde
encarar la solución de un desarrollo.

 

En que consiste?

Básicamente, tengo N empresas donde cada una tiene que importar a un sistema
un archivo txt delimitado por comas.

Cada empresa va a manejar un formato distinto pero los campos van a ser los
mismos en diferente orden.

 

Ej:

Empresa A envia el siguiente orden: CUIT, Razon Social, Domicilio..

Empresa B envia el siguiente orden: Domicilio, Razon Social, CUIT

 

A su vez, cada uno de esos campos tiene validaciones de longitud,
obligatoriedad, etc  (son las mismas validaciones para todas las empresas)

 

Lo que había pensado era que para cada empresa se configure en la BD los
campos y en que posicion/orden los envía y luego realizar un bucle para
validar cada campo

 

A Alguno se le ocurre otra posible solución que sea un poco mas automática?

 

Gracias!

Leandro

 

 

Responder a