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.PortletWindowStates;
09: import com.sun.portal.ubt.report.data.file.raw.PortletMiner;
10: import com.sun.portal.ubt.report.data.file.aggregate.PortletRenderMinerAggregator;
11: import com.sun.portal.ubt.report.data.file.aggregate.PortletActionsMinerAggregator;
12: import com.sun.portal.ubt.report.view.IllegalMinerException;
13:
14: import java.util.Iterator;
15: import java.util.Set;
16: import java.util.TreeMap;
17:
18: /**
19: *
20: */
21: public class PortletDataSource extends UBTTableDataSource {
22: Set windowStates = PortletWindowStates.getSupportedStates();
23:
24: public PortletDataSource(DataMiner miner)
25: throws IllegalMinerException {
26: super (miner);
27: if (!(miner instanceof PortletMiner
28: || miner instanceof PortletRenderMinerAggregator || miner instanceof PortletActionsMinerAggregator))
29: throw new IllegalMinerException();
30: columnNames = new String[] { "EntityID", "Mode" };
31: Object[] objAr = windowStates.toArray();
32: String[] cols = new String[columnNames.length + objAr.length];
33: int i = 0;
34: for (i = 0; i < columnNames.length; i++) {
35: cols[i] = columnNames[i];
36: }
37: for (int j = i; j < objAr.length + i; j++) {
38: cols[j] = (String) objAr[j - i];
39: }
40: columnNames = cols;
41: Object minerdata = miner.getData();
42: if (minerdata instanceof TreeMap) {
43: this .data = toDoubleArray((TreeMap) minerdata);
44: }
45: }
46:
47: private Object[][] toDoubleArray(TreeMap treeMap) {
48: //map(portlet,map(mode, map(window,count)
49: Object[][] dataSource = new Object[0][0];
50: Set keySet = treeMap.keySet();
51: int rows = 0;
52: Iterator keyI = keySet.iterator();
53: while (keyI.hasNext()) {
54: rows += ((TreeMap) treeMap.get(keyI.next())).keySet()
55: .size();
56: }
57: dataSource = new Object[rows][columnNames.length];
58: Iterator portletsI = keySet.iterator();
59: int i = 0;
60: while (portletsI.hasNext()) {
61: Object portlet = portletsI.next();
62: TreeMap modeMap = (TreeMap) treeMap.get(portlet);
63: Iterator modesI = modeMap.keySet().iterator();
64: while (modesI.hasNext()) {
65: Object mode = modesI.next();
66: TreeMap windowStateMap = (TreeMap) modeMap.get(mode);
67: Iterator windowStatesI = windowStateMap.keySet()
68: .iterator();
69: dataSource[i][0] = portlet;
70: dataSource[i][1] = mode;
71: while (windowStatesI.hasNext()) {
72: Object action = windowStatesI.next();
73: for (int k = 2; k < windowStates.size() + 2; k++)
74: if (action.equals(columnNames[k]))
75: dataSource[i][k] = windowStateMap
76: .get(action);
77: }
78: i++;
79: }
80: }
81: return dataSource;
82: }
83: }
|