MConfigParams.cs

63 lines | 1.928 kB Blame History Raw Download
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.IO;
using System.Windows.Forms;

using RW_Tool.XML_BIN;

using Tools.ConfigurationTool.Services;

namespace Tools.ConfigurationTool.ConfigMultiple
{
    //Базовые параметры конфига
    public class MConfigParams
    {
        public RW_Factory RW_Factory => new RW_Factory();


        //Папка, в которой будут храниться конфиги
        public string ConfigDirectory { set; get; }
        //Флаг: испоьзовать ли в пути к файлу путь к .exe приложению
        public bool UseApplicationPathPrefix { set; get; } = true;

        //Формат в котором будет храниться конфиг
        public EnumFormat Format { set; get; } = EnumFormat.XML;        

        //Пересоздавать папку при общем сохранении
        public bool RecreateDirectory { set; get; } = true;

        //Полный путь к конфигу
        public string ConfigDirectoryPath => (UseApplicationPathPrefix
            ?
             Path.Combine(Application.StartupPath, ConfigDirectory)
            :
             ConfigDirectory
            );
        public DirectoryInfo ConfigDirectoryInfo => new DirectoryInfo(ConfigDirectoryPath);


        public string GetPathForFile(string key)
        {
            switch (Format) 
            {
                case EnumFormat.XML:
                    return Path.Combine(ConfigDirectoryPath, key + ".xml");
                case EnumFormat.Bin:
                    return Path.Combine(ConfigDirectoryPath, key + ".bin");
            }

            return Path.Combine(ConfigDirectoryPath, key + ".NoFormate");
        }


        public MConfigParams(string ConfigDirectory)
        {
            this.ConfigDirectory = ConfigDirectory;
        }
    }
}