WIP: New state machine for message processing
[aquarium] / src / main / scala / gr / grnet / aquarium / message / avro / ModelFactory.scala
index 342d534..6fbd46f 100644 (file)
@@ -38,18 +38,16 @@ package gr.grnet.aquarium.message.avro
 import gr.grnet.aquarium.charging.state.UserAgreementHistoryModel
 import gr.grnet.aquarium.charging.state.UserStateModel
 import gr.grnet.aquarium.message.avro.gen._
+import gr.grnet.aquarium.policy.AdHocFullPriceTableRef
+import gr.grnet.aquarium.policy.CronSpec
+import gr.grnet.aquarium.policy.EffectivePriceTableModel
+import gr.grnet.aquarium.policy.EffectiveUnitPriceModel
+import gr.grnet.aquarium.policy.PolicyModel
+import gr.grnet.aquarium.policy.ResourceType
+import gr.grnet.aquarium.policy.UserAgreementModel
 import gr.grnet.aquarium.policy._
 import scala.collection.JavaConverters.asScalaBufferConverter
 import scala.collection.JavaConverters.mapAsScalaMapConverter
-import gr.grnet.aquarium.policy.ResourceType
-import gr.grnet.aquarium.policy.PolicyModel
-import gr.grnet.aquarium.charging.state.UserAgreementHistoryModel
-import gr.grnet.aquarium.policy.EffectivePriceTableModel
-import gr.grnet.aquarium.policy.CronSpec
-import gr.grnet.aquarium.policy.UserAgreementModel
-import gr.grnet.aquarium.policy.AdHocFullPriceTableRef
-import gr.grnet.aquarium.charging.state.UserStateModel
-import gr.grnet.aquarium.policy.EffectiveUnitPriceModel
 
 /**
  * Provides helper methods that construct model objects, usually from their avro message counterparts.
@@ -144,11 +142,11 @@ object ModelFactory {
 
   def newUserAgreementModelFromIMEvent(
       imEvent: IMEventMsg,
-      id: String = MessageHelpers.UserAgreementMsgIDGenerator.nextUID()
+      agreementOriginalID: String = MessageHelpers.UserAgreementMsgIDGenerator.nextUID()
   ) = {
 
     UserAgreementModel(
-      MessageFactory.newUserAgreementFromIMEventMsg(imEvent, id),
+      MessageFactory.newUserAgreementFromIMEventMsg(imEvent, agreementOriginalID),
       PolicyDefinedFullPriceTableRef
     )
   }
@@ -178,13 +176,22 @@ object ModelFactory {
   }
 
   def newUserAgreementHistoryModel(msg: UserAgreementHistoryMsg): UserAgreementHistoryModel = {
-    UserAgreementHistoryModel(msg)
+    new UserAgreementHistoryModel(msg)
   }
 
-  def newUserStateModel(msg: UserStateMsg): UserStateModel = {
-    UserStateModel(
-      msg,
-      newUserAgreementHistoryModel(msg.getAgreementHistory)
+  def newUserAgreementHistoryModelFromIMEvent(
+      imEvent: IMEventMsg,
+      historyOriginalID: String = MessageHelpers.UserAgreementHistoryMsgIDGenerator.nextUID(),
+      agreementOriginalID: String = MessageHelpers.UserAgreementMsgIDGenerator.nextUID()
+  ): UserAgreementHistoryModel = {
+    val historyMsg = MessageFactory.newInitialUserAgreementHistoryMsg(
+      MessageFactory.newUserAgreementFromIMEventMsg(imEvent, agreementOriginalID),
+      historyOriginalID
     )
+    new UserAgreementHistoryModel(historyMsg)
+  }
+
+  def newUserStateModel(msg: UserStateMsg): UserStateModel = {
+    new UserStateModel(msg)
   }
 }