1 package jp.ymir.taskReporter.core
3 import java.text.SimpleDateFormat
4 import java.util.Calendar
5 import javax.swing.table.AbstractTableModel
6 import jp.ymir.taskReporter.core._
7 import scala.collection.immutable._
10 class ReportSet(private var _file: Option[File])
11 extends AbstractTableModel {
13 private var _reports : SortedMap[Calendar, Report] = TreeMap()
14 private var _dirty = false
16 _file.foreach { file => load(file) }
18 def load(file: File) {
21 var reports = _reports.empty
22 val src = Source.fromFile(file, "UTF-8")
24 TSV.decode(src.mkString).foreach { task =>
25 if (reports.isDefinedAt(task.date)) {
26 reports(task.date) += task
29 val report = new Report(task.date)
31 reports += (report.date -> report)
36 for (line <- src.getLines) {
38 val task = new Task(line)
39 if (reports.isDefinedAt(task.date)) {
40 reports(task.date) += task
43 val report = new Report(task.date)
45 reports += (report.date -> report)
60 def apply(n: Int) : Report =
61 // THINKME: Any better way than this?
62 _reports.values.toIndexedSeq(n)
64 def save(file: File) {
65 _file = Some(file); save
72 /* Method definitions for AbstractTableModel
74 def getColumnCount = 2
75 def getRowCount = _reports.size
77 override def getColumnName(column: Int) : String = {
84 def getValueAt(row: Int, column: Int) : Object = {
86 case 0 => this(row).dateString
87 case 1 => this(row).size : Integer