package gr.grnet.aquarium.actor.message.event
-import gr.grnet.aquarium.event.im.IMEventModel
import gr.grnet.aquarium.actor.message.{UserActorRequestMessage, ActorMessage}
+import gr.grnet.aquarium.event.model.im.IMEventModel
/**
* [[gr.grnet.aquarium.actor.service.router.RouterActor]] message
package gr.grnet.aquarium.actor.message.event
-import gr.grnet.aquarium.event.resource.ResourceEventModel
import gr.grnet.aquarium.actor.message.{UserActorRequestMessage, ActorMessage}
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* [[gr.grnet.aquarium.actor.service.router.RouterActor]] message
import gr.grnet.aquarium.util.shortClassNameOf
import message.config.{ActorProviderConfigured, AquariumPropertiesLoaded}
-import gr.grnet.aquarium.event.im.IMEventModel
import akka.config.Supervision.Temporary
import gr.grnet.aquarium.Configurator
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
import gr.grnet.aquarium.actor.message.{GetUserStateResponse, GetUserBalanceResponse, GetUserStateRequest, GetUserBalanceRequest}
import gr.grnet.aquarium.computation.data.IMStateSnapshot
import gr.grnet.aquarium.computation.UserState
+import gr.grnet.aquarium.event.model.im.IMEventModel
/**
*
package gr.grnet.aquarium.computation
-import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
-import gr.grnet.aquarium.event.{NewWalletEntry, WalletEntry}
import org.bson.types.ObjectId
+
+import gr.grnet.aquarium.AquariumInternalError
+import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
+import gr.grnet.aquarium.event.model.{WalletEntry, NewWalletEntry}
import gr.grnet.aquarium.util.json.JsonSupport
import gr.grnet.aquarium.logic.accounting.dsl.DSLAgreement
-import com.ckkloverdos.maybe.Maybe
import gr.grnet.aquarium.computation.reason.{NoSpecificChangeReason, UserStateChangeReason, InitialUserStateSetup, IMEventArrival}
-import gr.grnet.aquarium.AquariumInternalError
import gr.grnet.aquarium.computation.data.{AgreementSnapshot, ResourceInstanceSnapshot, OwnedResourcesSnapshot, AgreementsSnapshot, CreditSnapshot, LatestResourceEventsSnapshot, ImplicitlyIssuedResourceEventsSnapshot, IMStateSnapshot}
-import gr.grnet.aquarium.event.im.{StdIMEvent, IMEventModel}
+import gr.grnet.aquarium.event.model.im.{StdIMEvent, IMEventModel}
/**
* A comprehensive representation of the User's state.
package gr.grnet.aquarium.computation
import scala.collection.mutable
+import gr.grnet.aquarium.{AquariumInternalError, AquariumException}
import gr.grnet.aquarium.util.{ContextualLogger, Loggable}
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
-import gr.grnet.aquarium.logic.accounting.dsl.{DSLAgreement, DSLResourcesMap}
-import gr.grnet.aquarium.store.{StoreProvider, PolicyStore}
+import gr.grnet.aquarium.logic.accounting.dsl.DSLResourcesMap
import gr.grnet.aquarium.logic.accounting.Accounting
import gr.grnet.aquarium.logic.accounting.algorithm.CostPolicyAlgorithmCompiler
-import gr.grnet.aquarium.event.NewWalletEntry
-import gr.grnet.aquarium.event.resource.ResourceEventModel
-import gr.grnet.aquarium.event.im.{IMEventModel, StdIMEvent}
-import gr.grnet.aquarium.{AquariumInternalError, AquariumException}
+import gr.grnet.aquarium.store.{StoreProvider, PolicyStore}
import gr.grnet.aquarium.computation.data._
-import gr.grnet.aquarium.computation.reason.{NoSpecificChangeReason, UserStateChangeReason, InitialUserStateSetup}
+import gr.grnet.aquarium.computation.reason.{NoSpecificChangeReason, UserStateChangeReason}
+import gr.grnet.aquarium.event.model.NewWalletEntry
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
*
import scala.collection.mutable
import gr.grnet.aquarium.logic.accounting.dsl.DSLResourcesMap
import gr.grnet.aquarium.logic.accounting.Accounting
-import gr.grnet.aquarium.event.resource.ResourceEventModel
import gr.grnet.aquarium.computation.data.{LatestResourceEventsWorker, ImplicitlyIssuedResourceEventsWorker, IgnoredFirstResourceEventsWorker}
import gr.grnet.aquarium.util.ContextualLogger
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* A helper object holding intermediate state/results during resource event processing.
package gr.grnet.aquarium.computation.data
-import gr.grnet.aquarium.event.im.IMEventModel
+import gr.grnet.aquarium.event.model.im.IMEventModel
/**
*
package gr.grnet.aquarium.computation.data
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
*
package gr.grnet.aquarium.computation.data
import gr.grnet.aquarium.util.findAndRemoveFromMap
-import gr.grnet.aquarium.event.resource.ResourceEventModel
-import gr.grnet.aquarium.event.resource.ResourceEventModel.FullMutableResourceTypeMap
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel.FullMutableResourceTypeMap
/**
*
package gr.grnet.aquarium.computation.data
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* Keeps the implicit OFF events when a billing period ends.
- * This is normally recorded in the [[gr.grnet.aquarium.user.UserState]].
+ * This is normally recorded in the [[gr.grnet.aquarium.computation.UserState]].
*
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
package gr.grnet.aquarium.computation.data
import gr.grnet.aquarium.util.findAndRemoveFromMap
-import gr.grnet.aquarium.event.resource.ResourceEventModel
-import gr.grnet.aquarium.event.resource.ResourceEventModel.FullMutableResourceTypeMap
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel.FullMutableResourceTypeMap
/**
package gr.grnet.aquarium.computation.data
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* Keeps the latest resource event per resource instance.
package gr.grnet.aquarium.computation.data
import gr.grnet.aquarium.util.findAndRemoveFromMap
-import gr.grnet.aquarium.event.resource.ResourceEventModel
-import gr.grnet.aquarium.event.resource.ResourceEventModel.FullMutableResourceTypeMap
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel.FullMutableResourceTypeMap
/**
* This is the mutable cousin of [[gr.grnet.aquarium.computation.data.LatestResourceEventsSnapshot]].
package gr.grnet.aquarium.computation.reason
import gr.grnet.aquarium.computation.BillingMonthInfo
-import gr.grnet.aquarium.event.im.IMEventModel
+import gr.grnet.aquarium.event.model.im.IMEventModel
sealed trait UserStateChangeReason {
/**
- * Return `true` if the result of the calculation should be stored back to the
- * [[gr.grnet.aquarium.store.UserStateStore]].
- *
- */
- def shouldStoreUserState: Boolean
+ * Return `true` if the result of the calculation should be stored back to the
+ * [[gr.grnet.aquarium.store.UserStateStore]].
+ *
+ */
+ def shouldStoreUserState: Boolean
def shouldStoreCalculatedWalletEntries: Boolean
import net.liftweb.json.JsonAST.JValue
import net.liftweb.json._
import ext.JodaTimeSerializers
-import gr.grnet.aquarium.event.ExternalEventSkeleton
-
/**
* Provides conversion methods from and to JSON.
/**
* The application-wide JSON formats used from the underlying lift-json library.
*/
- implicit val Formats = (DefaultFormats ++ JodaTimeSerializers.all) +
- FieldSerializer[ExternalEventSkeleton]()
+ implicit val Formats = (DefaultFormats ++ JodaTimeSerializers.all)
/**
* Converts a value to JSON AST (Abstract Syntax Tree) by acting a bit intelligently, depending on the actual type
+++ /dev/null
-/*
- * 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
- * conditions are met:
- *
- * 1. Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and
- * documentation are those of the authors and should not be
- * interpreted as representing official policies, either expressed
- * or implied, of GRNET S.A.
- */
-
-package gr.grnet.aquarium
-package event
-
-
-import util.xml.XmlSupport
-import util.Loggable
-
-/**
- * Generic base class for all Aquarium events
- *
- * @author Georgios Gousios <gousiosg@gmail.com>
- * @author Christos KK Loverdos <loverdos@gmail.com>
- */
-abstract class ExternalEventSkeleton(
- _id: String, // The id at the client side (the sender) TODO: Rename to remoteId or something...
- _occurredMillis: Long, // When it occurred at client side (the sender)
- _receivedMillis: Long, // When it was received by Aquarium
- _eventVersion: String
-)
- extends ExternalEventModel
- with XmlSupport
- with Loggable {
-
- def id = _id
- def occurredMillis = _occurredMillis
- def receivedMillis = _receivedMillis
- def eventVersion = _eventVersion
-
- def details: Map[String, String] = Map()
-}
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.event
+package gr.grnet.aquarium.event.model
/**
* Basic properties for all events.
* An event represents some state change, where state is specific to the use-case.
*
- *@author Christos KK Loverdos <loverdos@gmail.com>
+ * @author Christos KK Loverdos <loverdos@gmail.com>
*/
trait EventModel {
def withDetails(newDetails: Map[String, String], newOccurredMillis: Long): EventModel
}
-
object EventModel {
trait NamesT {
final val id = "id"
}
object Names extends NamesT
-}
\ No newline at end of file
+}
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.event
+package gr.grnet.aquarium.event.model
-import gr.grnet.aquarium.util.json.JsonSupport
import gr.grnet.aquarium.util.makeBytes
+import gr.grnet.aquarium.util.json.JsonSupport
import gr.grnet.aquarium.util.xml.XmlSupport
/**
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium
-package event
+package gr.grnet.aquarium.event.model
import gr.grnet.aquarium.logic.accounting.Chargeslot
import gr.grnet.aquarium.util.date.MutableDateCalc
import gr.grnet.aquarium.logic.accounting.dsl.{Timeslot, DSLResource}
-import converter.{JsonTextFormat, StdConverters}
import resource.ResourceEventModel
+import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
/**
* The following equation must hold: `newTotalCredits = oldTotalCredits + entryCredits`.
isSynthetic: Boolean) {
def currentResourceEvent = resourceEvents.head
+
def resource = currentResourceEvent.resource
+
def instanceId = currentResourceEvent.instanceID
+
def chargslotCount = chargeslots.length
+
def isOutOfSync = currentResourceEvent.isOutOfSyncForBillingMonth(yearOfBillingMonth, billingMonth)
def toDebugString = "%s%s(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)".format(
final val chargeslots = "chargeslots"
final val resourceDef = "resourceDef"
}
+
}
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium
-package event
+package gr.grnet.aquarium.event.model
import gr.grnet.aquarium.logic.accounting.dsl.Timeslot
import java.util.Date
-import converter.{JsonTextFormat, StdConverters}
+import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
/**
* Store entry for serialized policy data.
* @author Georgios Gousios <gousiosg@gmail.com>
*/
case class PolicyEntry(
- id: String, //SHA-1 of the provided policyYaml string
- occurredMillis: Long, //Time this event was stored
- receivedMillis: Long, //Does not make sense for local events -> not used
- policyYAML: String, //The serialized policy
- validFrom: Long, //The timestamp since when the policy is valid
- validTo: Long, //The timestamp until when the policy is valid
- eventVersion: String = "1.0",
- userID: String = "",
- details: Map[String, String] = Map()
- ) extends ExternalEventModel {
+ id: String, //SHA-1 of the provided policyYaml string
+ occurredMillis: Long, //Time this event was stored
+ receivedMillis: Long, //Does not make sense for local events -> not used
+ policyYAML: String, //The serialized policy
+ validFrom: Long, //The timestamp since when the policy is valid
+ validTo: Long, //The timestamp until when the policy is valid
+ eventVersion: String = "1.0",
+ userID: String = "",
+ details: Map[String, String] = Map()
+ ) extends ExternalEventModel {
assert(if(validTo != -1) validTo > validFrom else validFrom > 0)
final val validFrom = "validFrom"
final val validTo = "validTo"
}
+
}
\ No newline at end of file
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium
-package event
+package gr.grnet.aquarium.event.model
import java.util.Date
-import converter.{JsonTextFormat, StdConverters}
-import util.json.JsonSupport
+import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
/**
* A WalletEntry is a derived entity. Its data represent money/credits and are calculated based on
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
case class WalletEntry(
- id: String, // The id at the client side (the sender) TODO: Rename to remoteId or something...
- occurredMillis: Long, // The time of oldest matching resource event
- receivedMillis: Long, // The time the cost calculation was done
- sourceEventIDs: List[String], // The events that triggered this WalletEntry
- value: Double,
- reason: String,
- userId: String,
- resource: String,
- instanceId: String,
- finalized: Boolean,
- eventVersion: String = "1.0",
- userID: String = "",
- details: Map[String, String] = Map()
-) extends ExternalEventModel {
+ id: String, // The id at the client side (the sender) TODO: Rename to remoteId or something...
+ occurredMillis: Long, // The time of oldest matching resource event
+ receivedMillis: Long, // The time the cost calculation was done
+ sourceEventIDs: List[String], // The events that triggered this WalletEntry
+ value: Double,
+ reason: String,
+ userId: String,
+ resource: String,
+ instanceId: String,
+ finalized: Boolean,
+ eventVersion: String = "1.0",
+ userID: String = "",
+ details: Map[String, String] = Map()
+ ) extends ExternalEventModel {
assert(occurredMillis > 0)
assert(!userId.isEmpty)
def validate = true
-
+
def fromResourceEvent(rceId: String): Boolean = {
sourceEventIDs contains rceId
}
this.copy(details = newDetails, occurredMillis = newOccurredMillis)
def occurredDate = new Date(occurredMillis)
+
def receivedDate = new Date(receivedMillis)
}
StdConverters.AllConverters.convertEx[WalletEntry](JsonTextFormat(json))
}
- def zero = WalletEntry("", 1L, 1L, Nil,1,"","foo", "bar", "0", false)
+ def zero = WalletEntry("", 1L, 1L, Nil, 1, "", "foo", "bar", "0", false)
object JsonNames {
final val _id = "_id"
final val instanceId = "instanceId"
final val finalized = "finalized"
}
+
}
\ No newline at end of file
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.event.im
-
-import gr.grnet.aquarium.event.ExternalEventModel
+package gr.grnet.aquarium.event.model
+package im
/**
* The model of any event sent from the `Identity Management` (IM) external system.
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.event.im
+package gr.grnet.aquarium.event.model
+package im
import gr.grnet.aquarium.util.makeString
import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.event
+package gr.grnet.aquarium.event.model
package resource
import java.util.Date
import gr.grnet.aquarium.util.date.MutableDateCalc
+import gr.grnet.aquarium.event.model.ExternalEventModel
/**
* The model of any resource event.
* or implied, of GRNET S.A.
*/
-package gr.grnet.aquarium.event
+package gr.grnet.aquarium.event.model
package resource
import gr.grnet.aquarium.util.makeString
import com.ckkloverdos.maybe.{NoVal, Maybe, Failed, Just}
import gr.grnet.aquarium.util.{ContextualLogger, CryptoUtils, Loggable}
import gr.grnet.aquarium.store.PolicyStore
-import gr.grnet.aquarium.event.{WalletEntry}
+import gr.grnet.aquarium.event.model.WalletEntry
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
-import gr.grnet.aquarium.event.resource.ResourceEventModel
import gr.grnet.aquarium.{AquariumInternalError, AquariumException}
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* A timeslot together with the algorithm and unit price that apply for this particular timeslot.
import com.ckkloverdos.maybe.{NoVal, Failed, Just, Maybe}
import gr.grnet.aquarium.AquariumException
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* A cost policy indicates how charging for a resource will be done
}
/**
- * Given the old amount of a resource instance (see [[gr.grnet.aquarium.user.ResourceInstanceSnapshot]]) and the
+ * Given the old amount of a resource instance (see [[gr.grnet.aquarium.computation.data.ResourceInstanceSnapshot]]) and the
* value arriving in a new resource event, compute the new instance amount.
*
* Note that the `oldAmount` does not make sense for all types of [[gr.grnet.aquarium.logic.accounting.dsl.DSLCostPolicy]],
* in which case it is ignored.
*
* @param oldAmount the old accumulating amount
- * @param newEventValue the value contained in a newly arrived [[gr.grnet.aquarium.event.resource.ResourceEventModel]]
+ * @param newEventValue the value contained in a newly arrived [[gr.grnet.aquarium.event.model.resource.ResourceEventModel]]
* @return
*/
def computeNewAccumulatingAmount(oldAmount: Double, newEventValue: Double): Double
import gr.grnet.aquarium.util.CryptoUtils
import gr.grnet.aquarium.util.date.TimeHelpers
-import gr.grnet.aquarium.event.PolicyEntry
+import gr.grnet.aquarium.event.model.PolicyEntry
/**
* Root object for the Aquarium policy configuration tree.
import gr.grnet.aquarium.messaging.AkkaAMQP
import akka.amqp._
import java.util.concurrent.{ConcurrentHashMap, ConcurrentSkipListSet}
-import com.ckkloverdos.maybe._
import gr.grnet.aquarium.util.date.TimeHelpers
import gr.grnet.aquarium.{AquariumException, Configurator}
-import gr.grnet.aquarium.event.ExternalEventModel
import gr.grnet.aquarium.actor.ReflectiveActor
+import gr.grnet.aquarium.event.model.ExternalEventModel
/**
* An abstract service that retrieves Aquarium events from a queue,
import gr.grnet.aquarium.util.date.TimeHelpers
import gr.grnet.aquarium.util.makeString
import com.ckkloverdos.maybe._
-import gr.grnet.aquarium.event.im.{StdIMEvent, IMEventModel}
import gr.grnet.aquarium.actor.message.event.ProcessIMEvent
+import gr.grnet.aquarium.event.model.im.{StdIMEvent, IMEventModel}
/**
* An event processor service for user events coming from the IM system
import gr.grnet.aquarium.store.LocalFSEventStore
import com.ckkloverdos.maybe.Maybe
import gr.grnet.aquarium.util.date.TimeHelpers
-import gr.grnet.aquarium.event.resource.{StdResourceEvent, ResourceEventModel}
+import gr.grnet.aquarium.event.model.resource.{StdResourceEvent, ResourceEventModel}
import gr.grnet.aquarium.actor.message.event.ProcessResourceEvent
package gr.grnet.aquarium.simulation
-import gr.grnet.aquarium.event.resource.StdResourceEvent
+import gr.grnet.aquarium.event.model.resource.StdResourceEvent
/**
package gr.grnet.aquarium.simulation
import gr.grnet.aquarium.logic.accounting.dsl.OnOffCostPolicyValues
-import gr.grnet.aquarium.store.RecordID
import java.util.Date
import gr.grnet.aquarium.util.date.MutableDateCalc
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* A simulator for an instance of the standard `vmtime` resource.
package gr.grnet.aquarium.simulation
import java.util.Date
-import gr.grnet.aquarium.store.RecordID
import math.Ordering
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* A simulator for a user.
package gr.grnet.aquarium.store
-import gr.grnet.aquarium.event.im.IMEventModel
import gr.grnet.aquarium.util.makeString
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.im.IMEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* Store for external user events
import java.io.{FileOutputStream, File}
import gr.grnet.aquarium.util.{Loggable, stringOfStackTrace}
import gr.grnet.aquarium.util.date.{TimeHelpers, MutableDateCalc}
-import gr.grnet.aquarium.event.im.IMEventModel
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.im.IMEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* This is used whenever the property `events.store.folder` is setup in aquarium configuration.
import scala.collection.immutable
import collection.immutable.SortedMap
import gr.grnet.aquarium.logic.accounting.dsl.{DSL, DSLPolicy, Timeslot}
-import com.ckkloverdos.maybe.{NoVal, Just, Maybe}
-import gr.grnet.aquarium.event.PolicyEntry
+import com.ckkloverdos.maybe.Maybe
+import gr.grnet.aquarium.event.model.PolicyEntry
/**
* A store for serialized policy entries.
package gr.grnet.aquarium.store
-import com.ckkloverdos.maybe.Maybe
import gr.grnet.aquarium.AquariumException
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* An abstraction for Aquarium `ResourceEvent` stores.
import java.util.Date
import com.ckkloverdos.maybe.Maybe
-import gr.grnet.aquarium.event.WalletEntry
+import gr.grnet.aquarium.event.model.WalletEntry
/**
* A store for Wallet entries.
import java.util.concurrent.ConcurrentHashMap
import gr.grnet.aquarium.uid.ConcurrentVMLocalUIDGenerator
import gr.grnet.aquarium.Configurable
-import gr.grnet.aquarium.event.{WalletEntry, PolicyEntry}
-import gr.grnet.aquarium.event.im.{StdIMEvent, IMEventModel}
+import gr.grnet.aquarium.event.model.{WalletEntry, PolicyEntry}
+import gr.grnet.aquarium.event.model.im.{StdIMEvent, IMEventModel}
import org.bson.types.ObjectId
-import gr.grnet.aquarium.event.resource.{StdResourceEvent, ResourceEventModel}
+import gr.grnet.aquarium.event.model.resource.{StdResourceEvent, ResourceEventModel}
import gr.grnet.aquarium.computation.UserState
/**
package gr.grnet.aquarium.store
-import gr.grnet.aquarium.event.im.StdIMEvent
-import gr.grnet.aquarium.event.resource.StdResourceEvent
+import gr.grnet.aquarium.event.model.im.StdIMEvent
+import gr.grnet.aquarium.event.model.resource.StdResourceEvent
package object memory {
type MemIMEvent = StdIMEvent
package gr.grnet.aquarium.store.mongodb
-import org.bson.types.ObjectId
-import gr.grnet.aquarium.event.ExternalEventModel
+import gr.grnet.aquarium.event.model.ExternalEventModel
/**
*
package gr.grnet.aquarium.store.mongodb
-import org.bson.types.ObjectId
import gr.grnet.aquarium.converter.{JsonTextFormat, StdConverters}
import gr.grnet.aquarium.util._
-import gr.grnet.aquarium.event.im.{IMEventModel, StdIMEvent}
-import gr.grnet.aquarium.event.ExternalEventModel
import com.mongodb.DBObject
import com.mongodb.util.JSON
+import gr.grnet.aquarium.event.model.im.IMEventModel
/**
package gr.grnet.aquarium.store.mongodb
-import org.bson.types.ObjectId
import com.mongodb.DBObject
import gr.grnet.aquarium.util.makeString
-import gr.grnet.aquarium.event.resource.ResourceEventModel
import gr.grnet.aquarium.converter.{StdConverters, JsonTextFormat}
import com.mongodb.util.JSON
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
- * A [[gr.grnet.aquarium.event.resource.ResourceEventModel]] as represented for MongoDB.
+ * A [[gr.grnet.aquarium.event.model.resource.ResourceEventModel]] as represented for MongoDB.
*
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
final def fromOther(rcEvent: ResourceEventModel, _id: String): MongoDBResourceEvent = {
import rcEvent._
+
MongoDBResourceEvent(
id,
occurredMillis,
import gr.grnet.aquarium.computation.UserState.{JsonNames ⇒ UserStateJsonNames}
import gr.grnet.aquarium.util.json.JsonSupport
import collection.mutable.ListBuffer
-import gr.grnet.aquarium.event._
-import gr.grnet.aquarium.event.im.IMEventModel
-import gr.grnet.aquarium.event.im.IMEventModel.{Names ⇒ IMEventNames}
-import gr.grnet.aquarium.event.resource.ResourceEventModel
-import gr.grnet.aquarium.event.resource.ResourceEventModel.{Names ⇒ ResourceEventNames}
+import gr.grnet.aquarium.event.model.im.IMEventModel
+import gr.grnet.aquarium.event.model.im.IMEventModel.{Names ⇒ IMEventNames}
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel.{Names ⇒ ResourceEventNames}
import gr.grnet.aquarium.store._
-import gr.grnet.aquarium.event.WalletEntry.{JsonNames ⇒ WalletJsonNames}
-import gr.grnet.aquarium.event.PolicyEntry.{JsonNames ⇒ PolicyJsonNames}
+import gr.grnet.aquarium.event.model.WalletEntry.{JsonNames ⇒ WalletJsonNames}
+import gr.grnet.aquarium.event.model.PolicyEntry.{JsonNames ⇒ PolicyJsonNames}
import java.util.Date
import gr.grnet.aquarium.logic.accounting.Policy
import com.mongodb._
import gr.grnet.aquarium.util._
import gr.grnet.aquarium.converter.Conversions
import gr.grnet.aquarium.computation.UserState
+import gr.grnet.aquarium.event.model.{ExternalEventModel, WalletEntry, PolicyEntry}
/**
* Mongodb implementation of the various aquarium stores.
}
/**
- * Collection holding the [[gr.grnet.aquarium.event.resource.ResourceEventModel]]s.
+ * Collection holding the [[gr.grnet.aquarium.event.model.resource.ResourceEventModel]]s.
*
* Resource events are coming from all systems handling billable resources.
*/
final val USER_STATES_COLLECTION = "userstates"
/**
- * Collection holding [[gr.grnet.aquarium.event.im.IMEventModel]]s.
+ * Collection holding [[gr.grnet.aquarium.event.model.im.IMEventModel]]s.
*
* User events are coming from the IM module (external).
*/
final val IM_EVENTS_COLLECTION = "imevents"
/**
- * Collection holding [[gr.grnet.aquarium.event.im.IMEventModel]]s that could not be parsed to normal objects.
+ * Collection holding [[gr.grnet.aquarium.event.model.im.IMEventModel]]s that could not be parsed to normal objects.
*
* We of course assume at least a valid JSON representation.
*
final val UNPARSED_IM_EVENTS_COLLECTION = "unparsed_imevents"
/**
- * Collection holding [[gr.grnet.aquarium.event.WalletEntry]].
+ * Collection holding [[gr.grnet.aquarium.event.model.WalletEntry]].
*
* Wallet entries are generated internally in Aquarium.
*/
// final val POLICIES_COLLECTION = "policies"
/**
- * Collection holding [[gr.grnet.aquarium.event.PolicyEntry]].
+ * Collection holding [[gr.grnet.aquarium.event.model.PolicyEntry]].
*/
final val POLICY_ENTRIES_COLLECTION = "policyEntries"
import gr.grnet.aquarium.messaging.AkkaAMQP
import java.lang.StringBuffer
import gr.grnet.aquarium.logic.accounting.Policy
-import gr.grnet.aquarium.event.im.{StdIMEvent, IMEventModel}
-import gr.grnet.aquarium.event.resource.{StdResourceEvent, ResourceEventModel}
+import gr.grnet.aquarium.event.model.im.{StdIMEvent, IMEventModel}
+import gr.grnet.aquarium.event.model.resource.{StdResourceEvent, ResourceEventModel}
/**
* Generates random resource events to use as input for testing and
import java.util.Date
import junit.framework.Assert._
import gr.grnet.aquarium.logic.accounting.{Accounting}
-import gr.grnet.aquarium.event.{WalletEntry}
+import gr.grnet.aquarium.event.model.WalletEntry
import com.ckkloverdos.maybe.Just
-import gr.grnet.aquarium.event.resource.StdResourceEvent
+import gr.grnet.aquarium.event.model.resource.StdResourceEvent
/**
* Tests for the methods that do accounting
import gr.grnet.aquarium.Configurator._
import gr.grnet.aquarium.util.{RandomEventGenerator, TestMethods}
import collection.mutable.ArrayBuffer
-import org.junit.{After, Test, Before}
+import org.junit.{After, Test}
import gr.grnet.aquarium.{StoreConfigurator, LogicTestsAssumptions}
import gr.grnet.aquarium.store.memory.MemStore
-import gr.grnet.aquarium.event.resource.ResourceEventModel
+import gr.grnet.aquarium.event.model.resource.ResourceEventModel
/**
* @author Georgios Gousios <gousiosg@gmail.com>