1 package jp.ymir.taskReporter.core
3 import java.util.Calendar
4 import javax.swing.table.AbstractTableModel
5 import jp.ymir.taskReporter.core._
6 import scala.collection.immutable._
9 class ReportSet(private var _file: Option[File])
10 extends AbstractTableModel {
12 private var _reports : SortedMap[Calendar, Report] = TreeMap()
13 private var _dirty = false
16 case Some(file) => load(file)
20 def load(file: File) {
21 var reports = _reports.empty
22 val src = Source.fromFile(file, "UTF-8")
24 for (line <- src.getLines) {
26 val task = new Task(line)
27 if (reports.isDefinedAt(task.date)) {
28 reports(task.date) += task
31 val report = new Report(task.date)
33 reports += (report.date -> report)
47 def save(file: File) {
48 _file = Some(file); save
55 /* Method definitions for AbstractTableModel
57 def getColumnCount = 2
58 def getRowCount = _reports.size
60 override def getColumnName(column: Int) : String = {
67 def getValueAt(row: Int, column: Int) : Object = {
68 // THINKME: Any better way than this?
69 val report = _reports.values.toIndexedSeq(row)
71 case 0 => report.dateString
72 case 1 => report.size : Integer