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 LTSV.decode[Task](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)
44 def apply(n: Int) : Report =
45 // THINKME: Any better way than this?
46 _reports.values.toIndexedSeq(n)
48 def save(file: File) {
49 _file = Some(file); save
56 /* Method definitions for AbstractTableModel
58 def getColumnCount = 2
59 def getRowCount = _reports.size
61 override def getColumnName(column: Int) : String = {
68 def getValueAt(row: Int, column: Int) : Object = {
70 case 0 => this(row).dateString
71 case 1 => this(row).size : Integer