ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/reports/DBReporter2/ReportMaker.java
(Generate patch)

Comparing projects/cms/source/reports/DBReporter2/ReportMaker.java (file contents):
Revision 1.1 by pjm2, Sat Feb 3 14:56:14 2001 UTC vs.
Revision 1.5 by pjm2, Sat Feb 3 21:49:36 2001 UTC

# Line 5 | Line 5 | import java.io.*;
5  
6   import uk.ac.ukc.iscream.util.*;
7  
8 +
9 + // ReportMaker class - used to produce each type of report for a machine.
10   public class ReportMaker {
11 <    
12 <    public ReportMaker(Statement stmt, String dateDir, long startTime, long endTime) {
11 >
12 >    // Constructor.  This takes the database Statement.    
13 >    public ReportMaker(Statement stmt, String webDir, String dateDir, long startTime, long endTime) {
14          _stmt = stmt;
15 +        _webDir = webDir;
16          _dateDir = dateDir;
17          _startTime = startTime;
18          _endTime = endTime;
19      }
20      
21 <    public void produce(ReportList reports, String machine) {
21 >    // Produce all reports in the report list for the machine.
22 >    public void produce(ReportList reports, String machine) throws SQLException {
23          
19        if (1==1)
20            return;
21        
24          System.out.println("Producing reports for " + machine + ".");
25  
26 +        // Make a list of PlotData objects to build the charts.
27 +        LinkedList plots = new LinkedList();
28          Iterator reportIt = reports.iterator();
29          while (reportIt.hasNext()) {
30 <            Report report = (Report)reportIt.next();
31 <            report.setPlotData(null);
28 <            report.setPlotData(new PlotData(_startTime, _endTime));
30 >            reportIt.next();
31 >            plots.add(new PlotData(_startTime, _endTime));
32          }
33          
34 <        String sql = "SELECT receipt_date, xml FROM ipacket WHERE machine_name='" + machine + "' ORDER BY receipt_date;";
35 <
34 >        
35 >        // Select the data we nede from the database.
36 >        String sql = "SELECT receipt_date, xml FROM ipacket WHERE machine_name='" + machine + "' AND receipt_date>=" + _startTime + " AND receipt_date<=" + _endTime + " ORDER BY receipt_date;";
37          ResultSet rs = null;
38          try {
39              rs = _stmt.executeQuery(sql);
# Line 52 | Line 56 | public class ReportMaker {
56                  pm = new XMLPacketMaker(xml);
57                  packet = pm.createXMLPacket();
58                  reportIt = reports.iterator();
59 +                Iterator plotIt = plots.iterator();
60                  while (reportIt.hasNext()) {
61 +                    PlotData plotData = (PlotData)plotIt.next();
62                      Report report = (Report)reportIt.next();
63                      String reportField = report.getReportField();
58                    PlotData plotData = report.getPlotData();
64                      long x = rs.getLong("receipt_date");
65 <                    double y;
65 >                    double y = 0.0;
66                      try {
67                          y = Double.parseDouble(packet.getParam(reportField));
68                      }
# Line 65 | Line 70 | public class ReportMaker {
70                          System.out.println("Skipped a non-numerical field for " + reportField + ".");
71                          continue;
72                      }
73 +                    catch (NullPointerException e) {
74 +                        continue;
75 +                    }
76                      plotData.addPoint(x, y);
77                  }
78              }
79 +            rs.close();
80          }
81          catch (SQLException e) {
82              System.out.println("SQLException: " + e);
# Line 75 | Line 84 | public class ReportMaker {
84          
85          System.out.println("[DEBUG]Writing graphs to disk.");
86          
87 +        // Write a chart of each report to disk.
88 +        Iterator plotIt = plots.iterator();
89          reportIt = reports.iterator();
90          while (reportIt.hasNext()) {
91              Report report = (Report)reportIt.next();
92              String reportField = report.getReportField();
93 <            PlotData plotData = report.getPlotData();
93 >            PlotData plotData = (PlotData)plotIt.next();
94              plotData.flushPoints();
95              plotData.scaleToFitX(SHTMLLayout.CHART_WIDTH, SHTMLLayout.CHART_HEIGHT);
96              IscreamChart chart = new IscreamChart(_startTime, _endTime);
# Line 89 | Line 100 | public class ReportMaker {
100              }
101              BufferedImage img = chart.drawChart(plotData, SHTMLLayout.CHART_WIDTH, SHTMLLayout.CHART_HEIGHT, 24, 10, maxY);
102              IscreamChartWriter imgWriter = new IscreamChartWriter();
103 <            imgWriter.writeChart(img, _dateDir + "_" + machine + "_" + reportField + ".gif");
104 <            System.out.println("[DEBUG]Point count: " + plotData.countPoints());
105 <            report.clearPlotData();
106 <            System.out.println("[DEBUG]Point count: " + plotData.countPoints());
103 >            IscreamFilePlacer placer = new IscreamFilePlacer(_webDir);
104 >            File destination = placer.makeDirs(_dateDir, machine, reportField);
105 >            imgWriter.writeChart(img, new File(destination, "chart.gif"));
106 >            System.out.println("[DEBUG]Point count: " + plotData.countPoints());            
107          }
108          
109      }
110      
111      private Statement _stmt = null;
112 +    private String _webDir;
113      private String _dateDir;
114      private long _startTime;
115      private long _endTime;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines