]> gitweb @ CieloNegro.org - task-reporter.git/blobdiff - src/main/scala/jp/ymir/taskReporter/core/Report.scala
new tsv
[task-reporter.git] / src / main / scala / jp / ymir / taskReporter / core / Report.scala
index 5fa1ceb4efa3e845b3768077972bc5f2cdd39c17..1963b6c799784f401fe0f1d428479ea02e5f5719 100644 (file)
@@ -1,14 +1,56 @@
 package jp.ymir.taskReporter.core
+import java.text.SimpleDateFormat
 import java.util.Calendar
+import java.util.GregorianCalendar
+import javax.swing.table.AbstractTableModel
 import scala.collection.immutable._
 
-class Report(private val _date: Calendar) {
+class Report(private val _date: Calendar) extends AbstractTableModel {
   private var _tasks : Seq[Task] = Vector()
 
-  def date = _date
+  def this() = this(new GregorianCalendar())
+
+  def date : Calendar = _date
+  def size : Int      = _tasks.size
+
+  def apply(idx: Int) = _tasks(idx)
 
   def +=(task: Task) {
     require(task.date == _date)
     _tasks = _tasks :+ task
   }
+
+  def dateString : String = dateString(_date)
+  def dateString(date: Calendar) : String = {
+    val fmt = new SimpleDateFormat("yyyy-MM-dd")
+    fmt.format(date.getTime)
+  }
+
+  /* Method definitions for AbstractTableModel
+   */
+  def getColumnCount = 6
+  def getRowCount    = _tasks.size
+
+  override def getColumnName(column: Int) : String = {
+    column match {
+      case 0 => "チケットID"
+      case 1 => "作業名"
+      case 2 => "作業完了予定年月日"
+      case 3 => "タスク期限"
+      case 4 => "状態"
+      case 5 => "説明"
+    }
+  }
+
+  def getValueAt(row: Int, column: Int) : Object = {
+    val task = _tasks(row)
+    column match {
+      case 0 => task.ticketID.map(_.toString).getOrElse("")
+      case 1 => task.title
+      case 2 => dateString(task.expectedCompletionDate)
+      case 3 => task.deadline.map(dateString).getOrElse("")
+      case 4 => task.status
+      case 5 => task.description.getOrElse("")
+    }
+  }
 }