public static void Main()
Create("COMPTE_ROUTEUR", "CLIENT", "SOUS_CLIENT", "F700", "//SERVER/DIR/FILE.EXT");
Create("COMPTE_ROUTEUR", "CLIENT", "SOUS_CLIENT", "F1500", "//SERVER/DIR/FILE.EXT");
private static void Create(string COMPTE_ROUTEUR, string CLIENT, string SOUS_CLIENT, string FORMAT, string PATH)
var extractor = GetExtractor();
var table = extractor.Extract(COMPTE_ROUTEUR, CLIENT, SOUS_CLIENT);
var f700creator = GetF700Creator();
var f700file = f700creator.Create(table);
var f700writer = GetF700Writer();
f700writer.Write(PATH, f700file);
var f1500creator = GetF1500Creator();
var f1500file = f1500creator.Create(table);
var f1500writer = GetF1500Writer();
f1500writer.Write(PATH, f1500file);
private static IDataExtractor GetExtractor() { return new DefaultDataExtractor(); }
private static IFileCreator<Carrier010F700File> GetF700Creator() { return new Carrier010F700FileCreator(); }
private static IFileCreator<Carrier010F1500File> GetF1500Creator() { return new Carrier010F1500FileCreator(); }
private static IFileWriter<Carrier010F700File> GetF700Writer() { return new Carrier010F700FileWriter(); }
private static IFileWriter<Carrier010F1500File> GetF1500Writer() { return new Carrier010F1500FileWriter(); }
public abstract class Carrier010File
{ public string CommonData { get; protected set; } }
public class Carrier010F700File : Carrier010File
{ public string F700Data { get; protected set; } }
public class Carrier010F1500File : Carrier010File
{ public string F1500Data { get; protected set; } }
public interface IDataExtractor
{ DataTable Extract(string COMPTE_ROUTEUR, string CLIENT, string SOUS_CLIENT); }
public class DefaultDataExtractor : IDataExtractor
public DataTable Extract(string COMPTE_ROUTEUR, string CLIENT, string SOUS_CLIENT)
Console.WriteLine("Extract DataTable (COMPTE_ROUTEUR=" + COMPTE_ROUTEUR + " ; CLIENT=" + CLIENT + " ; SOUS_CLIENT=" + SOUS_CLIENT + ")");
public interface IFileCreator<TFile> where TFile : Carrier010File
{ TFile Create(DataTable table); }
public class Carrier010F700FileCreator : IFileCreator<Carrier010F700File>
public Carrier010F700File Create(DataTable table)
Console.WriteLine("Create F700File");
return new Carrier010F700File();
public class Carrier010F1500FileCreator : IFileCreator<Carrier010F1500File>
public Carrier010F1500File Create(DataTable table)
Console.WriteLine("Create F1500File");
return new Carrier010F1500File();
public interface IFileWriter<TFile> where TFile : Carrier010File
{ void Write(string path, TFile file); }
public class Carrier010F700FileWriter : IFileWriter<Carrier010F700File>
public void Write(string path, Carrier010F700File file)
Console.WriteLine("Write F700File at " + path);
public class Carrier010F1500FileWriter : IFileWriter<Carrier010F1500File>
public void Write(string path, Carrier010F1500File file)
Console.WriteLine("Write F1500File at " + path);