From: <nat...@us...> - 2003-08-28 01:17:42
|
Update of /cvsroot/jcharts/krysalis-jcharts/src/java/org/krysalis/jcharts/demo/simpleservlet In directory sc8-pr-cvs1:/tmp/cvs-serv22599 Added Files: ChartServlet.java ScatterPlotChartServlet.java PieChart2DServlet.java ComboChartServlet.java HorizontalBarImageMapServlet.java BarChartServlet.java Log Message: initial revision --- NEW FILE: ChartServlet.java --- /*********************************************************************************************** * File Info: $Id: ChartServlet.java,v 1.1 2003/08/28 01:17:36 nathaniel_auvil Exp $ * Copyright (C) 2002 * Author: Nathaniel G. Auvil * Contributor(s): * * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved. * * Redistribution and use of this software and associated documentation ("Software"), with or * without modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote * products derived from this Software without prior written permission of Nathaniel G. * Auvil. For written permission, please contact nat...@us... * * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a * registered trademark of Nathaniel G. Auvil. * * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/). * * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE ************************************************************************************************/ package org.krysalis.jcharts.demo.simpleservlet; import org.krysalis.jcharts.Chart; import org.krysalis.jcharts.chartData.ChartDataException; import org.krysalis.jcharts.encoders.ServletEncoderHelper; import org.krysalis.jcharts.properties.PropertyException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class ChartServlet extends HttpServlet { public static final String CHART = "CHART"; public static final String IMAGE_MAP = "IMAGE_MAP"; /********************************************************************************************** * **********************************************************************************************/ public void service( HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse ) throws ServletException, IOException { Chart chart = (Chart) httpServletRequest.getSession().getAttribute( CHART ); try { //---call encode just like you would normally ServletEncoderHelper.encodeJPEG13( chart, 1.0f, httpServletResponse ); } catch( PropertyException propertyException ) { propertyException.printStackTrace(); } catch( ChartDataException dataException ) { dataException.printStackTrace(); } httpServletRequest.getSession().removeAttribute( CHART ); } } --- NEW FILE: ScatterPlotChartServlet.java --- /*********************************************************************************************** * File Info: $Id: ScatterPlotChartServlet.java,v 1.1 2003/08/28 01:17:36 nathaniel_auvil Exp $ * Copyright (C) 2002 * Author: Nathaniel G. Auvil * Contributor(s): * * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved. * * Redistribution and use of this software and associated documentation ("Software"), with or * without modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote * products derived from this Software without prior written permission of Nathaniel G. * Auvil. For written permission, please contact nat...@us... * * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a * registered trademark of Nathaniel G. Auvil. * * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/). * * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE ************************************************************************************************/ package org.krysalis.jcharts.demo.simpleservlet; import org.krysalis.jcharts.axisChart.ScatterPlotAxisChart; import org.krysalis.jcharts.chartData.ScatterPlotDataSeries; import org.krysalis.jcharts.chartData.ScatterPlotDataSet; import org.krysalis.jcharts.encoders.ServletEncoderHelper; import org.krysalis.jcharts.properties.AxisProperties; import org.krysalis.jcharts.properties.ChartProperties; import org.krysalis.jcharts.properties.DataAxisProperties; import org.krysalis.jcharts.properties.LegendProperties; import org.krysalis.jcharts.properties.LineChartProperties; import org.krysalis.jcharts.properties.PointChartProperties; import org.krysalis.jcharts.properties.ScatterPlotProperties; import org.krysalis.jcharts.properties.util.ChartFont; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.geom.Point2D; import java.io.IOException; public class ScatterPlotChartServlet extends HttpServlet { //---all of my charts serviced by this Servlet will have the same properties. protected LegendProperties legendProperties; protected AxisProperties axisProperties; protected ChartProperties chartProperties; protected int width = 550; protected int height = 360; /********************************************************************************************** * **********************************************************************************************/ public void init() { this.legendProperties = new LegendProperties(); this.chartProperties = new ChartProperties(); this.axisProperties = new AxisProperties( true ); ChartFont axisScaleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 13 ), Color.black ); axisProperties.getXAxisProperties().setScaleChartFont( axisScaleFont ); axisProperties.getYAxisProperties().setScaleChartFont( axisScaleFont ); ChartFont axisTitleFont = new ChartFont( new Font( "Arial Narrow", Font.PLAIN, 14 ), Color.black ); axisProperties.getXAxisProperties().setTitleChartFont( axisTitleFont ); axisProperties.getYAxisProperties().setTitleChartFont( axisTitleFont ); ChartFont titleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 14 ), Color.black ); this.chartProperties.setTitleFont( titleFont ); } /****************************************************************************************** * * ******************************************************************************************/ private ScatterPlotProperties createScatterPlotProperties() { Stroke[] strokes = new Stroke[]{LineChartProperties.DEFAULT_LINE_STROKE}; Shape[] shapes = new Shape[]{PointChartProperties.SHAPE_CIRCLE}; return new ScatterPlotProperties( strokes, shapes ); } /***************************************************************************************** * Generates a random MultiDataSet * * @return ScatterPlotDataSet ******************************************************************************************/ private ScatterPlotDataSet createScatterPlotDataSet() { Point2D.Double[] points = new Point2D.Double[ 20 ]; for( int x = 0; x < 20; x++ ) { //--- y = x^2 points[ x ] = ScatterPlotDataSet.createPoint2DDouble(); points[ x ].setLocation( x, Math.pow( x, 2 ) ); } ScatterPlotDataSet scatterPlotDataSet = new ScatterPlotDataSet( this.createScatterPlotProperties() ); scatterPlotDataSet.addDataPoints( points, Color.red, "Proprietary" ); return scatterPlotDataSet; } /********************************************************************************************** * **********************************************************************************************/ public void service( HttpServletRequest req, HttpServletResponse httpServletResponse ) throws ServletException, IOException { try { ScatterPlotDataSet scatterPlotDataSet = this.createScatterPlotDataSet(); ScatterPlotDataSeries scatterPlotDataSeries = new ScatterPlotDataSeries( scatterPlotDataSet, "X-Axis Title", "Y-Axis Title", "Chart Title" ); DataAxisProperties xAxisProperties = new DataAxisProperties(); xAxisProperties.setUserDefinedScale( -5, 3 ); xAxisProperties.setNumItems( 10 ); xAxisProperties.setRoundToNearest( 0 ); DataAxisProperties yAxisProperties = new DataAxisProperties(); yAxisProperties.setUserDefinedScale( -30, 50 ); yAxisProperties.setNumItems( 10 ); yAxisProperties.setRoundToNearest( 1 ); AxisProperties axisProperties = new AxisProperties( xAxisProperties, yAxisProperties ); ChartProperties chartProperties = new ChartProperties(); LegendProperties legendProperties = new LegendProperties(); ScatterPlotAxisChart scatterPlotAxisChart = new ScatterPlotAxisChart( scatterPlotDataSeries, chartProperties, axisProperties, legendProperties, 500, 400 ); ServletEncoderHelper.encodeJPEG13( scatterPlotAxisChart, 1.0f, httpServletResponse ); } catch( Throwable throwable ) { //HACK do your error handling here... throwable.printStackTrace(); } } } --- NEW FILE: PieChart2DServlet.java --- /*********************************************************************************************** * File Info: $Id: PieChart2DServlet.java,v 1.1 2003/08/28 01:17:36 nathaniel_auvil Exp $ * Copyright (C) 2000 * Author: Nathaniel G. Auvil * Contributor(s): * * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved. * * Redistribution and use of this software and associated documentation ("Software"), with or * without modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote * products derived from this Software without prior written permission of Nathaniel G. * Auvil. For written permission, please contact nat...@us... * * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a * registered trademark of Nathaniel G. Auvil. * * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/). * * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE ************************************************************************************************/ package org.krysalis.jcharts.demo.simpleservlet; import org.krysalis.jcharts.chartData.ChartDataException; import org.krysalis.jcharts.chartData.PieChartDataSet; import org.krysalis.jcharts.encoders.ServletEncoderHelper; import org.krysalis.jcharts.nonAxisChart.PieChart2D; import org.krysalis.jcharts.properties.ChartProperties; import org.krysalis.jcharts.properties.LegendProperties; import org.krysalis.jcharts.properties.PieChart2DProperties; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.IOException; public class PieChart2DServlet extends HttpServlet { //---all of my pie charts serviced by this Servlet will have the same properties. private PieChart2DProperties properties; private LegendProperties legendProperties; private ChartProperties chartProperties; private int width = 550; private int height = 350; /********************************************************************************************** * **********************************************************************************************/ public void init() { //---all charts of this type of pie chart are going to share the same properties. this.properties = new PieChart2DProperties(); this.legendProperties = new LegendProperties(); this.legendProperties.setNumColumns( 2 ); this.legendProperties.setPlacement( LegendProperties.RIGHT ); this.chartProperties = new ChartProperties(); } /********************************************************************************************** * **********************************************************************************************/ public void service( HttpServletRequest req, HttpServletResponse response ) throws ServletException, IOException { try { PieChart2D pieChart2D = new PieChart2D( this.getData(), this.legendProperties, this.chartProperties, this.width, this.height ); ServletEncoderHelper.encodeJPEG13( pieChart2D, 1.0f, response ); } catch( Throwable throwable ) { //HACK do your error handling here... throwable.printStackTrace(); } } /****************************************************************************************** * Returns a Tests a 'real' data set and usage. * * @throws ChartDataException ******************************************************************************************/ private PieChartDataSet getData() throws ChartDataException { double[] data = new double[]{40, 15, 35, 65, 59}; Paint[] paints = new Paint[]{Color.blue, Color.red, Color.green, Color.yellow, Color.white}; String[] labels = {"BMW", "Honda", "Lexus", "Audi", "Acura"}; return new PieChartDataSet( "Cars That Own!", data, labels, paints, this.properties ); } } --- NEW FILE: ComboChartServlet.java --- /*********************************************************************************************** * File Info: $Id: ComboChartServlet.java,v 1.1 2003/08/28 01:17:36 nathaniel_auvil Exp $ * Copyright (C) 2000 * Author: Nathaniel G. Auvil * Contributor(s): * * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved. * * Redistribution and use of this software and associated documentation * ("Software"), with or without modification, are permitted provided * that the following conditions are met: * * 1. Redistributions of source code must retain copyright * statements and notices. Redistributions must also contain a * copy of this document. * * 2. Redistributions in binary form must reproduce the * above copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to * endorse or promote products derived from this Software without * prior written permission of Nathaniel G. Auvil. For written * permission, please contact nat...@us... * * 4. Products derived from this Software may not be called "jCharts" * nor may "jCharts" appear in their names without prior written * permission of Nathaniel G. Auvil. jCharts is a registered * trademark of Nathaniel G. Auvil. * * 5. Due credit should be given to the jCharts Project * (http://jcharts.sourceforge.net/). * * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. ************************************************************************************************/ package org.krysalis.jcharts.demo.simpleservlet; import org.krysalis.jcharts.properties.LineChartProperties; import org.krysalis.jcharts.properties.BarChartProperties; import org.krysalis.jcharts.properties.LegendProperties; import org.krysalis.jcharts.properties.AxisProperties; import org.krysalis.jcharts.properties.ChartProperties; import org.krysalis.jcharts.properties.PointChartProperties; import org.krysalis.jcharts.properties.util.ChartFont; import org.krysalis.jcharts.chartData.interfaces.IAxisDataSeries; import org.krysalis.jcharts.chartData.DataSeries; import org.krysalis.jcharts.chartData.AxisChartDataSet; import org.krysalis.jcharts.types.ChartType; import org.krysalis.jcharts.axisChart.AxisChart; import org.krysalis.jcharts.encoders.ServletEncoderHelper; import javax.servlet.ServletException; import javax.servlet.http.*; import java.awt.*; import java.io.IOException; public class ComboChartServlet extends HttpServlet { //---all of my charts serviced by this Servlet will have the same properties. private LineChartProperties lineChartProperties; //---all of my charts serviced by this Servlet will have the same properties. private BarChartProperties barChartProperties; //---all of my charts serviced by this Servlet will have the same properties. protected LegendProperties legendProperties; protected AxisProperties axisProperties; protected ChartProperties chartProperties; protected int width = 550; protected int height = 360; /********************************************************************************************** * **********************************************************************************************/ public void init() { this.legendProperties = new LegendProperties(); this.chartProperties = new ChartProperties(); this.axisProperties = new AxisProperties( false ); ChartFont axisScaleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 13 ), Color.black ); axisProperties.getXAxisProperties().setScaleChartFont( axisScaleFont ); axisProperties.getYAxisProperties().setScaleChartFont( axisScaleFont ); ChartFont axisTitleFont = new ChartFont( new Font( "Arial Narrow", Font.PLAIN, 14 ), Color.black ); axisProperties.getXAxisProperties().setTitleChartFont( axisTitleFont ); axisProperties.getYAxisProperties().setTitleChartFont( axisTitleFont ); ChartFont titleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 14 ), Color.black ); this.chartProperties.setTitleFont( titleFont ); Stroke[] strokes = {LineChartProperties.DEFAULT_LINE_STROKE}; Shape[] shapes = {PointChartProperties.SHAPE_DIAMOND}; this.lineChartProperties = new LineChartProperties( strokes, shapes ); this.barChartProperties = new BarChartProperties(); } /********************************************************************************************** * **********************************************************************************************/ public void service( HttpServletRequest req, HttpServletResponse httpServletResponse ) throws ServletException, IOException { try { String[] xAxisLabels = {"1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004"}; String xAxisTitle = "Years"; String yAxisTitle = "Problems"; String title = "Micro$oft At Work"; IAxisDataSeries dataSeries = new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle, title ); double[][] data = new double[][]{{1500, 6880, 4510, 2600, 1200, 1580, 8000, 4555, 4000, 6120}}; String[] legendLabels = {"Bugs"}; Paint[] paints = new Paint[]{Color.blue.darker()}; Paint[] linePaints = new Paint[]{Color.green}; dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, legendLabels, paints, ChartType.BAR, this.barChartProperties ) ); dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, legendLabels, linePaints, ChartType.LINE, this.lineChartProperties ) ); AxisChart axisChart = new AxisChart( dataSeries, this.chartProperties, this.axisProperties, this.legendProperties, this.width, this.height ); ServletEncoderHelper.encodeJPEG13( axisChart, 1.0f, httpServletResponse ); } catch( Throwable throwable ) { //HACK do your error handling here... throwable.printStackTrace(); } } } --- NEW FILE: HorizontalBarImageMapServlet.java --- /*********************************************************************************************** * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved. * * Redistribution and use of this software and associated documentation ("Software"), with or * without modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote * products derived from this Software without prior written permission of Nathaniel G. * Auvil. For written permission, please contact nat...@us... * * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a * registered trademark of Nathaniel G. Auvil. * * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/). * * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE ************************************************************************************************/ package org.krysalis.jcharts.demo.simpleservlet; import org.krysalis.jcharts.axisChart.AxisChart; import org.krysalis.jcharts.chartData.AxisChartDataSet; import org.krysalis.jcharts.chartData.ChartDataException; import org.krysalis.jcharts.chartData.DataSeries; import org.krysalis.jcharts.chartData.interfaces.IAxisDataSeries; import org.krysalis.jcharts.imageMap.ImageMap; import org.krysalis.jcharts.properties.AxisProperties; import org.krysalis.jcharts.properties.BarChartProperties; import org.krysalis.jcharts.properties.ChartProperties; import org.krysalis.jcharts.properties.LegendProperties; import org.krysalis.jcharts.properties.PropertyException; import org.krysalis.jcharts.properties.util.ChartFont; import org.krysalis.jcharts.types.ChartType; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.IOException; /************************************************************************************* * * @author Nathaniel Auvil * @version $Id: HorizontalBarImageMapServlet.java,v 1.1 2003/08/28 01:17:36 nathaniel_auvil Exp $ ************************************************************************************/ public class HorizontalBarImageMapServlet extends HttpServlet { //---all of my charts serviced by this Servlet will have the same properties. private BarChartProperties barChartProperties; //---all of my charts serviced by this Servlet will have the same properties. protected LegendProperties legendProperties; protected AxisProperties axisProperties; protected ChartProperties chartProperties; protected int width = 550; protected int height = 360; /********************************************************************************************** * **********************************************************************************************/ public void init() { this.legendProperties = new LegendProperties(); this.chartProperties = new ChartProperties(); this.axisProperties = new AxisProperties( true ); ChartFont axisScaleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 13 ), Color.black ); axisProperties.getXAxisProperties().setScaleChartFont( axisScaleFont ); axisProperties.getYAxisProperties().setScaleChartFont( axisScaleFont ); ChartFont axisTitleFont = new ChartFont( new Font( "Arial Narrow", Font.PLAIN, 14 ), Color.black ); axisProperties.getXAxisProperties().setTitleChartFont( axisTitleFont ); axisProperties.getYAxisProperties().setTitleChartFont( axisTitleFont ); ChartFont titleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 14 ), Color.black ); this.chartProperties.setTitleFont( titleFont ); this.barChartProperties = new BarChartProperties(); } /********************************************************************************************** * * **********************************************************************************************/ public void service( HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse ) throws ServletException, IOException { try { String[] xAxisLabels = {"1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004"}; String xAxisTitle = "Years"; String yAxisTitle = "Problems"; String title = "Micro$oft At Work"; IAxisDataSeries dataSeries = new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle, title ); double[][] data = new double[][]{{1500, 6880, 4510, 2600, 1200, 1580, 8000, 4555, 4000, 6120}}; String[] legendLabels = {"Bugs"}; Paint[] paints = new Paint[]{Color.blue.darker()}; dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, legendLabels, paints, ChartType.BAR, this.barChartProperties ) ); AxisChart axisChart = new AxisChart( dataSeries, this.chartProperties, this.axisProperties, this.legendProperties, this.width, this.height ); //---this call will render the chart to an internal BufferedImage, creating all the image map coordinates axisChart.renderWithImageMap(); //---get the ImageMap information from the chart ImageMap imageMap = axisChart.getImageMap(); //---set the ImageMap into the HttpServletRequest so can get it out in JSP httpServletRequest.setAttribute( ChartServlet.IMAGE_MAP, imageMap ); //---set the Chart into the HttpSession so we can stream it in another request httpServletRequest.getSession( true ).setAttribute( ChartServlet.CHART, axisChart ); } catch( ChartDataException chartDataException ) { chartDataException.printStackTrace(); } catch( PropertyException propertyException ) { propertyException.printStackTrace(); } this.getServletContext().getRequestDispatcher( "/imageMapChart.jsp" ).forward( httpServletRequest, httpServletResponse ); } } --- NEW FILE: BarChartServlet.java --- /*********************************************************************************************** * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved. * * Redistribution and use of this software and associated documentation ("Software"), with or * without modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote * products derived from this Software without prior written permission of Nathaniel G. * Auvil. For written permission, please contact nat...@us... * * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a * registered trademark of Nathaniel G. Auvil. * * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/). * * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE ************************************************************************************************/ package org.krysalis.jcharts.demo.simpleservlet; import org.krysalis.jcharts.axisChart.AxisChart; import org.krysalis.jcharts.axisChart.customRenderers.axisValue.renderers.ValueLabelPosition; import org.krysalis.jcharts.axisChart.customRenderers.axisValue.renderers.ValueLabelRenderer; import org.krysalis.jcharts.chartData.AxisChartDataSet; import org.krysalis.jcharts.chartData.DataSeries; import org.krysalis.jcharts.chartData.interfaces.IAxisDataSeries; import org.krysalis.jcharts.encoders.ServletEncoderHelper; import org.krysalis.jcharts.properties.AxisProperties; import org.krysalis.jcharts.properties.BarChartProperties; import org.krysalis.jcharts.properties.ChartProperties; import org.krysalis.jcharts.properties.DataAxisProperties; import org.krysalis.jcharts.properties.LegendProperties; import org.krysalis.jcharts.properties.PropertyException; import org.krysalis.jcharts.properties.util.ChartFont; import org.krysalis.jcharts.types.ChartType; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.IOException; /************************************************************************************* * * @author Nathaniel Auvil * @version $Id: BarChartServlet.java,v 1.1 2003/08/28 01:17:36 nathaniel_auvil Exp $ ************************************************************************************/ public class BarChartServlet extends HttpServlet { //---all of my charts serviced by this Servlet will have the same properties. private BarChartProperties barChartProperties; //---all of my charts serviced by this Servlet will have the same properties. protected LegendProperties legendProperties; protected AxisProperties axisProperties; protected ChartProperties chartProperties; protected int width = 550; protected int height = 360; /********************************************************************************************** * **********************************************************************************************/ public void init() { this.legendProperties = new LegendProperties(); this.chartProperties = new ChartProperties(); this.axisProperties = new AxisProperties( false ); ChartFont axisScaleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 13 ), Color.black ); axisProperties.getXAxisProperties().setScaleChartFont( axisScaleFont ); axisProperties.getYAxisProperties().setScaleChartFont( axisScaleFont ); ChartFont axisTitleFont = new ChartFont( new Font( "Arial Narrow", Font.PLAIN, 14 ), Color.black ); axisProperties.getXAxisProperties().setTitleChartFont( axisTitleFont ); axisProperties.getYAxisProperties().setTitleChartFont( axisTitleFont ); DataAxisProperties dataAxisProperties = (DataAxisProperties) axisProperties.getYAxisProperties(); try { dataAxisProperties.setUserDefinedScale( -3000, 3000 ); } catch( PropertyException propertyException ) { propertyException.printStackTrace(); } dataAxisProperties.setRoundToNearest( 2 ); ChartFont titleFont = new ChartFont( new Font( "Georgia Negreta cursiva", Font.PLAIN, 14 ), Color.black ); this.chartProperties.setTitleFont( titleFont ); this.barChartProperties = new BarChartProperties(); ValueLabelRenderer valueLabelRenderer = new ValueLabelRenderer( false, false, true, -1 ); valueLabelRenderer.setValueLabelPosition( ValueLabelPosition.ON_TOP ); valueLabelRenderer.useVerticalLabels( false ); barChartProperties.addPostRenderEventListener( valueLabelRenderer ); } /********************************************************************************************** * **********************************************************************************************/ public void service( HttpServletRequest req, HttpServletResponse httpServletResponse ) throws ServletException, IOException { try { String[] xAxisLabels = {"1995", "1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004"}; String xAxisTitle = "Years"; String yAxisTitle = "Problems"; String title = "Micro$oft At Work"; IAxisDataSeries dataSeries = new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle, title ); double[][] data = new double[][]{{1500, 6880, 4510, 2600, -1200, -1580, 7000, 4555, 4000, 6120}}; String[] legendLabels = {"Bugs"}; Paint[] paints = new Paint[]{Color.yellow}; dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, legendLabels, paints, ChartType.BAR, this.barChartProperties ) ); AxisChart axisChart = new AxisChart( dataSeries, this.chartProperties, this.axisProperties, this.legendProperties, this.width, this.height ); ServletEncoderHelper.encodeJPEG13( axisChart, 1.0f, httpServletResponse ); } catch( Throwable throwable ) { //HACK do your error handling here... throwable.printStackTrace(); } } } |