* User agreement data that will be part of UserState.
* The provided list of agreements cannot have time gaps. This is checked at object creation type.
*
- * Note: This is copied from UserDataSnapshot.scala/AgreementSnapshot.
- * TODO: Review
- *
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
-case class AgreementsSnapshot(agreements: List[AgreementSnapshot]) {
+case class AgreementHistory(agreements: List[AgreementHistoryItem]) {
ensureNoGaps(agreements.sortWith((a,b) => if (b.validFrom > a.validFrom) true else false))
- def ensureNoGaps(agreements: List[AgreementSnapshot]): Unit = agreements match {
+ def ensureNoGaps(agreements: List[AgreementHistoryItem]): Unit = agreements match {
case ha :: (t @ (hb :: tail)) =>
assert(ha.validTo - hb.validFrom == 1);
ensureNoGaps(t)
}
}
}
+
+object AgreementHistory {
+ final val Empty = AgreementHistory(Nil)
+
+ def initial(agreement: String, validFrom: Long): AgreementHistory ={
+ AgreementHistory(AgreementHistoryItem(agreement, validFrom) :: Nil)
+ }
+}
*
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
-case class AgreementSnapshot(name: String, validFrom: Long, validTo: Long = Long.MaxValue) {
+case class AgreementHistoryItem(name: String, validFrom: Long, validTo: Long = Long.MaxValue) {
require(validTo > validFrom)
require(!name.isEmpty)
def timeslot = Timeslot(validFrom, validTo)
override def toString =
- "AgreementSnapshot(%s, %s, %s)".
+ "AgreementHistoryItem(%s, %s, %s)".
format(name, new MutableDateCalc(validFrom), new MutableDateCalc(validTo))
}