]> gitweb @ CieloNegro.org - task-reporter.git/blob - src/main/scala/jp/ymir/taskReporter/core/Report.scala
wip
[task-reporter.git] / src / main / scala / jp / ymir / taskReporter / core / Report.scala
1 package jp.ymir.taskReporter.core
2 import java.text.SimpleDateFormat
3 import java.util.Calendar
4 import java.util.GregorianCalendar
5 import javax.swing.table.AbstractTableModel
6 import scala.collection.immutable._
7
8 class Report(private val _date: Calendar) extends AbstractTableModel {
9   private var _tasks : Seq[Task] = Vector()
10
11   def this() = this(new GregorianCalendar())
12
13   def date : Calendar = _date
14   def size : Int      = _tasks.size
15
16   def apply(idx: Int) = _tasks(idx)
17
18   def +=(task: Task) {
19     require(task.date == _date)
20     _tasks = _tasks :+ task
21   }
22
23   def dateString : String = dateString(_date)
24   def dateString(date: Calendar) : String = {
25     val fmt = new SimpleDateFormat("yyyy-MM-dd")
26     fmt.format(date.getTime)
27   }
28
29   /* Method definitions for AbstractTableModel
30    */
31   def getColumnCount = 6
32   def getRowCount    = _tasks.size
33
34   override def getColumnName(column: Int) : String = {
35     column match {
36       case 0 => "チケットID"
37       case 1 => "作業名"
38       case 2 => "仮期限"
39       case 3 => "期限"
40       case 4 => "状態"
41       case 5 => "補足"
42     }
43   }
44
45   def getValueAt(row: Int, column: Int) : Object = {
46     val task = _tasks(row)
47     column match {
48       case 0 => task.ticketID : Integer
49       case 1 => task.title
50       case 2 => task.tentativeDeadline.map(dateString).getOrElse("")
51       case 3 => task.deadline         .map(dateString).getOrElse("")
52       case 4 => task.status
53       case 5 => task.supplement
54     }
55   }
56 }