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.*;
14:
15: import org.jfree.chart.JFreeChart;
16: import org.jfree.chart.ChartFactory;
17: import org.jfree.data.general.DefaultPieDataset;
18:
19: /**
20: *
21: */
22: public class ContainerWiseUserActionsChart implements UBTChartI {
23:
24: DataMiner miner;
25: public static final String POPULARITY_CONTAINER_PER_CUSTOM = "ConatinerPopularity";
26: private UBTReportResourceBundle reportsResource;
27:
28: public ContainerWiseUserActionsChart(DataMiner miner, Locale locale)
29: throws IllegalMinerException {
30: if (!(miner instanceof ChannelWiseUserActionsMiner || miner instanceof ChannelWiseUserActionsMinerAggregator))
31: throw new IllegalMinerException();
32: this .miner = miner;
33: reportsResource = new UBTReportResourceBundle(locale);
34: }
35:
36: private JFreeChart createChart() {
37: DefaultPieDataset dataset = createDataSet();
38: JFreeChart chart = ChartFactory.createPieChart(reportsResource
39: .getReportProperty(POPULARITY_CONTAINER_PER_CUSTOM),
40: dataset, // Dataset
41: true, true, false // Show legend
42: );
43: UBTChartUtil.customizeChart(chart);
44: return chart;
45: }
46:
47: private DefaultPieDataset createDataSet() {
48: String[] containers; //chaannels
49: int[] startvalues;
50: TreeMap data = (TreeMap) miner.getData();
51: Object[] objArray = (Object[]) data.keySet().toArray();
52: containers = new String[objArray.length];
53: startvalues = new int[objArray.length];
54: Arrays.fill(startvalues, 0);
55: copy(objArray, containers);
56: DefaultPieDataset piedata = new DefaultPieDataset();
57: for (int i = 0; i < containers.length; i++) {
58: TreeMap channelsMap = (TreeMap) data.get(containers[i]);
59: Object[] channels = channelsMap.keySet().toArray();
60: for (int k = 0; k < channels.length; k++) {
61: startvalues[i] += ((TreeMap) channelsMap
62: .get(channels[k])).size();
63: }
64: }
65: for (int i = 0; i < containers.length; i++)
66: piedata.setValue(containers[i], startvalues[i]);
67: return piedata;
68: }
69:
70: private void copy(Object[] objArray, String[] series) {
71: for (int i = 0; i < objArray.length; i++) {
72: series[i] = (String) objArray[i];
73: }
74: }
75:
76: public Vector getChart() {
77: Vector charts = new Vector(1);
78: charts.add(0, new UBTChartRenderer(createChart()));
79: return charts;
80: }
81: }
|