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
17 case Some(file) => load(file)
21 def load(file: File) {
22 var reports = _reports.empty
23 val src = Source.fromFile(file, "UTF-8")
25 for (line <- src.getLines) {
27 val task = new Task(line)
28 if (reports.isDefinedAt(task.date)) {
29 reports(task.date) += task
32 val report = new Report(task.date)
34 reports += (report.date -> report)
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 = {
69 // THINKME: Any better way than this?
70 val report = _reports.values.toIndexedSeq(row)
72 case 0 => report.dateString
73 case 1 => report.size : Integer