All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nl.crashdata.chartjs.data.simple.builder.AbstractSimpleChartJsAxisConfigBuilder Maven / Gradle / Ivy

package nl.crashdata.chartjs.data.simple.builder;

import java.io.Serializable;

import nl.crashdata.chartjs.data.ChartJsPosition;
import nl.crashdata.chartjs.data.ChartJsCartesianAxisType;
import nl.crashdata.chartjs.data.simple.AbstractSimpleChartJsTickConfig;
import nl.crashdata.chartjs.data.simple.SimpleChartJsAxisConfig;

public abstract class AbstractSimpleChartJsAxisConfigBuilder
		implements SimpleChartJsBuilder>
{
	private ChartJsCartesianAxisType type;

	private Boolean display;

	private ChartJsPosition position;

	private SimpleChartJsScaleLabelConfigBuilder labelConfigBuilder =
		new SimpleChartJsScaleLabelConfigBuilder();

	private SimpleChartJsTimeConfigBuilder timeConfigBuilder;

	private Boolean stacked;

	protected AbstractSimpleChartJsAxisConfigBuilder(ChartJsCartesianAxisType type)
	{
		this.type = type;
	}

	public AbstractSimpleChartJsAxisConfigBuilder withDisplay(Boolean display)
	{
		this.display = display;
		return this;
	}

	public AbstractSimpleChartJsAxisConfigBuilder withPosition(ChartJsPosition position)
	{
		this.position = position;
		return this;
	}

	public SimpleChartJsScaleLabelConfigBuilder labelConfig()
	{
		return labelConfigBuilder;
	}

	public abstract
			AbstractSimpleChartJsTickConfigBuilder>
			tickConfig();

	protected SimpleChartJsTimeConfigBuilder timeConfig()
	{
		return timeConfigBuilder;
	}

	protected void setTimeConfigBuilder(SimpleChartJsTimeConfigBuilder timeConfigBuilder)
	{
		this.timeConfigBuilder = timeConfigBuilder;
	}

	public AbstractSimpleChartJsAxisConfigBuilder withStacked(Boolean stacked)
	{
		this.stacked = stacked;
		return this;
	}

	@Override
	public boolean isValid()
	{
		return position != null && type != null && labelConfigBuilder.isValid()
			&& tickConfig().isValid() && (timeConfigBuilder == null || timeConfigBuilder.isValid());
	}

	@Override
	public SimpleChartJsAxisConfig build() throws IllegalStateException
	{
		if (!isValid())
		{
			throw new IllegalStateException(getClass().getSimpleName() + " is not ready to build!");
		}
		SimpleChartJsAxisConfig ret = new SimpleChartJsAxisConfig<>();
		ret.setDisplay(display);
		ret.setPosition(position);
		ret.setType(type);
		ret.setLabelConfig(labelConfigBuilder.build());
		ret.setTickConfig(tickConfig().build());
		if (timeConfigBuilder != null)
			ret.setTimeConfig(timeConfigBuilder.build());
		ret.setStacked(stacked);
		return ret;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy