package charts.builder.spreadsheet; import charts.ChartType; import charts.builder.DataSource.MissingDataException; import charts.graphics.GrainsPracticeSystems; import charts.graphics.ManagementPracticeSystems; import charts.jfree.ADCDataset; public class GrainsPracticeBuilder extends LandPracticeBuilder { private static final String[] ABCD = {"A", "B", "C/D" }; private static final String[] PS = { "Nutrients", "Herbicides", "Soil" }; public GrainsPracticeBuilder() { super(ChartType.GRAINS_PS); } @Override protected boolean canHandle(SpreadsheetDataSource datasource) { return cellEquals(datasource, PS[0], "B2") && cellEquals(datasource, PS[1], "E2") && cellEquals(datasource, PS[2], "H2") && cellEquals(datasource, "Grains", "A1"); } @Override protected Double[] readRow(SpreadsheetDataSource ds, int row) throws MissingDataException { Double[] values = new Double[9]; for(int i=0;i<9;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<9;i++) { dataset.addValue(values[i], String.format("%s_%s", ABCD[i%3], year), PS[i/3]); } } @Override protected ManagementPracticeSystems renderer() { return new GrainsPracticeSystems(); } }