JensKrumsieck/ChemSharp

View on GitHub
ChemSharp.Spectroscopy/Formats/FileFormat.cs

Summary

Maintainability
A
0 mins
Test Coverage
using ChemSharp.Spectroscopy.Extensions;
#if NETSTANDARD2_0
//for Dictionary Deconstruct
using ChemSharp.Extensions;
#endif

namespace ChemSharp.Spectroscopy.Formats;

public abstract class FileFormat
{
    protected Dictionary<string, Action<string>> NeededFiles;
    protected Func<string, IEnumerable<string>, bool> ValidationMethod;

    protected void Load(string filename)
    {
        if (!ValidationMethod(filename, NeededFiles.Keys))
            throw new
                ArgumentException($"The file '{filename}' is not supported by {GetType().Name} or a needed file does not exist");
        var baseFilename = FileExtensions.GetBaseFilename(filename);
        foreach (var (ext, func) in NeededFiles)
        {
            var fileExtension = ext;
            //some devices store extension in uppercase
            if (!File.Exists(baseFilename + ext)) fileExtension = ext.ToUpper();
            func(baseFilename + fileExtension);
        }
    }
}