001: /***********************************************************************************************
002: * File Info: $Id: PieChart2DServlet.java,v 1.1 2003/08/28 01:17:36 nathaniel_auvil Exp $
003: * Copyright (C) 2000
004: * Author: Nathaniel G. Auvil
005: * Contributor(s):
006: *
007: * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved.
008: *
009: * Redistribution and use of this software and associated documentation ("Software"), with or
010: * without modification, are permitted provided that the following conditions are met:
011: *
012: * 1. Redistributions of source code must retain copyright statements and notices.
013: * Redistributions must also contain a copy of this document.
014: *
015: * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
016: * conditions and the following disclaimer in the documentation and/or other materials
017: * provided with the distribution.
018: *
019: * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote
020: * products derived from this Software without prior written permission of Nathaniel G.
021: * Auvil. For written permission, please contact nathaniel_auvil@users.sourceforge.net
022: *
023: * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear
024: * in their names without prior written permission of Nathaniel G. Auvil. jCharts is a
025: * registered trademark of Nathaniel G. Auvil.
026: *
027: * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/).
028: *
029: * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY
030: * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
031: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
032: * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
033: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
034: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
035: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT
036: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
037: * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
038: ************************************************************************************************/package org.krysalis.jcharts.demo.simpleservlet;
039:
040: import org.krysalis.jcharts.chartData.ChartDataException;
041: import org.krysalis.jcharts.chartData.PieChartDataSet;
042: import org.krysalis.jcharts.encoders.ServletEncoderHelper;
043: import org.krysalis.jcharts.nonAxisChart.PieChart2D;
044: import org.krysalis.jcharts.properties.ChartProperties;
045: import org.krysalis.jcharts.properties.LegendProperties;
046: import org.krysalis.jcharts.properties.PieChart2DProperties;
047:
048: import javax.servlet.ServletException;
049: import javax.servlet.http.HttpServlet;
050: import javax.servlet.http.HttpServletRequest;
051: import javax.servlet.http.HttpServletResponse;
052: import java.awt.*;
053: import java.io.IOException;
054:
055: public class PieChart2DServlet extends HttpServlet {
056: //---all of my pie charts serviced by this Servlet will have the same properties.
057: private PieChart2DProperties properties;
058: private LegendProperties legendProperties;
059: private ChartProperties chartProperties;
060:
061: private int width = 550;
062: private int height = 350;
063:
064: /**********************************************************************************************
065: *
066: **********************************************************************************************/
067: public void init() {
068: //---all charts of this type of pie chart are going to share the same properties.
069: this .properties = new PieChart2DProperties();
070:
071: this .legendProperties = new LegendProperties();
072: this .legendProperties.setNumColumns(2);
073: this .legendProperties.setPlacement(LegendProperties.RIGHT);
074:
075: this .chartProperties = new ChartProperties();
076: }
077:
078: /**********************************************************************************************
079: *
080: **********************************************************************************************/
081: public void service(HttpServletRequest req,
082: HttpServletResponse response) throws ServletException,
083: IOException {
084: try {
085: PieChart2D pieChart2D = new PieChart2D(this .getData(),
086: this .legendProperties, this .chartProperties,
087: this .width, this .height);
088: ServletEncoderHelper.encodeJPEG13(pieChart2D, 1.0f,
089: response);
090: } catch (Throwable throwable) {
091: //HACK do your error handling here...
092: throwable.printStackTrace();
093: }
094: }
095:
096: /******************************************************************************************
097: * Returns a Tests a 'real' data set and usage.
098: *
099: * @throws ChartDataException
100: ******************************************************************************************/
101: private PieChartDataSet getData() throws ChartDataException {
102: double[] data = new double[] { 40, 15, 35, 65, 59 };
103: Paint[] paints = new Paint[] { Color.blue, Color.red,
104: Color.green, Color.yellow, Color.white };
105: String[] labels = { "BMW", "Honda", "Lexus", "Audi", "Acura" };
106: return new PieChartDataSet("Cars That Own!", data, labels,
107: paints, this.properties);
108: }
109: }
|