using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Lab_Extensibility.AnonymizerAlgorithms;
using Lab_Extensibility.Progresses;

using Lab_Extensibility.InputReaders;
using Lab_Extensibility.ResultWriters;

namespace Lab_Extensibility;

static class Program
{
    static void Main(string[] args)
    {
        // We can use the same Anonymizer with any combination of strategies

        Anonymizer p1 = new(
            new CsvInputReader("us-500.csv"),
            new CsvResultWriter("us-500_processed.csv"),
            new NameMaskingAnonymizerAlgorithm("***"),
            AllProgresses.Simple
        );
        p1.Run();

        Console.WriteLine("--------------------");

        Anonymizer p2 = new(
            new CsvInputReader("us-500.csv"),
            new CsvResultWriter("us-500_processed.csv"),
            new NameMaskingAnonymizerAlgorithm("***"),
            AllProgresses.Percent
        );
        p2.Run();

        Console.WriteLine("--------------------");

        Anonymizer p3 = new(
            new CsvInputReader("us-500.csv"),
            new CsvResultWriter("us-500_processed.csv"),
            new AgeAnonymizerAlgorithm(20),
            AllProgresses.Simple
        );
        p3.Run();
    }
}