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.data.file.derived;
06:
07: import com.sun.portal.ubt.report.data.DataMiner;
08: import com.sun.portal.ubt.report.data.file.raw.ChannelRenderMiner;
09: import com.sun.portal.ubt.report.data.file.aggregate.ChannelRenderMinerAggregator;
10: import com.sun.portal.ubt.report.view.IllegalMinerException;
11:
12: import java.util.Iterator;
13: import java.util.Set;
14: import java.util.TreeMap;
15:
16: /**
17: *
18: */
19: public class ChannelRenderDataSource extends UBTTableDataSource {
20: public ChannelRenderDataSource(DataMiner miner)
21: throws IllegalMinerException {
22: super (miner);
23: columnNames = new String[] { "Container", "Channel", "User",
24: "Count" };
25: if (!(miner instanceof ChannelRenderMiner || miner instanceof ChannelRenderMinerAggregator))
26: throw new IllegalMinerException();
27: Object data = miner.getData();
28: if (data instanceof TreeMap) {
29: this .data = toDoubleArray((TreeMap) data);
30: }
31: }
32:
33: private Object[][] toDoubleArray(TreeMap treeMap) {
34: //Map(Container, Map(channel, Map(User, count)))
35: Object[][] dataSource = new Object[0][0];
36: Set keySet = treeMap.keySet();
37: int rows = 0;
38: Iterator keyI = keySet.iterator();
39: while (keyI.hasNext()) {
40: TreeMap channelMap = (TreeMap) treeMap.get(keyI.next());
41: Iterator it = channelMap.keySet().iterator();
42: while (it.hasNext()) {
43: rows += ((TreeMap) channelMap.get(it.next())).size();
44: }
45: }
46: int i = 0;
47: dataSource = new Object[rows][columnNames.length];
48: Iterator containersI = keySet.iterator();
49: while (containersI.hasNext()) {
50: String container = (String) containersI.next();
51: TreeMap containerMap = (TreeMap) treeMap.get(container);
52: Iterator channelsI = containerMap.keySet().iterator();
53: while (channelsI.hasNext()) {
54: Object channel = channelsI.next();
55: TreeMap channelMap = (TreeMap) containerMap
56: .get(channel);
57: Iterator usersI = channelMap.keySet().iterator();
58: while (usersI.hasNext()) {
59: Object user = usersI.next();
60: dataSource[i][0] = container;
61: dataSource[i][1] = channel;
62: dataSource[i][2] = user;
63: dataSource[i][3] = channelMap.get(user);
64: i++;
65: }
66: }
67: }
68: return dataSource;
69: }
70:
71: }
|