add 'tempo' and 'fingering' graphs for scales report
[se-panther.git] / src / panther / ui / reports / ReportScales.java
blob2d8101594347af2d0aac349c974f5d9859140307
1 package panther.ui.reports;
3 import java.util.*;
4 import java.sql.*;
5 import javax.swing.*;
7 import org.jfree.chart.*;
8 import org.jfree.chart.plot.*;
9 import org.jfree.chart.renderer.xy.*;
10 import org.jfree.data.time.*;
11 import org.jfree.data.xy.*;
13 import panther.db.*;
15 public class ReportScales
16 extends JPanel
18 public ReportScales(int sid)
20 setName("Scales - " + MySQLManager.get_student_name(sid));
21 ScalesList slist = MySQLManager.get_student_scales(sid);
24 ChartPanel cp_proficiency = new ChartPanel(gen_chart(gen_dataset(
25 slist,
26 ScalesEntry.Type.STUDENT_PROFICIENCY,
27 ScalesEntry.Type.TEACHER_PROFICIENCY),
28 "Proficiency")
30 ChartPanel cp_tempo = new ChartPanel(gen_chart(gen_dataset(
31 slist,
32 ScalesEntry.Type.STUDENT_TEMPO,
33 ScalesEntry.Type.TEACHER_TEMPO),
34 "Tempo")
36 ChartPanel cp_fingering = new ChartPanel(gen_chart(gen_dataset(
37 slist,
38 ScalesEntry.Type.STUDENT_FINGERING,
39 ScalesEntry.Type.TEACHER_FINGERING),
40 "Fingering")
43 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
44 add(cp_proficiency);
45 add(cp_tempo);
46 add(cp_fingering);
49 private JFreeChart gen_chart(XYDataset dataset, String title)
51 JFreeChart chart = ChartFactory.createTimeSeriesChart(
52 title,
53 "Date",
54 "Score",
55 dataset,
56 true, true, false
59 return chart;
62 private XYDataset gen_dataset(
63 ScalesList slist,
64 ScalesEntry.Type t_student,
65 ScalesEntry.Type t_teacher)
67 ArrayList<java.sql.Date> slist_dates = slist.get_scales_list_dates();
69 int[] slist_student = slist.get_scores(t_student);
70 int[] slist_teacher = slist.get_scores(t_teacher);
72 TimeSeries ts_student = new TimeSeries("Student");
73 TimeSeries ts_teacher = new TimeSeries("Teacher");
75 for (int i=0; i<slist_dates.size(); i++) {
76 Week week = new Week(slist_dates.get(i));
78 ts_student.add(week, slist_student[i]);
79 ts_teacher.add(week, slist_teacher[i]);
82 TimeSeriesCollection dataset = new TimeSeriesCollection();
83 dataset.addSeries(ts_student);
84 dataset.addSeries(ts_teacher);
86 return dataset;