WIP: ResourceEvent-related refactorings
[aquarium] / src / main / scala / gr / grnet / aquarium / store / ResourceEventStore.scala
index 7d3401f..4eb6016 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011 GRNET S.A. All rights reserved.
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or
  * without modification, are permitted provided that the following
@@ -36,7 +36,8 @@
 package gr.grnet.aquarium.store
 
 import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.logic.events.ResourceEvent
+import gr.grnet.aquarium.AquariumException
+import gr.grnet.aquarium.event.resource.ResourceEventModel
 
 /**
  * An abstraction for Aquarium `ResourceEvent` stores.
@@ -45,13 +46,17 @@ import gr.grnet.aquarium.logic.events.ResourceEvent
  * @author Georgios Gousios <gousiosg@gmail.com>.
  */
 trait ResourceEventStore {
+  type ResourceEvent <: ResourceEventModel
+
+  def createResourceEventFromOther(event: ResourceEventModel): ResourceEvent
+
   def clearResourceEvents(): Unit = {
-    throw new Exception("Unsupported operation")
+    throw new AquariumException("Unsupported operation")
   }
 
-  def storeResourceEvent(event: ResourceEvent): Maybe[RecordID]
+  def insertResourceEvent(event: ResourceEventModel): ResourceEvent
 
-  def findResourceEventById(id: String): Maybe[ResourceEvent]
+  def findResourceEventById(id: String): Option[ResourceEvent]
 
   def findResourceEventsByUserId(userId: String)(sortWith: Option[(ResourceEvent, ResourceEvent) => Boolean]): List[ResourceEvent]
 
@@ -70,7 +75,7 @@ trait ResourceEventStore {
   /**
    * Count and return the number of "out of sync" events for a billing month.
    */
-  def countOutOfSyncEventsForBillingPeriod(userId: String, startMillis: Long, stopMillis: Long): Maybe[Long]
+  def countOutOfSyncEventsForBillingPeriod(userId: String, startMillis: Long, stopMillis: Long): Long
 
   /**
    * Finds all relevant resource events for the billing period.