X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=src%2Fmain%2Fscala%2Fjp%2Fymir%2FtaskReporter%2Fcore%2FTask.scala;h=2f05f41452c3f0ac0c96013466cb14f23ae728da;hb=HEAD;hp=71526941fd34099dc8785f03afe331ba8f5bdeae;hpb=c3c60f005928ab2660f79643af25f8380d5ad4db;p=task-reporter.git diff --git a/src/main/scala/jp/ymir/taskReporter/core/Task.scala b/src/main/scala/jp/ymir/taskReporter/core/Task.scala index 7152694..2f05f41 100644 --- a/src/main/scala/jp/ymir/taskReporter/core/Task.scala +++ b/src/main/scala/jp/ymir/taskReporter/core/Task.scala @@ -19,12 +19,30 @@ case class Task( object Task { import TSV._ + def endOfCurrentHalf: Calendar = { + val cal = new GregorianCalendar() + cal.set(Calendar.MONTH, ((cal.get(Calendar.MONTH) + 1 + 5) / 6) * 6 - 1) + cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)) + return cal + } + + def apply(): Task = Task( + date = new GregorianCalendar(), + ticketID = None, + title = "", + expectedCompletionDate = endOfCurrentHalf, + deadline = None, + status = Status.DoingFine, + description = None + ) + sealed abstract class Status object Status { - case object DoingFine extends Status { override def toString() = "順調" } - case object Lagging extends Status { override def toString() = "遅延" } - case object DeadlineChanged extends Status { override def toString() = "期限変更" } - case object Completed extends Status { override def toString() = "完了" } + case object DoingFine extends Status { override def toString() = "順調"} + case object Lagging extends Status { override def toString() = "遅延"} + case object Completed extends Status { override def toString() = "完了"} + + def all: Seq[Status] = Seq(DoingFine, Lagging, Completed) } implicit val CalendarFromField = new FromField[Calendar] { @@ -40,10 +58,9 @@ object Task { implicit val StatusFromField = new FromField[Status] { def parseField(f: Field): Parser[Status] = f.value match { - case "順調" => (Status.DoingFine: Status).point[Parser] - case "遅延" => (Status.Lagging: Status).point[Parser] - case "期限変更" => (Status.DeadlineChanged: Status).point[Parser] - case "完了" => (Status.Completed: Status).point[Parser] + case "順調" => (Status.DoingFine: Status).point[Parser] + case "遅延" => (Status.Lagging: Status).point[Parser] + case "完了" => (Status.Completed: Status).point[Parser] case _ => ("invalid status: " + f).raiseError[Status] } @@ -53,12 +70,12 @@ object Task { def parseRecord(r: Record): Parser[Task] = for { date <- r.lookup[Calendar ]('報告日) - ticketID <- r.lookup[Option[Int] ]('チケットID) + ticketID <- r.lookup[Option[Int] ]('チケットID, "") title <- r.lookup[String ]('作業名) expectedCompletionDate <- r.lookup[Calendar ]('作業完了予定年月日) - deadline <- r.lookup[Option[Calendar]]('タスク期限) + deadline <- r.lookup[Option[Calendar]]('タスク期限, "") status <- r.lookup[Status ]('状態) - description <- r.lookup[Option[String] ]('説明).handleError(_ => None.point[Parser]) + description <- r.lookup[Option[String] ]('説明, "") } yield Task(date, ticketID, title, expectedCompletionDate, deadline, status, description)