luban/src/Luban.Job.Cfg/Source/DataSources/DataSourceFactory.cs

40 lines
1.3 KiB
C#

using Luban.Job.Cfg.DataCreators;
using System;
using System.IO;
namespace Luban.Job.Cfg.DataSources
{
static class DataSourceFactory
{
public static AbstractDataSource Create(string url, string sheetName, Stream stream, bool exportTestData)
{
try
{
string ext = url.Contains('.') ? Path.GetExtension(url)?[1..] : url;
AbstractDataSource source;
switch (ext)
{
case "csv":
case "xls":
case "xlsx": source = new Excel.ExcelDataSource(); break;
case "xml": source = new Xml.XmlDataSource(); break;
case "lua": source = new Lua.LuaDataSource(); break;
case "json": source = new Json.JsonDataSource(); break;
case "b": source = new Binary.BinaryDataSource(); break;
default: throw new Exception($"不支持的文件类型:{url}");
}
source.Load(url, sheetName, stream, exportTestData);
return source;
}
catch (DataCreateException)
{
throw;
}
catch (Exception e)
{
throw new Exception($"文件{url} 加载失败", e);
}
}
}
}