package jp.ymir.taskReporter.core
-import java.util.Calendar
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 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 = {
+ def dateString : String = dateString(_date)
+ def dateString(date: Calendar) : String = {
val fmt = new SimpleDateFormat("yyyy-MM-dd")
- fmt.format(_date.getTime)
+ 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 : Integer
+ case 1 => task.title
+ case 2 => task.tentativeDeadline.map(dateString).getOrElse("")
+ case 3 => task.deadline .map(dateString).getOrElse("")
+ case 4 => task.status
+ case 5 => task.supplement
+ }
}
}