Ver Mensaje Individual
  #14 (permalink)  
Antiguo 28/05/2008, 14:58
vilagutv7
 
Fecha de Ingreso: julio-2006
Mensajes: 150
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Error Hashtable

Esta es la clase Factory

class Factory
{
public Base GetObject(string tipoArch)
{
Base tipoProc = null;
switch (tipoArch)
{
case "Excel":
tipoProc = new archExcel();
break;
case "Fijo":
tipoProc = new archFijo();
break;
case "Delimitado":
tipoProc = new archDelimitado();
break;
}
return tipoProc;
}
}
interface Base
{
void DoIt(List<Hashtable> colum, Escritura escribir, Lectura leer, configuracion estructura, int numTablas);
}
class archExcel : Base
{
public void DoIt(List<Hashtable> colum, Escritura escribir, Lectura leer, configuracion estructura, int numTablas)
{
colum = leer.leerCargaExcel(estructura, estructura.hojaExc);
if (colum != null) escribir.EscrituraCarg(colum, estructura, numTablas);

}
}
class archFijo : Base
{
public void DoIt(List<Hashtable> colum, Escritura escribir, Lectura leer, configuracion estructura, int numTablas)
{
int[] anchos = leer.LeerConfigAnchos(estructura);
colum = leer.leerCargaAnchoFijo(estructura, anchos);
if (colum != null) escribir.EscrituraCarg(colum, estructura, numTablas);

}
}
class archDelimitado : Base
{
public void DoIt(List<Hashtable> colum, Escritura escribir, Lectura leer, configuracion estructura, int numTablas)
{
colum = leer.leerCargaTxt(estructura);
if (colum != null) escribir.EscrituraCarg(colum, estructura, numTablas);
}
}


Y este es el metodo ue comienza toda la ejecucion de la carga

public void EjecutarCarga()
{
try
{
Lectura leer = new Lectura();
List<configuracion> estructura = leer.leerConfig(Singleton.Instance.RutaArchConfigu racion.Text);//Lee la configuracion inicial de tablas y atributos
if (estructura == null) throw new ExceptionFinEjecucion();//Tira una excepcion si hubo problemas con el archivo de estructura
Escritura escribir = new Escritura();
for (int numTablas = 0; numTablas < estructura.Count; numTablas++)
{
List<Hashtable> colum = new List<Hashtable>();//Lista de Hashtables donde van las columnas de cada tabla
Factory factory = new Factory();//Decide a que tipo de archivo ir
Base obj = factory.GetObject(estructura[numTablas].tipoArch);
obj.DoIt(colum, escribir, leer, estructura[numTablas], numTablas);//Va a la ejecucion de ese tipo de archivo
}
escribir.EscrituraDiccio(estructura);
}
catch (ExceptionFinEjecucion ex)
{
log.Add(DateTime.Now + " : " + ex);
}
Singleton.Instance.resultados.Items.Add(DateTime.N ow + ": Fin de la ejecucion ");
Singleton.Instance.progreso.Value = 100;
}

Desde aqui llamas al DoIt de la clase factory segun sea elc aso del archivo que estes leyendo (Excel,delimitado,Ancho fijo)