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 } } }