import gr.grnet.aquarium.util.{Lifecycle, Loggable}
import gr.grnet.aquarium.{Real, AquariumInternalError, AquariumAwareSkeleton}
import java.util.{Map ⇒ JMap}
-import gr.grnet.aquarium.charging.state.UserAgreementHistoryModel
+import gr.grnet.aquarium.charging.state.{UserStateModel, UserAgreementHistoryModel}
/**
*
//- Lifecycle
def calculateRealtimeUserState(
- userAgreementHistoryModel: UserAgreementHistoryModel,
- userStateMsg: UserStateMsg,
+ userStateModel: UserStateModel,
resourceMapping: JMap[String, ResourceTypeMsg],
realtimeMillis: Long
) {
+ val userStateMsg = userStateModel.userStateMsg
+ val userAgreementHistoryModel = userStateModel.userAgreementHistoryMsg
+
import scala.collection.JavaConverters.mapAsScalaMapConverter
val stateOfResources = userStateMsg.getStateOfResources.asScala
processResourceEvents(
realtimeMillis,
virtualEvents,
- userAgreementHistoryModel,
- userStateMsg,
+ userStateModel,
resourceMapping,
realtimeMillis
)
def findOrCalculateWorkingUserStateAtEndOfBillingMonth(
processingTimeMillis: Long,
- userAgreementHistoryModel: UserAgreementHistoryModel,
+ userStateModel: UserStateModel,
billingMonthInfo: BillingMonthInfo,
resourceMapping: JMap[String, ResourceTypeMsg],
userStateRecorder: UserStateMsg ⇒ UserStateMsg
def computeFullMonthBillingAndSaveState(): UserStateMsg = {
val fullMonthUserState = replayFullMonthBilling(
processingTimeMillis,
- userAgreementHistoryModel,
+ userStateModel,
billingMonthInfo,
resourceMapping,
userStateRecorder
)
val monthlyUserState0 = UserStateMsg.newBuilder(fullMonthUserState).
- setIsFullBillingMonth(true).
+ setIsForFullMonth(true).
setBillingYear(billingMonthInfo.year).
setBillingMonth(billingMonthInfo.month). // FIXME What about the billingMonthDay?
setOriginalID("").
monthlyUserState1
}
- val userID = userAgreementHistoryModel.userID
- val userCreationMillis = userAgreementHistoryModel.unsafeUserCreationMillis
+ val userID = userStateModel.userID
+ val userCreationMillis = userStateModel.unsafeUserCreationMillis
val userCreationDateCalc = new MutableDateCalc(userCreationMillis)
val billingMonthStartMillis = billingMonthInfo.monthStartMillis
val billingMonthStopMillis = billingMonthInfo.monthStopMillis
* If needed, it may go back in time and recompute stuff.
*
* @param resourceEvent
- * @param userStateMsg
*/
def processResourceEvent(
processingTimeMillis: Long,
resourceEvent: ResourceEventMsg,
- userAgreementHistoryModel: UserAgreementHistoryModel,
- userStateMsg: UserStateMsg,
+ userStateModel: UserStateModel,
resourceMapping: JMap[String, ResourceTypeMsg],
updateLatestMillis: Boolean
) {
- require(userStateMsg ne null, "userStateMsg ne null")
+ val userStateMsg = userStateModel.userStateMsg
+ val userAgreementHistoryModel = userStateModel.userAgreementHistoryMsg
val resourceName = resourceEvent.getResource
val resourceTypeMsg = resourceMapping.get(resourceName)
resourceTypeMsg,
billingMonthInfo,
resourcesChargingState,
- userAgreementHistoryModel,
- userStateMsg,
+ userStateModel,
msg ⇒ userStateMsg.getWalletEntries.add(msg)
)
val m1 = TimeHelpers.nowMillis()
def processResourceEvents(
processingTimeMillis: Long,
resourceEvents: Traversable[ResourceEventMsg],
- userAgreementHistoryModel: UserAgreementHistoryModel,
- userStateMsg: UserStateMsg,
+ userStateModel: UserStateModel,
resourceMapping: JMap[String, ResourceTypeMsg],
latestUpdateMillis: Long
): Unit = {
processResourceEvent(
processingTimeMillis,
currentResourceEvent,
- userAgreementHistoryModel,
- userStateMsg,
+ userStateModel,
resourceMapping,
false
)
}
if(_counter > 0) {
- userStateMsg.setLatestUpdateMillis(latestUpdateMillis)
+ userStateModel.userStateMsg.setLatestUpdateMillis(latestUpdateMillis)
}
}
def replayFullMonthBilling(
processingTimeMillis: Long,
- userAgreementHistoryModel: UserAgreementHistoryModel,
+ userStateModel: UserStateModel,
billingMonthInfo: BillingMonthInfo,
resourceMapping: JMap[String, ResourceTypeMsg],
userStateRecorder: UserStateMsg ⇒ UserStateMsg
replayMonthChargingUpTo(
processingTimeMillis,
- userAgreementHistoryModel,
+ userStateModel,
billingMonthInfo,
billingMonthInfo.monthStopMillis,
resourceMapping,
*/
def replayMonthChargingUpTo(
processingTimeMillis: Long,
- userAgreementHistoryModel: UserAgreementHistoryModel,
+ userStateModel: UserStateModel,
billingMonthInfo: BillingMonthInfo,
billingEndTimeMillis: Long,
resourceMapping: JMap[String, ResourceTypeMsg],
userStateRecorder: UserStateMsg ⇒ UserStateMsg
): UserStateMsg = {
+ val userAgreementHistoryMsg = userStateModel.userAgreementHistoryMsg
+
val isFullMonthBilling = billingEndTimeMillis == billingMonthInfo.monthStopMillis
- val userID = userAgreementHistoryModel.userID
+ val userID = userStateModel.userID
// In order to replay the full month, we start with the state at the beginning of the month.
val previousBillingMonthInfo = billingMonthInfo.previousMonth
val userStateMsg = findOrCalculateWorkingUserStateAtEndOfBillingMonth(
processingTimeMillis,
- userAgreementHistoryModel,
+ userStateModel,
previousBillingMonthInfo,
resourceMapping,
userStateRecorder
processResourceEvent(
processingTimeMillis,
currentResourceEvent,
- userAgreementHistoryModel,
- userStateMsg,
+ userStateModel,
resourceMapping,
false
)