]> gitweb @ CieloNegro.org - task-reporter.git/blobdiff - src/main/scala/jp/ymir/taskReporter/core/ReportSet.scala
adopt the new format
[task-reporter.git] / src / main / scala / jp / ymir / taskReporter / core / ReportSet.scala
index f90071dd1c65a74b584eda74969aa176bac8724e..19747b31eaf5f5888ba7bb6044e12759bdd252c5 100644 (file)
@@ -1,5 +1,6 @@
 package jp.ymir.taskReporter.core
 import java.io._
+import java.text.SimpleDateFormat
 import java.util.Calendar
 import javax.swing.table.AbstractTableModel
 import jp.ymir.taskReporter.core._
@@ -12,26 +13,22 @@ class ReportSet(private var _file: Option[File])
   private var _reports : SortedMap[Calendar, Report] = TreeMap()
   private var _dirty = false
 
-  _file match {
-    case Some(file) => load(file)
-    case None =>
-  }
+  _file.foreach { file => load(file) }
 
   def load(file: File) {
+    import Task._
+
     var reports = _reports.empty
     val src     = Source.fromFile(file, "UTF-8")
 
-    for (line <- src.getLines) {
-      if (!line.isEmpty) {
-        val task = new Task(line)
-        if (reports.isDefinedAt(task.date)) {
-          reports(task.date) += task
-        }
-        else {
-          val report = new Report(task.date)
-          report  += task
-          reports += (report.date -> report)
-        }
+    LTSV.decode[Task](src.mkString).foreach { task =>
+      if (reports.isDefinedAt(task.date)) {
+        reports(task.date) += task
+      }
+      else {
+        val report = new Report(task.date)
+        report  += task
+        reports += (report.date -> report)
       }
     }
 
@@ -44,6 +41,10 @@ class ReportSet(private var _file: Option[File])
   def file  = _file
   def dirty = _dirty
 
+  def apply(n: Int) : Report =
+    // THINKME: Any better way than this?
+    _reports.values.toIndexedSeq(n)
+
   def save(file: File) {
     _file = Some(file); save
   }
@@ -65,11 +66,9 @@ class ReportSet(private var _file: Option[File])
   }
 
   def getValueAt(row: Int, column: Int) : Object = {
-    // THINKME: Any better way than this?
-    val report = _reports.values.toIndexedSeq(row)
     column match {
-      case 0 => report.dateString
-      case 1 => report.size : Integer
+      case 0 => this(row).dateString
+      case 1 => this(row).size : Integer
     }
   }
 }