- var status : Status = {
- val pattern = """^(?:状態:)?(.+)$""".r
- cols(5) match {
- case pattern(s) =>
- s match {
- case "未作業" => Status.NoProgress
- case "順調" => Status.DoingFine
- case "悪化" => Status.Lagging
- case "遅延" => Status.WillDelay
- case "期限変更" => Status.DeadlineChanged
- case "完了" => Status.Completed
- }
- }
- }
-
- var supplement : String = {
- val pattern = """^(?:補足:)?(.*)$""".r
- cols(6) match {
- case pattern(title) => title
- }
+ implicit val TaskFromRecord = new FromRecord[Task] {
+ def parseRecord(r: Record): Parser[Task] =
+ for {
+ date <- r.lookup[Calendar ]('報告日)
+ ticketID <- r.lookup[Option[Int] ]('チケットID, "")
+ title <- r.lookup[String ]('作業名)
+ expectedCompletionDate <- r.lookup[Calendar ]('作業完了予定年月日)
+ deadline <- r.lookup[Option[Calendar]]('タスク期限, "")
+ status <- r.lookup[Status ]('状態)
+ description <- r.lookup[Option[String] ]('説明, "")
+ }
+ yield Task(date, ticketID, title, expectedCompletionDate,
+ deadline, status, description)