40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using SQLVision.Core.Enums;
|
|
using SQLVision.Visualizers.Interfaces;
|
|
using SQLVision.Visualizers.Visualizers;
|
|
|
|
namespace SQLVision.Visualizers.Factories;
|
|
|
|
public class VisualizerFactory : IVisualizerFactory
|
|
{
|
|
private readonly Dictionary<OutputType, IVisualizer> _visualizers;
|
|
private readonly IServiceProvider _serviceProvider;
|
|
|
|
public VisualizerFactory(IServiceProvider serviceProvider)
|
|
{
|
|
_serviceProvider = serviceProvider;
|
|
_visualizers = new Dictionary<OutputType, IVisualizer>
|
|
{
|
|
[OutputType.Table] = new TableVisualizer(),
|
|
[OutputType.Chart] = new ChartVisualizer(),
|
|
[OutputType.Text] = new TextVisualizer(),
|
|
[OutputType.Grid] = new TableVisualizer(), // Пока используем TableVisualizer
|
|
[OutputType.Custom] = new TableVisualizer() // Fallback
|
|
};
|
|
}
|
|
|
|
public IVisualizer GetVisualizer(OutputType type)
|
|
{
|
|
if (_visualizers.TryGetValue(type, out var visualizer))
|
|
{
|
|
return visualizer;
|
|
}
|
|
|
|
// Fallback на табличный визуализатор
|
|
return _visualizers[OutputType.Table];
|
|
}
|
|
|
|
public void RegisterVisualizer(OutputType type, IVisualizer visualizer)
|
|
{
|
|
_visualizers[type] = visualizer;
|
|
}
|
|
} |