package org.molgenis.charts;
import org.molgenis.charts.AbstractChart.MolgenisChartType;
import org.molgenis.charts.highcharts.convert.HighchartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* Here all the visualizationservices are registered.
* <p>
* You can ask a visualization service for a particular charttype
*/
@Component
public class ChartVisualizationServiceFactory
{
private final List<ChartVisualizationService> chartVisualiationServices;
@Autowired
public ChartVisualizationServiceFactory(HighchartService highchartsService)
{
chartVisualiationServices = new ArrayList<ChartVisualizationService>();
chartVisualiationServices.add(highchartsService);
}
/**
* Gets a visualizationservice for a charttype
* <p>
* Throws MolgenisChartException if no service can be found for this charttype
*
* @param chartType
* @return
*/
public ChartVisualizationService getVisualizationService(MolgenisChartType chartType)
{
for (ChartVisualizationService service : chartVisualiationServices)
{
if (service.getCapabilities().contains(chartType))
{
return service;
}
}
throw new MolgenisChartException("No service found for charttype [" + chartType + "]");
}
}