X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=task-reporter.git;a=blobdiff_plain;f=src%2Fmain%2Fscala%2Fjp%2Fymir%2FtaskReporter%2Fcore%2FTask.scala;fp=src%2Fmain%2Fscala%2Fjp%2Fymir%2FtaskReporter%2Fcore%2FTask.scala;h=ebc869385de41335797d1b6eabc34ee6f22d7c29;hp=0000000000000000000000000000000000000000;hb=8bb945088ae66f9687f1fd5aa72a1440aba54466;hpb=cac69ad60a6bf6df341e65e3309b7700e14741df diff --git a/src/main/scala/jp/ymir/taskReporter/core/Task.scala b/src/main/scala/jp/ymir/taskReporter/core/Task.scala new file mode 100644 index 0000000..ebc8693 --- /dev/null +++ b/src/main/scala/jp/ymir/taskReporter/core/Task.scala @@ -0,0 +1,48 @@ +package jp.ymir.taskReporter.core +import java.util.Calendar +import java.util.GregorianCalendar +import scala.util.matching.Regex + +class Task(tsvLine: String) { + sealed abstract class Status + object Status { + case object NoProgress extends Status + case object DoingFine extends Status + case object Lagging extends Status + case object WillDelay extends Status + case object DeadlinePostponed extends Status + case object Completed extends Status + } + + class InvalidNumberOfColumnsException private(e: RuntimeException) extends RuntimeException(e) { + def this(msg: String) = this(new RuntimeException(msg)) + def this(msg: String, cause: Throwable) = this(new RuntimeException(msg, cause)) + } + + private val cols = tsvLine.split("\\t") + if (cols.length != 7) { + throw new InvalidNumberOfColumnsException(tsvLine) + } + + val date : Calendar = { + val pattern = """^(?:報告日:)?(\d{4})/(\d{2})/(\d{2})$""".r + cols(0) match { + case pattern(year, month, day) => + new GregorianCalendar(year.toInt, month.toInt, day.toInt) + } + } + + val ticketID : Int = { + val pattern = """^(?:チケットID:)?(\d+)$""".r + cols(1) match { + case pattern(id) => id.toInt + } + } + + val title : String = { + val pattern = """^(?:作業名:)?(.*)$""".r + cols(1) match { + case pattern(title) => title + } + } +}