~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to local/in/dhis-web-ga/WEB-INF/src/org/hisp/gtool/charts/CombinedCategoryPlotChart1.java

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.hisp.gtool.charts;
 
2
 
 
3
import java.awt.Font;
 
4
import java.awt.image.BufferedImage;
 
5
import java.io.PrintWriter;
 
6
 
 
7
import javax.servlet.http.HttpServletRequest;
 
8
import javax.servlet.http.HttpServletResponse;
 
9
import javax.servlet.http.HttpSession;
 
10
 
 
11
import org.jfree.chart.ChartRenderingInfo;
 
12
import org.jfree.chart.ChartUtilities;
 
13
import org.jfree.chart.JFreeChart;
 
14
import org.jfree.chart.axis.CategoryAxis;
 
15
import org.jfree.chart.axis.CategoryLabelPositions;
 
16
import org.jfree.chart.axis.NumberAxis;
 
17
import org.jfree.chart.entity.StandardEntityCollection;
 
18
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
 
19
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
 
20
import org.jfree.chart.plot.CategoryPlot;
 
21
import org.jfree.chart.plot.CombinedDomainCategoryPlot;
 
22
import org.jfree.chart.renderer.category.BarRenderer;
 
23
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
 
24
import org.jfree.chart.title.TextTitle;
 
25
import org.jfree.data.category.CategoryDataset;
 
26
import org.jfree.data.category.DefaultCategoryDataset;
 
27
import org.jfree.ui.RectangleEdge;
 
28
import org.jfree.ui.VerticalAlignment;
 
29
 
 
30
public class CombinedCategoryPlotChart1 {
 
31
 
 
32
//       Data Related Bar Chart
 
33
        //      Row Keys
 
34
        String[] series1;
 
35
        // Column Keys
 
36
        String[] categories1;
 
37
        // data...      
 
38
        double[][] data1;
 
39
        
 
40
        String chartTitle;
 
41
        String xAxis_Title;
 
42
        String yAxis_Title;
 
43
        
 
44
        // Data Related Line Chart
 
45
        /*
 
46
         String[] series2;
 
47
         // Column Keys
 
48
          String[] categories2; 
 
49
        // data...      
 
50
        double[][] data2;
 
51
        */
 
52
        
 
53
        //      constructor
 
54
        public CombinedCategoryPlotChart1() { }
 
55
 
 
56
        // Function For Creating Dataset for Barchart
 
57
        private DefaultCategoryDataset  getDataset() 
 
58
        {    
 
59
                
 
60
                //      create the dataset...
 
61
                DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 
62
                                        
 
63
                for(int i=0;i<series1.length;i++)
 
64
                {
 
65
                        for(int j=0;j<categories1.length;j++)
 
66
                        {
 
67
                                dataset.addValue(data1[i][j], series1[i], categories1[j]);
 
68
                        }
 
69
                }
 
70
                
 
71
                return dataset;
 
72
        }
 
73
        
 
74
        /*
 
75
        // Function For Creating Dataset for Linechart
 
76
        private DefaultCategoryDataset  getDataset() 
 
77
        {               
 
78
                //      create the dataset...
 
79
                DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 
80
                                        
 
81
                for(int i=0;i<series1.length;i++)
 
82
                {
 
83
                        for(int j=0;j<categories1.length;j++)
 
84
                        {
 
85
                                dataset.addValue(data1[i][j], series1[i], categories1[j]);
 
86
                        }
 
87
                }               
 
88
                return dataset;
 
89
        }
 
90
        */
 
91
        
 
92
public String getChartViewer(HttpServletRequest request, HttpServletResponse response) {
 
93
    
 
94
        
 
95
        final CategoryDataset dataset1 = getDataset();
 
96
    final NumberAxis rangeAxis1 = new NumberAxis(yAxis_Title);
 
97
    rangeAxis1.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
 
98
    rangeAxis1.setUpperMargin(0.15);
 
99
    rangeAxis1.setLowerMargin(0.15);
 
100
    
 
101
    final LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
 
102
    renderer1.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
 
103
    renderer1.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
 
104
    renderer1.setItemLabelsVisible(true);
 
105
    final CategoryPlot subplot1 = new CategoryPlot(dataset1, null, rangeAxis1, renderer1);
 
106
    subplot1.setDomainGridlinesVisible(true);
 
107
    
 
108
    final CategoryDataset dataset2 = getDataset();
 
109
    final NumberAxis rangeAxis2 = new NumberAxis(yAxis_Title);
 
110
    rangeAxis2.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
 
111
    rangeAxis2.setUpperMargin(0.30);
 
112
    rangeAxis1.setLowerMargin(0.30);
 
113
    
 
114
    final BarRenderer renderer2 = new BarRenderer();
 
115
    renderer2.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
 
116
    renderer2.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
 
117
    renderer2.setItemLabelsVisible(true);
 
118
    final CategoryPlot subplot2 = new CategoryPlot(dataset2, null, rangeAxis2, renderer2);    
 
119
    subplot2.setDomainGridlinesVisible(true);
 
120
 
 
121
    final CategoryAxis domainAxis = new CategoryAxis(xAxis_Title);
 
122
    domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
 
123
    
 
124
    final CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis);
 
125
    plot.add(subplot1, 2);
 
126
    plot.add(subplot2, 1);
 
127
   
 
128
    
 
129
    
 
130
 
 
131
    final JFreeChart chart = new JFreeChart(
 
132
        "",
 
133
        new Font("SansSerif", Font.BOLD, 12),
 
134
        plot,
 
135
        true
 
136
    );
 
137
         
 
138
         /* TITLE */
 
139
                final TextTitle mainTitle = new TextTitle("Combined Category Plot Chart");
 
140
                mainTitle.setFont(new Font("times", Font.BOLD, 13));
 
141
                mainTitle.setPosition(RectangleEdge.TOP);     
 
142
                mainTitle.setVerticalAlignment(VerticalAlignment.BOTTOM);
 
143
                chart.addSubtitle(mainTitle);    
 
144
    
 
145
    /* SUB TITLE */     
 
146
             final TextTitle subtitle = new TextTitle(chartTitle);
 
147
             subtitle.setFont(new Font("times", Font.BOLD, 13));
 
148
             subtitle.setPosition(RectangleEdge.TOP);     
 
149
             subtitle.setVerticalAlignment(VerticalAlignment.BOTTOM);
 
150
             chart.addSubtitle(subtitle);    
 
151
   
 
152
    // OPTIONAL CUSTOMISATION COMPLETED.
 
153
 
 
154
 
 
155
  ChartRenderingInfo info = null;
 
156
  HttpSession session = request.getSession();
 
157
  try {
 
158
 
 
159
    //Create RenderingInfo object
 
160
    response.setContentType("text/html");
 
161
    info = new ChartRenderingInfo(new StandardEntityCollection());
 
162
    BufferedImage chartImage = chart.createBufferedImage(800, 500, info);
 
163
 
 
164
    // putting chart as BufferedImage in session, 
 
165
    // thus making it available for the image reading action Action.
 
166
    session.setAttribute("chartImage", chartImage);
 
167
 
 
168
    PrintWriter writer = new PrintWriter(response.getWriter());
 
169
    
 
170
    
 
171
    ChartUtilities.writeImageMap(writer,"imageMap",info,true);
 
172
    
 
173
    
 
174
    writer.flush();
 
175
  
 
176
  }
 
177
  catch (Exception e) {
 
178
     // handel your exception here
 
179
  }
 
180
 
 
181
  String pathInfo = "http://";
 
182
  pathInfo += request.getServerName();
 
183
  int port = request.getServerPort();
 
184
  pathInfo += ":"+String.valueOf(port);
 
185
  pathInfo += request.getContextPath();
 
186
  String chartViewer = pathInfo + "/servlet/ChartViewer";
 
187
  return chartViewer;
 
188
}
 
189
 
 
190
 
 
191
 
 
192
public String getChartTitle() {
 
193
        return chartTitle;
 
194
}
 
195
 
 
196
public void setChartTitle(String chartTitle) {
 
197
        this.chartTitle = chartTitle;
 
198
}
 
199
 
 
200
public String[] getCategories1() {
 
201
        return categories1;
 
202
}
 
203
 
 
204
public void setCategories1(String[] categories1) {
 
205
        this.categories1 = categories1;
 
206
}
 
207
 
 
208
 
 
209
public double[][] getData1() {
 
210
        return data1;
 
211
}
 
212
 
 
213
public void setData1(double[][] data1) {
 
214
        this.data1 = data1;
 
215
}
 
216
 
 
217
public String[] getSeries1() {
 
218
        return series1;
 
219
}
 
220
 
 
221
public void setSeries1(String[] series1) {
 
222
        this.series1 = series1;
 
223
}
 
224
 
 
225
public String getXAxis_Title() {
 
226
        return xAxis_Title;
 
227
}
 
228
 
 
229
public void setXAxis_Title(String axis_Title) {
 
230
        xAxis_Title = axis_Title;
 
231
}
 
232
 
 
233
public String getYAxis_Title() {
 
234
        return yAxis_Title;
 
235
}
 
236
 
 
237
public void setYAxis_Title(String axis_Title) {
 
238
        yAxis_Title = axis_Title;
 
239
}
 
240
 
 
241
 
 
242
 
 
243
        
 
244
}