Somedays Writing Code is Enough

I wrote this today, it made me happy. Somedays, simply writing some code that you are proud of makes it all worth it.

public void ImportLiabilityCategoryInput(string[] categories)
{
    ImportCategory(categories, InputDataGroupName.Liability);
}

public void ImportAssetCategoryInput(string[] categories)
{
    ImportCategory(categories, InputDataGroupName.AssetExisting);      
}

private void ImportCategory(string[] categories, InputDataGroupName group)
{

    WithASourceAndDestination(
        (source, destination) =>
        {
            foreach(var category in categories)
            {
                var inputData = source.ReadInputData(group, category);
                destination.WriteInputData(group, category, inputData);
             }
        });
}

private void WithASourceAndDestination(Action<IFileAccess, IFileAccess> action)
{
    using(var source = SourceFile.OpenForReading(_FromModelFile))
    using(var destination = DestFile.OpenForReadWrite(_ToModelFile))
    {
        action(source, destination);
        destination.Defragment();
    }
}
Follow me on Mastodon!