01: /*
02: * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
03: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
04: */
05: package com.sun.portal.ubt.report.view.chart;
06:
07: import com.sun.portal.ubt.report.data.DataMiner;
08: import com.sun.portal.ubt.report.data.file.raw.ChannelWiseUserActionsMiner;
09: import com.sun.portal.ubt.report.data.file.aggregate.ChannelWiseUserActionsMinerAggregator;
10: import com.sun.portal.ubt.report.view.IllegalMinerException;
11: import com.sun.portal.ubt.report.util.UBTReportResourceBundle;
12:
13: import java.util.Vector;
14: import java.util.TreeMap;
15: import java.util.Iterator;
16: import java.util.Locale;
17:
18: import org.jfree.chart.JFreeChart;
19: import org.jfree.chart.ChartFactory;
20: import org.jfree.data.general.DefaultPieDataset;
21:
22: /**
23: *
24: */
25: public class ChannelWiseUserActionsChart implements UBTChartI {
26:
27: DataMiner miner;
28: private UBTReportResourceBundle reportsResource;
29: public static final String ChannelPopularityInteractionsUnique = "ChannelPopularityInteractionsUnique";
30:
31: public ChannelWiseUserActionsChart(DataMiner miner, Locale locale)
32: throws IllegalMinerException {
33: if (!(miner instanceof ChannelWiseUserActionsMiner || miner instanceof ChannelWiseUserActionsMinerAggregator))
34: throw new IllegalMinerException();
35: this .miner = miner;
36: reportsResource = new UBTReportResourceBundle(locale);
37: }
38:
39: private JFreeChart createChart(String container) {
40: DefaultPieDataset dataset = createDataSet(container);
41: JFreeChart chart = ChartFactory.createPieChart(reportsResource
42: .getReportProperty(ChannelPopularityInteractionsUnique)
43: + " " + container, dataset, // Dataset
44: true, true, false // Show legend
45: );
46: UBTChartUtil.customizeChart(chart);
47: return chart;
48: }
49:
50: private DefaultPieDataset createDataSet(String container) {
51: String[] channels; //chaannels
52: TreeMap containerMap = (TreeMap) ((TreeMap) miner.getData())
53: .get(container);
54: Object[] objArray = (Object[]) containerMap.keySet().toArray();
55: channels = new String[objArray.length];
56: copy(objArray, channels);
57: DefaultPieDataset piedata = new DefaultPieDataset();
58: for (int i = 0; i < channels.length; i++) {
59: piedata.setValue(channels[i], ((TreeMap) containerMap
60: .get(channels[i])).size());
61: }
62: return piedata;
63: }
64:
65: private void copy(Object[] objArray, String[] series) {
66: for (int i = 0; i < objArray.length; i++) {
67: series[i] = (String) objArray[i];
68: }
69: }
70:
71: public Vector getChart() {
72: TreeMap data = (TreeMap) miner.getData();
73: Vector containers = new Vector();
74: int j = 0;
75: Iterator containerI = data.keySet().iterator();
76: while (containerI.hasNext()) {
77: containers.add(j, containerI.next());
78: j++;
79: }
80: Vector charts = new Vector(containers.size());
81: for (int k = 0; k < containers.size(); k++) {
82: charts.add(k, new UBTChartRenderer(
83: createChart((String) containers.get(k))));
84: }
85: return charts;
86: }
87: }
|