package charts.builder.spreadsheet; import charts.ChartType; import charts.builder.DataSource.MissingDataException; import charts.graphics.GrazingPracticeSystems; import charts.graphics.ManagementPracticeSystems; import charts.jfree.ADCDataset; import charts.jfree.Attribute; import charts.jfree.AttributeMap; public class GrazingPracticeBuilder extends ManagementPracticeBuilder { private static final String[] ABCD = {"A", "B", "C", "D" }; public GrazingPracticeBuilder() { super(ChartType.GRAZING_PS); } @Override protected boolean canHandle(SpreadsheetDataSource datasource) { return cellEquals(datasource, "A", "B2") && cellEquals(datasource, "B", "C2") && cellEquals(datasource, "C", "D2") && cellEquals(datasource, "D", "E2") && cellEquals(datasource, "Grazing", "A1"); } @Override protected Double[] readRow(SpreadsheetDataSource ds, int row) throws MissingDataException { Double[] values = new Double[4]; for(int i=0;i<4;i++) { values[i] = ds.select(row, i+1).asPercent(); } return values; } @Override protected void addData(ADCDataset dataset, String year, Double[] values) { for(int i=0;i<4;i++) { dataset.addValue(values[i], year, ABCD[i]); } } @Override public AttributeMap defaults(ChartType type) { AttributeMap m = super.defaults(type); m.put(Attribute.Y_AXIS_LABEL, "% of graziers"); return m; } @Override protected ManagementPracticeSystems renderer() { return new GrazingPracticeSystems(); } }