Rename UserEvent to IMEvent
authorChristos KK Loverdos <loverdos@gmail.com>
Thu, 19 Apr 2012 09:06:43 +0000 (12:06 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Thu, 19 Apr 2012 09:06:43 +0000 (12:06 +0300)
14 files changed:
src/main/scala/gr/grnet/aquarium/Configurator.scala
src/main/scala/gr/grnet/aquarium/actor/message/service/dispatcher/DispatcherMessage.scala
src/main/scala/gr/grnet/aquarium/actor/service/user/UserActor.scala
src/main/scala/gr/grnet/aquarium/actor/service/user/UserActorManager.scala
src/main/scala/gr/grnet/aquarium/events/IMEvent.scala [moved from src/main/scala/gr/grnet/aquarium/events/UserEvent.scala with 82% similarity]
src/main/scala/gr/grnet/aquarium/service/IMEventProcessorService.scala [moved from src/main/scala/gr/grnet/aquarium/service/UserEventProcessorService.scala with 85% similarity]
src/main/scala/gr/grnet/aquarium/store/IMEventStore.scala [moved from src/main/scala/gr/grnet/aquarium/store/UserEventStore.scala with 89% similarity]
src/main/scala/gr/grnet/aquarium/store/LocalFSEventStore.scala
src/main/scala/gr/grnet/aquarium/store/StoreProvider.scala
src/main/scala/gr/grnet/aquarium/store/memory/MemStore.scala
src/main/scala/gr/grnet/aquarium/store/mongodb/MongoDBStore.scala
src/main/scala/gr/grnet/aquarium/user/UserState.scala
src/main/scala/gr/grnet/aquarium/util/ContextualLogger.scala
src/main/scala/gr/grnet/aquarium/util/RandomEventGenerator.scala

index 5138c89..3d5416e 100644 (file)
@@ -42,7 +42,7 @@ import com.ckkloverdos.props.Props
 import com.ckkloverdos.convert.Converters.{DefaultConverters => TheDefaultConverters}
 
 import gr.grnet.aquarium.actor.provider.ActorProvider
-import gr.grnet.aquarium.service.{UserEventProcessorService, ResourceEventProcessorService}
+import gr.grnet.aquarium.service.{IMEventProcessorService, ResourceEventProcessorService}
 import gr.grnet.aquarium.util.{Lifecycle, Loggable}
 import gr.grnet.aquarium.store._
 
@@ -125,10 +125,10 @@ class Configurator(val props: Props) extends Loggable {
     }
   }
 
-  private[this] lazy val _userEventStoreM: Maybe[UserEventStore] = {
+  private[this] lazy val _userEventStoreM: Maybe[IMEventStore] = {
     props.get(Keys.user_event_store_class) map { className ⇒
-      val instance = newInstance[UserEventStore](className)
-      logger.info("Overriding UserEventStore provisioning. Implementation given by: %s".format(instance.getClass))
+      val instance = newInstance[IMEventStore](className)
+      logger.info("Overriding IMEventStore provisioning. Implementation given by: %s".format(instance.getClass))
       instance
     }
   }
@@ -194,7 +194,7 @@ class Configurator(val props: Props) extends Loggable {
 
   private[this] lazy val _resEventProc: ResourceEventProcessorService = new ResourceEventProcessorService
 
-  private[this] lazy val _imEventProc: UserEventProcessorService = new UserEventProcessorService
+  private[this] lazy val _imEventProc = new IMEventProcessorService
 
   def get(key: String, default: String = ""): String = props.getOr(key, default)
 
@@ -541,8 +541,8 @@ object Configurator {
     final val events_store_folder = "events.store.folder"
 
     /**
-     * If set to `true`, then an IM event that cannot be parsed to [[gr.grnet.aquarium.logic.events.UserEvent]] is
-     * saved to the [[gr.grnet.aquarium.store.UserEventStore]].
+     * If set to `true`, then an IM event that cannot be parsed to [[gr.grnet.aquarium.events.IMEvent]] is
+     * saved to the [[gr.grnet.aquarium.store.IMEventStore]].
      */
     final val save_unparsed_event_im = "save.unparsed.event.im"
 
index 28ad4b9..e99240e 100644 (file)
@@ -39,7 +39,7 @@ package dispatcher
 
 import gr.grnet.aquarium.user.UserState
 import gr.grnet.aquarium.util.json.JsonSupport
-import gr.grnet.aquarium.events.{UserEvent, ResourceEvent}
+import gr.grnet.aquarium.events.{IMEvent, ResourceEvent}
 import gr.grnet.aquarium.converter.{PrettyJsonTextFormat, StdConverters}
 
 
@@ -90,14 +90,14 @@ case class UserResponseGetState(userId: String, state: UserState) extends Dispat
  *
  * Note that the prefix `Process` means that no reply is created or needed.
  */
-case class ProcessResourceEvent(rce: ResourceEvent) extends DispatcherMessage
+case class ProcessResourceEvent(rcEvent: ResourceEvent) extends DispatcherMessage
 
 /**
  * Dispatcher message that triggers the user event processing pipeline.
  *
  * Note that the prefix `Process` means that no reply is created or needed.
  */
-case class ProcessUserEvent(ue: UserEvent) extends DispatcherMessage
+case class ProcessUserEvent(imEvent: IMEvent) extends DispatcherMessage
 
 
 case class AdminRequestPingAll() extends DispatcherMessage
index eb97844..0ec0667 100644 (file)
@@ -51,7 +51,7 @@ import gr.grnet.aquarium.messaging.AkkaAMQP
 import gr.grnet.aquarium.actor.message.config.user.UserActorInitWithUserId
 import gr.grnet.aquarium.actor.message.service.dispatcher._
 import message.config.{ActorProviderConfigured, AquariumPropertiesLoaded}
-import gr.grnet.aquarium.events.{WalletEntry, UserEvent}
+import gr.grnet.aquarium.events.{WalletEntry, IMEvent}
 
 
 /**
@@ -86,9 +86,9 @@ with Loggable {
 
     //Rebuild state from user events
     val usersDB = _configurator.storeProvider.userEventStore
-    val userEvents = usersDB.findUserEventsByUserId(_userId)
+    val userEvents = usersDB.findIMEventsByUserId(_userId)
     val numUserEvents = userEvents.size
-    _userState = replayUserEvents(_userState, userEvents, from, to)
+    _userState = replayIMEvents(_userState, userEvents, from, to)
 
     //Rebuild state from resource events
     val eventsDB = _configurator.storeProvider.resourceEventStore
@@ -119,7 +119,7 @@ with Loggable {
   /**
    * Replay user events on the provided user state
    */
-  def replayUserEvents(initState: UserState, events: List[UserEvent],
+  def replayIMEvents(initState: UserState, events: List[IMEvent],
                        from: Long, to: Long): UserState = {
     initState
   }
@@ -156,7 +156,7 @@ with Loggable {
   }
 
   def onProcessResourceEvent(event: ProcessResourceEvent): Unit = {
-    val resourceEvent = event.rce
+    val resourceEvent = event.rcEvent
     if(resourceEvent.userID != this._userId) {
       ERROR("Received %s but my userId = %s".format(event, this._userId))
     } else {
@@ -166,7 +166,7 @@ with Loggable {
     }
   }
 
-  private[this] def processCreateUser(event: UserEvent): Unit = {
+  private[this] def processCreateUser(event: IMEvent): Unit = {
     val userId = event.userID
     DEBUG("Creating user from state %s", event)
     val usersDB = _configurator.storeProvider.userStateStore
@@ -188,7 +188,7 @@ with Loggable {
     }
   }
 
-  private[this] def processModifyUser(event: UserEvent): Unit = {
+  private[this] def processModifyUser(event: IMEvent): Unit = {
     val now = TimeHelpers.nowMillis
     val newActive = ActiveStateSnapshot(event.isStateActive, now)
 
@@ -198,7 +198,7 @@ with Loggable {
   }
 
   def onProcessUserEvent(event: ProcessUserEvent): Unit = {
-    val userEvent = event.ue
+    val userEvent = event.imEvent
     if(userEvent.userID != this._userId) {
       ERROR("Received %s but my userId = %s".format(userEvent, this._userId))
     } else {
index ea9c057..a425359 100644 (file)
@@ -107,11 +107,11 @@ class UserActorManager extends ReflectiveAquariumActor {
   }
 
   def onProcessResourceEvent(m: ProcessResourceEvent): Unit = {
-    _forwardToUserActor(m.rce.userID, m)
+    _forwardToUserActor(m.rcEvent.userID, m)
   }
 
   def onProcessUserEvent(m: ProcessUserEvent): Unit = {
-    _forwardToUserActor(m.ue.userID, m)
+    _forwardToUserActor(m.imEvent.userID, m)
   }
 
   override def postStop = {
@@ -42,11 +42,11 @@ import com.ckkloverdos.maybe.{Failed, NoVal, Just}
 import converter.{StdConverters, JsonTextFormat}
 
 /**
- * Represents an incoming user event.
+ * Represents an event from the `Identity Management` (IM) external system.
  *
  * @author Georgios Gousios <gousiosg@gmail.com>
  */
-case class  UserEvent(
+case class  IMEvent(
     override val id: String,           // The id at the sender side
     override val occurredMillis: Long, // When it occurred at the sender side
     override val receivedMillis: Long, // When it was received by Aquarium
@@ -56,11 +56,11 @@ case class  UserEvent(
     role: String,
     eventVersion: String,
     eventType: String,
-    details: UserEvent.Details)
+    details: IMEvent.Details)
   extends AquariumEvent(id, occurredMillis, receivedMillis) {
 
-//  assert(eventType.equalsIgnoreCase(UserEvent.EventTypes.create) ||
-//    eventType.equalsIgnoreCase(UserEvent.EventTypes.modify))
+//  assert(eventType.equalsIgnoreCase(IMEvent.EventTypes.create) ||
+//    eventType.equalsIgnoreCase(IMEvent.EventTypes.modify))
 
 //  assert(!role.isEmpty)
 
@@ -81,12 +81,12 @@ case class  UserEvent(
 
     MasterConfigurator.userStateStore.findUserStateByUserId(userID) match {
       case Just(x) =>
-        if (eventType.equalsIgnoreCase(UserEvent.EventTypes.create)){
+        if (eventType.equalsIgnoreCase(IMEvent.EventTypes.create)){
           logger.warn("User to create exists: IMEvent".format(this.toJson));
           return false
         }
       case NoVal =>
-        if (!eventType.equalsIgnoreCase(UserEvent.EventTypes.modify)){
+        if (!eventType.equalsIgnoreCase(IMEvent.EventTypes.modify)){
           logger.warn("Inexistent user to modify. IMEvent:".format(this.toJson))
           return false
         }
@@ -99,16 +99,16 @@ case class  UserEvent(
 
   def copyWithReceivedMillis(millis: Long) = copy(receivedMillis = millis)
 
-  def isCreateUser = eventType.equalsIgnoreCase(UserEvent.EventTypes.create)
+  def isCreateUser = eventType.equalsIgnoreCase(IMEvent.EventTypes.create)
 
-  def isModifyUser = eventType.equalsIgnoreCase(UserEvent.EventTypes.modify)
+  def isModifyUser = eventType.equalsIgnoreCase(IMEvent.EventTypes.modify)
 
   def isStateActive = isActive
 
   def isStateSuspended = !isActive
 }
 
-object UserEvent {
+object IMEvent {
 
   object EventTypes {
     val create = "create"
@@ -117,12 +117,12 @@ object UserEvent {
 
   type Details = Map[String, String]
 
-  def fromJson(json: String): UserEvent = {
-    StdConverters.StdConverters.convertEx[UserEvent](JsonTextFormat(json))
+  def fromJson(json: String): IMEvent = {
+    StdConverters.StdConverters.convertEx[IMEvent](JsonTextFormat(json))
   }
 
-  def fromBytes(bytes: Array[Byte]): UserEvent = {
-    StdConverters.StdConverters.convertEx[UserEvent](JsonTextFormat(makeString(bytes)))
+  def fromBytes(bytes: Array[Byte]): IMEvent = {
+    StdConverters.StdConverters.convertEx[IMEvent](JsonTextFormat(makeString(bytes)))
   }
 
   object JsonNames {
 
 package gr.grnet.aquarium.service
 
+import com.ckkloverdos.maybe.{Maybe, NoVal, Failed, Just}
+
 import gr.grnet.aquarium.actor.DispatcherRole
 import gr.grnet.aquarium.Configurator.Keys
 import gr.grnet.aquarium.store.LocalFSEventStore
 import gr.grnet.aquarium.util.makeString
-import com.ckkloverdos.maybe.{Maybe, NoVal, Failed, Just}
 import gr.grnet.aquarium.Configurator
 import gr.grnet.aquarium.actor.message.service.dispatcher.ProcessUserEvent
-import gr.grnet.aquarium.events.UserEvent
+import gr.grnet.aquarium.events.IMEvent
 
 /**
  * An event processor service for user events coming from the IM system
  *
  * @author Georgios Gousios <gousiosg@gmail.com>
  */
-class UserEventProcessorService extends EventProcessorService[UserEvent] {
+class IMEventProcessorService extends EventProcessorService[IMEvent] {
 
-  override def decode(data: Array[Byte]) = UserEvent.fromBytes(data)
+  override def decode(data: Array[Byte]) = IMEvent.fromBytes(data)
 
-  override def forward(event: UserEvent) = {
+  override def forward(event: IMEvent) = {
     if(event ne null) {
       _configurator.actorProvider.actorForRole(DispatcherRole) ! ProcessUserEvent(event)
     }
   }
 
-  override def exists(event: UserEvent) =
-    _configurator.userEventStore.findUserEventById(event.id).isJust
+  override def exists(event: IMEvent) =
+    _configurator.userEventStore.findIMEventById(event.id).isJust
 
-  override def persist(event: UserEvent, initialPayload: Array[Byte]) = {
+  override def persist(event: IMEvent, initialPayload: Array[Byte]) = {
     Maybe {
-      LocalFSEventStore.storeUserEvent(_configurator, event, initialPayload)
+      LocalFSEventStore.storeIMEvent(_configurator, event, initialPayload)
     } match {
       case Just(_) ⇒
-        _configurator.userEventStore.storeUserEvent(event) match {
+        _configurator.userEventStore.storeIMEvent(event) match {
           case Just(x) => true
           case x: Failed =>
             logger.error("Could not save user event: %s".format(event))
@@ -87,7 +88,7 @@ class UserEventProcessorService extends EventProcessorService[UserEvent] {
   protected def persistUnparsed(initialPayload: Array[Byte], exception: Throwable): Unit = {
     val json = makeString(initialPayload)
 
-    LocalFSEventStore.storeUnparsedUserEvent(_configurator, initialPayload, exception)
+    LocalFSEventStore.storeUnparsedIMEvent(_configurator, initialPayload, exception)
 
     _configurator.props.getBoolean(Configurator.Keys.save_unparsed_event_im) match {
       case Just(true) ⇒
 package gr.grnet.aquarium.store
 
 import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.events.UserEvent
+import gr.grnet.aquarium.events.IMEvent
 
 /**
  * Store for external user events
  *
  * @author Georgios Gousios <gousiosg@gmail.com>
  */
-trait UserEventStore {
+trait IMEventStore {
   def storeUnparsed(json: String): Maybe[RecordID]
 
   /**
    * Store an event
    */
-  def storeUserEvent(event: UserEvent): Maybe[RecordID]
+  def storeIMEvent(event: IMEvent): Maybe[RecordID]
 
   /**
    * Find a user event by event ID
    */
-  def findUserEventById(id: String): Maybe[UserEvent]
+  def findIMEventById(id: String): Maybe[IMEvent]
 
   /**
    * Find all user events by user ID
    */
-  def findUserEventsByUserId(userId: String): List[UserEvent]
+  def findIMEventsByUserId(userId: String): List[IMEvent]
 }
\ No newline at end of file
index 1d9ad66..607efe8 100644 (file)
@@ -40,13 +40,11 @@ import java.io.{FileOutputStream, File}
 import gr.grnet.aquarium.util.{Loggable, stringOfStackTrace}
 import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
 import gr.grnet.aquarium.simulation.uid.{EAIOUUIDGenerator, UIDGenerator}
-import gr.grnet.aquarium.events.{UserEvent, ResourceEvent}
+import gr.grnet.aquarium.events.{IMEvent, ResourceEvent}
 
 /**
  * This is used whenever the property `events.store.folder` is setup in aquarium configuration.
  *
- * The public methods guarantee they will not propagate any failure.
- *
  * @author Christos KK Loverdos <loverdos@gmail.com>
  */
 
@@ -70,13 +68,13 @@ object LocalFSEventStore extends Loggable {
     logger.debug("Wrote to file {}", file.getCanonicalPath)
   }
 
-  private[this] def resourceEventsFolder(root: File): File = {
+  private[this] def createResourceEventsFolder(root: File): File = {
     val folder = new File(root, "rc")
     folder.mkdirs()
     folder
   }
 
-  private[this] def userEventsFolder(root: File): File = {
+  private[this] def createIMEventsFolder(root: File): File = {
     val folder = new File(root, "im")
     folder.mkdirs()
     folder
@@ -111,7 +109,7 @@ object LocalFSEventStore extends Loggable {
       val uid = UIDGen.nextUID()
       val occurredMDC = new MutableDateCalc(TimeHelpers.nowMillis)
       val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
-      val rcEventsFolder = resourceEventsFolder(root)
+      val rcEventsFolder = createResourceEventsFolder(root)
       val trace = stringOfStackTrace(exception)
 
       writeJson("rc", rcEventsFolder, initialPayload, occurredString, uid, None, false, Some(trace))
@@ -126,7 +124,7 @@ object LocalFSEventStore extends Loggable {
 
       val occurredMDC = new MutableDateCalc(event.occurredMillis)
       val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
-      val rcEventsFolder = resourceEventsFolder(root)
+      val rcEventsFolder = createResourceEventsFolder(root)
 
       // Store parsed file
       writeJson(
@@ -145,26 +143,26 @@ object LocalFSEventStore extends Loggable {
     }
   }
 
-  def storeUnparsedUserEvent(mc: Configurator, initialPayload: Array[Byte], exception: Throwable): Unit = {
+  def storeUnparsedIMEvent(mc: Configurator, initialPayload: Array[Byte], exception: Throwable): Unit = {
     for(root <- mc.eventsStoreFolder) {
       val uid = UIDGen.nextUID()
       val occurredMDC = new MutableDateCalc(TimeHelpers.nowMillis)
       val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
-      val rcEventsFolder = userEventsFolder(root)
+      val imEventsFolder = createIMEventsFolder(root)
       val trace = stringOfStackTrace(exception)
 
-      writeJson("im", rcEventsFolder, initialPayload, occurredString, uid, None, false, Some(trace))
+      writeJson("im", imEventsFolder, initialPayload, occurredString, uid, None, false, Some(trace))
     }
   }
 
-  def storeUserEvent(mc: Configurator, event: UserEvent, initialPayload: Array[Byte]): Unit = {
-    require(event ne null, "User event must be not null")
+  def storeIMEvent(mc: Configurator, event: IMEvent, initialPayload: Array[Byte]): Unit = {
+    require(event ne null, "IM event must be not null")
     for(root <- mc.eventsStoreFolder) {
       val uid = UIDGen.nextUID()
 
       val occurredMDC = new MutableDateCalc(event.occurredMillis)
       val occurredString = occurredMDC.toFilename_YYYYMMDDHHMMSSSSS
-      val imEventsFolder = userEventsFolder(root)
+      val imEventsFolder = createIMEventsFolder(root)
 
       writeJson(
         "im",
index 4f7396f..433346f 100644 (file)
@@ -44,6 +44,6 @@ trait StoreProvider {
   def userStateStore: UserStateStore
   def resourceEventStore: ResourceEventStore
   def walletEntryStore: WalletEntryStore
-  def userEventStore: UserEventStore
+  def userEventStore: IMEventStore
   def policyStore: PolicyStore
 }
\ No newline at end of file
index 503575a..0906f75 100644 (file)
@@ -45,7 +45,7 @@ import java.util.concurrent.ConcurrentHashMap
 import gr.grnet.aquarium.user.UserState
 import gr.grnet.aquarium.simulation.uid.ConcurrentVMLocalUIDGenerator
 import gr.grnet.aquarium.{AquariumException, Configurable}
-import gr.grnet.aquarium.events.{UserEvent, WalletEntry, ResourceEvent, PolicyEntry}
+import gr.grnet.aquarium.events.{IMEvent, WalletEntry, ResourceEvent, PolicyEntry}
 
 /**
  * An implementation of various stores that persists data in memory.
@@ -58,7 +58,7 @@ import gr.grnet.aquarium.events.{UserEvent, WalletEntry, ResourceEvent, PolicyEn
 
 class MemStore extends UserStateStore
   with Configurable with PolicyStore
-  with ResourceEventStore with UserEventStore
+  with ResourceEventStore with IMEventStore
   with WalletEntryStore
   with StoreProvider {
 
@@ -69,7 +69,7 @@ class MemStore extends UserStateStore
   private[this] var _resourceEvents = List[ResourceEvent]()
 
   private[this] val walletEntriesById: ConcurrentMap[String, WalletEntry] = new ConcurrentHashMap[String, WalletEntry]()
-  private val userEventById: ConcurrentMap[String, UserEvent] = new ConcurrentHashMap[String, UserEvent]()
+  private[this] val imEventById: ConcurrentMap[String, IMEvent] = new ConcurrentHashMap[String, IMEvent]()
 
   def configure(props: Props) = {
   }
@@ -78,7 +78,7 @@ class MemStore extends UserStateStore
     val map = Map(
       "UserState"     -> _userStates.size,
       "ResourceEvent" -> _resourceEvents.size,
-      "UserEvent"     -> userEventById.size,
+      "IMEvent"     -> imEventById.size,
       "PolicyEntry"   -> _policyEntries.size,
       "WalletEntry"   -> walletEntriesById.size
     )
@@ -265,15 +265,15 @@ class MemStore extends UserStateStore
   }
   //- ResourceEventStore
 
-  //+ UserEventStore
+  //+ IMEventStore
   def storeUnparsed(json: String) = throw new AquariumException("Not implemented")
 
-  def storeUserEvent(event: UserEvent) = {userEventById += (event.id -> event); Just(RecordID(event.id))}
+  def storeIMEvent(event: IMEvent) = {imEventById += (event.id -> event); Just(RecordID(event.id))}
 
-  def findUserEventById(id: String) = Maybe{userEventById.getOrElse(id, null)}
+  def findIMEventById(id: String) = Maybe{imEventById.getOrElse(id, null)}
 
-  def findUserEventsByUserId(userId: String) = userEventById.valuesIterator.filter{v => v.userID == userId}.toList
-  //- UserEventStore
+  def findIMEventsByUserId(userId: String) = imEventById.valuesIterator.filter{v => v.userID == userId}.toList
+  //- IMEventStore
 
   def loadPolicyEntriesAfter(after: Long) =
     _policyEntries.filter(p => p.validFrom > after)
index 1d0604a..c6790aa 100644 (file)
@@ -43,7 +43,7 @@ import gr.grnet.aquarium.util.json.JsonSupport
 import collection.mutable.ListBuffer
 import gr.grnet.aquarium.store._
 import gr.grnet.aquarium.events.ResourceEvent.{JsonNames => ResourceJsonNames}
-import gr.grnet.aquarium.events.UserEvent.{JsonNames => UserEventJsonNames}
+import gr.grnet.aquarium.events.IMEvent.{JsonNames => UserEventJsonNames}
 import gr.grnet.aquarium.events.WalletEntry.{JsonNames => WalletJsonNames}
 import gr.grnet.aquarium.events.PolicyEntry.{JsonNames => PolicyJsonNames}
 import java.util.Date
@@ -67,7 +67,7 @@ class MongoDBStore(
   extends ResourceEventStore
   with UserStateStore
   with WalletEntryStore
-  with UserEventStore
+  with IMEventStore
   with PolicyStore
   with Loggable {
 
@@ -305,24 +305,24 @@ class MongoDBStore(
   }
   //-WalletEntryStore
 
-  //+UserEventStore
+  //+IMEventStore
   def storeUnparsed(json: String): Maybe[RecordID] = {
     MongoDBStore.storeJustJson(json, unparsedUserEvents)
   }
 
-  def storeUserEvent(event: UserEvent): Maybe[RecordID] =
-    MongoDBStore.storeAny[UserEvent](event, userEvents, UserEventJsonNames.userID,
+  def storeIMEvent(event: IMEvent): Maybe[RecordID] =
+    MongoDBStore.storeAny[IMEvent](event, userEvents, UserEventJsonNames.userID,
       _.userID, MongoDBStore.jsonSupportToDBObject)
 
 
-  def findUserEventById(id: String): Maybe[UserEvent] =
-    MongoDBStore.findById[UserEvent](id, userEvents, MongoDBStore.dbObjectToUserEvent)
+  def findIMEventById(id: String): Maybe[IMEvent] =
+    MongoDBStore.findById[IMEvent](id, userEvents, MongoDBStore.dbObjectToUserEvent)
 
-  def findUserEventsByUserId(userId: String): List[UserEvent] = {
+  def findIMEventsByUserId(userId: String): List[IMEvent] = {
     val query = new BasicDBObject(UserEventJsonNames.userID, userId)
     MongoDBStore.runQuery(query, userEvents)(MongoDBStore.dbObjectToUserEvent)(Some(_sortByTimestampAsc))
   }
-  //-UserEventStore
+  //-IMEventStore
 
   //+PolicyStore
   def loadPolicyEntriesAfter(after: Long): List[PolicyEntry] = {
@@ -367,14 +367,14 @@ object MongoDBStore {
   final val USER_STATES_COLLECTION = "userstates"
 
   /**
-   * Collection holding [[gr.grnet.aquarium.events.UserEvent]]s.
+   * Collection holding [[gr.grnet.aquarium.events.IMEvent]]s.
    *
    * User events are coming from the IM module (external).
    */
   final val USER_EVENTS_COLLECTION = "userevents"
 
   /**
-   * Collection holding [[gr.grnet.aquarium.events.UserEvent]]s that could not be parsed to normal objects.
+   * Collection holding [[gr.grnet.aquarium.events.IMEvent]]s that could not be parsed to normal objects.
    *
    * We of course assume at least a valid JSON representation.
    *
@@ -414,8 +414,8 @@ object MongoDBStore {
     WalletEntry.fromJson(JSON.serialize(dbObj))
   }
 
-  def dbObjectToUserEvent(dbObj: DBObject): UserEvent = {
-    UserEvent.fromJson(JSON.serialize(dbObj))
+  def dbObjectToUserEvent(dbObj: DBObject): IMEvent = {
+    IMEvent.fromJson(JSON.serialize(dbObj))
   }
 
   def dbObjectToPolicyEntry(dbObj: DBObject): PolicyEntry = {
index 444c354..a2ad470 100644 (file)
@@ -39,7 +39,7 @@ import gr.grnet.aquarium.util.json.JsonSupport
 import gr.grnet.aquarium.logic.accounting.dsl.DSLAgreement
 import com.ckkloverdos.maybe.{Failed, Maybe}
 import gr.grnet.aquarium.util.date.MutableDateCalc
-import gr.grnet.aquarium.events.{UserEvent, NewWalletEntry, WalletEntry}
+import gr.grnet.aquarium.events.{IMEvent, NewWalletEntry, WalletEntry}
 import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
 
 
@@ -325,7 +325,7 @@ object UserStateChangeReasonCodes {
   final val NoSpecificChangeCode   = 2
   final val MonthlyBillingCode     = 3
   final val RealtimeBillingCode    = 4
-  final val UserEventArrivalCode   = 5
+  final val IMEventArrivalCode   = 5
 }
 
 case object InitialUserStateCalculation extends UserStateChangeReason {
@@ -393,7 +393,7 @@ case class RealtimeBillingCalculation(forWhenMillis: Long) extends UserStateChan
   def code = UserStateChangeReasonCodes.RealtimeBillingCode
 }
 
-case class UserEventArrival(userEvent: UserEvent) extends UserStateChangeReason {
+case class IMEventArrival(imEvent: IMEvent) extends UserStateChangeReason {
   def shouldStoreUserState = true
 
   def shouldStoreCalculatedWalletEntries = false
@@ -402,5 +402,5 @@ case class UserEventArrival(userEvent: UserEvent) extends UserStateChangeReason
 
   def calculateCreditsForImplicitlyTerminated = false
 
-  def code = UserStateChangeReasonCodes.UserEventArrivalCode
+  def code = UserStateChangeReasonCodes.IMEventArrivalCode
 }
index 6d3e321..0d1da6b 100644 (file)
@@ -60,19 +60,19 @@ import com.ckkloverdos.maybe.{Failed, Just, Maybe}
  [DEBUG] 2012-02-13 12:54:53,668 main -     findUserStateAtEndOfBillingMonth(2011-10)           END
  [DEBUG] 2012-02-13 12:54:53,672 main -                 doFullMonthlyBilling(2011-11)           previousResourceEvents = LatestResourceEventsWorker(Map())
  [DEBUG] 2012-02-13 12:54:53,673 main -                 doFullMonthlyBilling(2011-11)           theImplicitOFFs = ImplicitlyIssuedResourceEventsWorker(Map())
- [DEBUG] 2012-02-13 12:54:53,680 main -                 doFullMonthlyBilling(2011-11)           resourceEventStore = MemStore(Map(UserState -> 0, WalletEntry -> 0, ResourceEvent -> 5, PolicyEntry -> 0, UserEvent -> 0))
+ [DEBUG] 2012-02-13 12:54:53,680 main -                 doFullMonthlyBilling(2011-11)           resourceEventStore = MemStore(Map(UserState -> 0, WalletEntry -> 0, ResourceEvent -> 5, PolicyEntry -> 0, IMEvent -> 0))
  [DEBUG] 2012-02-13 12:54:53,681 main -                 doFullMonthlyBilling(2011-11)           Found 0 resource events, starting processing...
  [DEBUG] 2012-02-13 12:54:53,683 main -                 doFullMonthlyBilling(2011-11)         END
  [DEBUG] 2012-02-13 12:54:53,683 main -     findUserStateAtEndOfBillingMonth(2011-11)       END
  [DEBUG] 2012-02-13 12:54:53,684 main -                 doFullMonthlyBilling(2011-12)       previousResourceEvents = LatestResourceEventsWorker(Map())
  [DEBUG] 2012-02-13 12:54:53,684 main -                 doFullMonthlyBilling(2011-12)       theImplicitOFFs = ImplicitlyIssuedResourceEventsWorker(Map())
- [DEBUG] 2012-02-13 12:54:53,685 main -                 doFullMonthlyBilling(2011-12)       resourceEventStore = MemStore(Map(UserState -> 0, WalletEntry -> 0, ResourceEvent -> 5, PolicyEntry -> 0, UserEvent -> 0))
+ [DEBUG] 2012-02-13 12:54:53,685 main -                 doFullMonthlyBilling(2011-12)       resourceEventStore = MemStore(Map(UserState -> 0, WalletEntry -> 0, ResourceEvent -> 5, PolicyEntry -> 0, IMEvent -> 0))
  [DEBUG] 2012-02-13 12:54:53,686 main -                 doFullMonthlyBilling(2011-12)       Found 0 resource events, starting processing...
  [DEBUG] 2012-02-13 12:54:53,686 main -                 doFullMonthlyBilling(2011-12)     END
  [DEBUG] 2012-02-13 12:54:53,687 main -     findUserStateAtEndOfBillingMonth(2011-12)   END
  [DEBUG] 2012-02-13 12:54:53,687 main -                 doFullMonthlyBilling(2012-01)   previousResourceEvents = LatestResourceEventsWorker(Map())
  [DEBUG] 2012-02-13 12:54:53,688 main -                 doFullMonthlyBilling(2012-01)   theImplicitOFFs = ImplicitlyIssuedResourceEventsWorker(Map())
- [DEBUG] 2012-02-13 12:54:53,688 main -                 doFullMonthlyBilling(2012-01)   resourceEventStore = MemStore(Map(UserState -> 0, WalletEntry -> 0, ResourceEvent -> 5, PolicyEntry -> 0, UserEvent -> 0))
+ [DEBUG] 2012-02-13 12:54:53,688 main -                 doFullMonthlyBilling(2012-01)   resourceEventStore = MemStore(Map(UserState -> 0, WalletEntry -> 0, ResourceEvent -> 5, PolicyEntry -> 0, IMEvent -> 0))
  [DEBUG] 2012-02-13 12:54:53,689 main -                 doFullMonthlyBilling(2012-01)   Found 4 resource events, starting processing...
  [DEBUG] 2012-02-13 12:54:53,690 main -                 doFullMonthlyBilling(2012-01)     Processing EVENT(2, [2012-01-01 03:00:00.000], 99.0 [MB/Hr], diskspace::pithos/diskspace/DISK.1, Map(), Christos, pithos)
  [DEBUG] 2012-02-13 12:54:53,691 main -                 doFullMonthlyBilling(2012-01)       0 previousResourceEvents
index aeda19c..72c0ec2 100644 (file)
@@ -37,7 +37,7 @@ package gr.grnet.aquarium.util
 
 import akka.amqp._
 import util.Random
-import gr.grnet.aquarium.events.{UserEvent, ResourceEvent}
+import gr.grnet.aquarium.events.{IMEvent, ResourceEvent}
 import scopt.OptionParser
 import gr.grnet.aquarium.messaging.AkkaAMQP
 import java.lang.StringBuffer
@@ -65,10 +65,10 @@ trait RandomEventGenerator extends AkkaAMQP {
   /**
    * Generate a random resource event
    */
-  def nextUserEvent(): UserEvent = {
+  def nextUserEvent(): IMEvent = {
     val ts = tsFrom + (scala.math.random * ((tsTo - tsFrom) + 1)).asInstanceOf[Long]
 
-    UserEvent(
+    IMEvent(
       id = CryptoUtils.sha1(genRndAsciiString(35)),
       occurredMillis = ts.toLong,
       receivedMillis = ts.toLong,
@@ -104,7 +104,7 @@ trait RandomEventGenerator extends AkkaAMQP {
     userIds.filter(_ < num).foreach {
       i =>
         val ts = tsFrom + (scala.math.random * ((tsTo - tsFrom) + 1)).asInstanceOf[Long]
-        val user = UserEvent(
+        val user = IMEvent(
           id = CryptoUtils.sha1(genRndAsciiString(35)),
           occurredMillis = ts.toLong,
           receivedMillis = ts.toLong,