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) extends AbstractTableModel { private var _tasks : Seq[Task] = Vector() 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("") } } }