Java tutorial
/* * DynamicJasper: A library for creating reports dynamically by specifying * columns, groups, styles, etc. at runtime. It also saves a lot of development * time in many cases! (http://sourceforge.net/projects/dynamicjasper) * * Copyright (C) 2008 FDV Solutions (http://www.fdvsolutions.com) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * */ package ar.com.fdvs.dj.domain.chart.builder; import java.awt.Color; import java.util.List; import org.jfree.chart.plot.PlotOrientation; import ar.com.fdvs.dj.domain.DJHyperLink; import ar.com.fdvs.dj.domain.StringExpression; import ar.com.fdvs.dj.domain.chart.DJChart; import ar.com.fdvs.dj.domain.chart.dataset.XYDataset; import ar.com.fdvs.dj.domain.chart.plot.BarPlot; import ar.com.fdvs.dj.domain.chart.plot.DJAxisFormat; import ar.com.fdvs.dj.domain.constants.Font; import ar.com.fdvs.dj.domain.entities.columns.AbstractColumn; import ar.com.fdvs.dj.domain.entities.columns.PropertyColumn; import ar.com.fdvs.dj.domain.hyperlink.LiteralExpression; public class DJXYBarChartBuilder extends AbstractChartBuilder { //chart /** * Sets the chart data operation (DJChart.CALCULATION_COUNT or DJChart.CALCULATION_SUM). * * @param operation the chart data operation **/ public DJXYBarChartBuilder setOperation(byte operation) { this.chart.setOperation(operation); return this; } /** * Sets the hyperlink. * * @param link the hyperlink **/ public DJXYBarChartBuilder setLink(DJHyperLink link) { this.chart.setLink(link); return this; } //chart options /** * Sets the background color. * * @param backColor the background color **/ public DJXYBarChartBuilder setBackColor(Color backColor) { this.chart.getOptions().setBackColor(backColor); return this; } /** * Sets the chart height. * * @param height the chart height **/ public DJXYBarChartBuilder setHeight(int height) { this.chart.getOptions().setHeight(height); return this; } /** * Sets the chart width. * * @param width the chart width **/ public DJXYBarChartBuilder setWidth(int width) { this.chart.getOptions().setWidth(width); return this; } /** * Sets the centered. * * @param centered the centered **/ public DJXYBarChartBuilder setCentered(boolean centered) { this.chart.getOptions().setCentered(centered); return this; } /** * Sets the position (DJChartOptions.POSITION_FOOTER or DJChartOptions.POSITION_HEADER). * * @param position the position **/ public DJXYBarChartBuilder setPosition(byte position) { this.chart.getOptions().setPosition(position); return this; } /** * Sets the y position. * * @param y the y position **/ public DJXYBarChartBuilder setY(int y) { this.chart.getOptions().setY(y); return this; } /** * Sets the x position. * * @param y the x position **/ public DJXYBarChartBuilder setX(int x) { this.chart.getOptions().setX(x); return this; } /** * Sets the legend visibility. * * @param showLegend the legend visibility **/ public DJXYBarChartBuilder setShowLegend(boolean showLegend) { this.chart.getOptions().setShowLegend(new Boolean(showLegend)); return this; } /** * Sets the title color. * * @param titleColor the title color **/ public DJXYBarChartBuilder setTitleColor(Color titleColor) { this.chart.getOptions().setTitleColor(titleColor); return this; } /** * Sets the subtitle color. * * @param subtitleColor the subtitle color **/ public DJXYBarChartBuilder setSubtitleColor(Color subtitleColor) { this.chart.getOptions().setSubtitleColor(subtitleColor); return this; } /** * Sets the legend color. * * @param legendColor the legend color **/ public DJXYBarChartBuilder setLegendColor(Color legendColor) { this.chart.getOptions().setLegendColor(legendColor); return this; } /** * Sets the legend background color. * * @param legendBackgroundColor the legend background color **/ public DJXYBarChartBuilder setLegendBackgroundColor(Color legendBackgroundColor) { this.chart.getOptions().setLegendBackgroundColor(legendBackgroundColor); return this; } /** * Sets the theme. * Chart themes support to allow changing the overall appearance of charts generated with the build-in chart element * * @param theme the theme **/ public DJXYBarChartBuilder setTheme(String theme) { this.chart.getOptions().setTheme(theme); return this; } /** * Sets the title font. * * @param titleFont the title font **/ public DJXYBarChartBuilder setTitleFont(Font titleFont) { this.chart.getOptions().setTitleFont(titleFont); return this; } /** * Sets the subtitle font. * * @param subtitleFont the subtitle font **/ public DJXYBarChartBuilder setSubtitleFont(Font subtitleFont) { this.chart.getOptions().setSubtitleFont(subtitleFont); return this; } /** * Sets the legend font. * * @param legendFont the legend font **/ public DJXYBarChartBuilder setLegendFont(Font legendFont) { this.chart.getOptions().setLegendFont(legendFont); return this; } /** * Sets the legend position (DJChartOptions.EDGE_TOP, DJChartOptions.EDGE_BOTTOM, DJChartOptions.EDGE_LEFT, DJChartOptions.EDGE_RIGHT). * * @param legendPosition the legend position **/ public DJXYBarChartBuilder setLegendPosition(byte legendPosition) { this.chart.getOptions().setLegendPosition(legendPosition); return this; } /** * Sets the title position (DJChartOptions.EDGE_TOP, DJChartOptions.EDGE_BOTTOM, DJChartOptions.EDGE_LEFT, DJChartOptions.EDGE_RIGHT). * * @param titlePosition the title position **/ public DJXYBarChartBuilder setTitlePosition(byte titlePosition) { this.chart.getOptions().setTitlePosition(titlePosition); return this; } /** * Sets the title. * * @param title the title **/ public DJXYBarChartBuilder setTitle(String title) { this.chart.getOptions().setTitleExpression(new LiteralExpression(title)); return this; } /** * Sets the title expression. * * @param titleExpression the title expression **/ public DJXYBarChartBuilder setTitle(StringExpression titleExpression) { this.chart.getOptions().setTitleExpression(titleExpression); return this; } /** * Sets the subtitle. * * @param subtitle the subtitle **/ public DJXYBarChartBuilder setSubtitle(String subtitle) { this.chart.getOptions().setSubtitleExpression(new LiteralExpression(subtitle)); return this; } /** * Sets the subtitle expression. * * @param subtitleExpression the subtitle expression **/ public DJXYBarChartBuilder setSubtitle(StringExpression subtitleExpression) { this.chart.getOptions().setSubtitleExpression(subtitleExpression); return this; } /** * Sets the line style (DJChartOptions.LINE_STYLE_SOLID, DJChartOptions.LINE_STYLE_DASHED, DJChartOptions.LINE_STYLE_DOTTED, DJChartOptions.LINE_STYLE_DOUBLE). * * @param lineStyle one of the line style constants in DJChartOptions class */ public DJXYBarChartBuilder setLineStyle(byte lineStyle) { this.chart.getOptions().setLineStyle(lineStyle); return this; } /** * Sets the line width. * * @param lineWidth the line width **/ public DJXYBarChartBuilder setLineWidth(float lineWidth) { this.chart.getOptions().setLineWidth(new Float(lineWidth)); return this; } /** * Sets the line color. * * @param lineColor the line color **/ public DJXYBarChartBuilder setLineColor(Color lineColor) { this.chart.getOptions().setLineColor(lineColor); return this; } /** * Sets the padding. * * @param padding the padding **/ public DJXYBarChartBuilder setPadding(int padding) { this.chart.getOptions().setPadding(new Integer(padding)); return this; } /** * Sets a user specified chart customizer class name. * @see net.sf.jasperreports.engine.JRChartCustomizer */ public DJXYBarChartBuilder setCustomizerClass(String customizerClass) { this.chart.getOptions().setCustomizerClass(customizerClass); return this; } //dataset /** * Sets the x value column. * * @param xValue the x value column **/ public DJXYBarChartBuilder setXValue(PropertyColumn xValue) { getDataset().setXValue(xValue); return this; } /** * Adds the specified serie column to the dataset. * * @param column the serie column **/ public DJXYBarChartBuilder addSerie(AbstractColumn column) { getDataset().addSerie(column); return this; } /** * Adds the specified serie column to the dataset with custom label. * * @param column the serie column * @param label column the custom label **/ public DJXYBarChartBuilder addSerie(AbstractColumn column, String label) { getDataset().addSerie(column, label); return this; } /** * Adds the specified serie column to the dataset with custom label. * * @param column the serie column * @param label column the custom label **/ public DJXYBarChartBuilder addSerie(AbstractColumn column, StringExpression labelExpression) { getDataset().addSerie(column, labelExpression); return this; } //plot /** * Sets the angle in degrees to rotate the data axis labels. The range is -360 to 360. A positive value angles * the label so it reads downwards wile a negative value angles the label so it reads upwards. Only charts that * use a category based axis (such as line or bar charts) support label rotation. * * @param labelRotation the label rotation **/ public DJXYBarChartBuilder setLabelRotation(double labelRotation) { this.getPlot().setLabelRotation(new Double(labelRotation)); return this; } /** * Sets the plot orientation (PlotOrientation.HORIZONTAL or PlotOrientation.VERTICAL). * * @param orientation the plot orientation **/ public DJXYBarChartBuilder setOrientation(PlotOrientation orientation) { getPlot().setOrientation(orientation); return this; } /** * Adds the specified series color to the plot. * * @param color the series color **/ public DJXYBarChartBuilder addSeriesColor(Color color) { getPlot().addSeriesColor(color); return this; } /** * Set the specified series colors to the plot. * * @param seriesColors the series colors **/ public DJXYBarChartBuilder setSeriesColors(List seriesColors) { getPlot().setSeriesColors(seriesColors); return this; } //category plot /** * Sets the category axis format. * * @param categoryAxisFormat the category axis format **/ public DJXYBarChartBuilder setCategoryAxisFormat(DJAxisFormat categoryAxisFormat) { getPlot().setCategoryAxisFormat(categoryAxisFormat); return this; } /** * Sets the value axis format. * * @param valueAxisFormat the value axis format **/ public DJXYBarChartBuilder setValueAxisFormat(DJAxisFormat valueAxisFormat) { getPlot().setValueAxisFormat(valueAxisFormat); return this; } //bar plot /** * Sets the labels visibility. * * @param showLabels the labels visibility **/ public DJXYBarChartBuilder setShowLabels(boolean showLabels) { getPlot().setShowLabels(new Boolean(showLabels)); return this; } /** * Sets the tick labels visibility. * * @param showTickLabels the tick labels visibility **/ public DJXYBarChartBuilder setShowTickLabels(boolean showTickLabels) { getPlot().setShowTickLabels(new Boolean(showTickLabels)); return this; } /** * Sets the tick marks visibility. * * @param showTickMarks the tick marks visibility **/ public DJXYBarChartBuilder setShowTickMarks(boolean showTickMarks) { getPlot().setShowTickMarks(new Boolean(showTickMarks)); return this; } private XYDataset getDataset() { return (XYDataset) chart.getDataset(); } private BarPlot getPlot() { return (BarPlot) chart.getPlot(); } protected byte getChartType() { return DJChart.XYBAR_CHART; } }