01: package com.sun.portal.ubt.report.server;
02:
03: import com.sun.portal.ubt.report.view.report.UBTReportI;
04: import com.sun.portal.ubt.report.view.report.UBTReportsFactory;
05: import com.sun.portal.ubt.report.view.IllegalMinerException;
06: import com.sun.portal.ubt.report.data.DataMiner;
07: import com.sun.portal.ubt.report.data.file.aggregate.DataMinerAggregatorFactory;
08: import com.sun.portal.ubt.report.data.file.aggregate.DataMinerAggregator;
09:
10: import java.util.Vector;
11: import java.util.TreeMap;
12: import java.util.Iterator;
13: import java.util.Locale;
14:
15: /**
16: *
17: */
18: public class UBTReportGenAggregator extends UBTReportGenerator {
19: Vector hostReportsVector = new Vector();
20:
21: public UBTReportGenAggregator(String templateDir,
22: String destinationDir, String portalID, Locale locale) {
23: super (templateDir, destinationDir, portalID, locale);
24: }
25:
26: public UBTReportGenAggregator(String templateDir, String portalID,
27: Locale locale) {
28: super (templateDir, portalID, locale);
29: }
30:
31: public UBTReportI[] getAggregatedReports()
32: throws IllegalMinerException {
33: UBTReportI[] aggregateReports = null;
34: for (int i = 0; i < hostReportsVector.size(); i++) {
35:
36: if (i == 0) {
37: aggregateReports = makeUBTReportIArray(hostReportsVector
38: .get(i));
39: } else {
40: aggregate(aggregateReports,
41: makeUBTReportIArray(hostReportsVector.get(i)));
42: }
43: }
44: return aggregateReports;
45: }
46:
47: private void aggregate(UBTReportI[] aggregateReports,
48: UBTReportI[] ubtReports) throws IllegalMinerException {
49: for (int i = 0; i < aggregateReports.length; i++) {
50: String reportName = aggregateReports[i].getReportName();
51: DataMinerAggregator[] minerAggregator = DataMinerAggregatorFactory
52: .getAggregator(reportName);
53: DataMiner[] miners = ubtReports[i].getDataMiner();
54: DataMiner[] aggregateMiners = aggregateReports[i]
55: .getDataMiner();
56: for (int k = 0; k < aggregateMiners.length; k++) {
57: minerAggregator[k].addMiner(miners[k]);
58: minerAggregator[k].addMiner(aggregateMiners[k]);
59: minerAggregator[k].aggregate();
60: minerAggregator[k].setPortalID(miners[k].getPortalID());
61: }
62: aggregateReports[i].setDataMiner(minerAggregator);
63: }
64: }
65:
66: //expects all the report arrays are of same size
67: public void add(TreeMap reportDataMap) {
68: hostReportsVector.add(reportDataMap);
69: }
70:
71: }
|