toMap() method for remaining DSL classes.
authorGeorgios Gousios <gousiosg@gmail.com>
Fri, 27 Jan 2012 15:28:53 +0000 (17:28 +0200)
committerGeorgios Gousios <gousiosg@gmail.com>
Fri, 27 Jan 2012 15:28:53 +0000 (17:28 +0200)
Also, immutable map generation for all classes

src/main/scala/gr/grnet/aquarium/logic/accounting/dsl/DSLAgreement.scala
src/main/scala/gr/grnet/aquarium/logic/accounting/dsl/DSLAlgorithm.scala
src/main/scala/gr/grnet/aquarium/logic/accounting/dsl/DSLCreditPlan.scala
src/main/scala/gr/grnet/aquarium/logic/accounting/dsl/DSLPolicy.scala
src/main/scala/gr/grnet/aquarium/logic/accounting/dsl/DSLPriceList.scala
src/main/scala/gr/grnet/aquarium/logic/accounting/dsl/DSLResource.scala

index e713b81..ac97ea7 100644 (file)
@@ -50,7 +50,21 @@ case class DSLAgreement (
   algorithm : DSLAlgorithm,
   pricelist : DSLPriceList,
   creditplan: DSLCreditPlan
-) extends DSLItem
+) extends DSLItem {
+
+  override def toMap(): Map[String, Any] = {
+    val parent = overrides match {
+      case Some(x) => Map(Vocabulary.overrides -> x.name)
+      case _ => Map()
+    }
+
+    parent                                        ++
+    Map(Vocabulary.name -> name)                  ++
+    Map(Vocabulary.algorithm  -> algorithm.name)  ++
+    Map(Vocabulary.pricelist  -> pricelist.name)  ++
+    Map(Vocabulary.creditplan -> creditplan.name)
+  }
+}
 
 object DSLAgreement {
   val emptyAgreement = DSLAgreement("", None, DSLAlgorithm.emptyAlgorithm,
index 5432194..cb70618 100644 (file)
@@ -47,9 +47,10 @@ case class DSLAlgorithm (
   override  val effective: DSLTimeFrame
 ) extends DSLTimeBoundedItem[DSLAlgorithm](name, overrides, effective) {
 
+  override def toMap() =
+    super.toMap ++ algorithms.map(x => (x._1.name, x._2))
 }
 
 object DSLAlgorithm {
   val emptyAlgorithm = DSLAlgorithm("", None, Map(), DSLTimeFrame.emptyTimeFrame)
 }
-
index 32cb0c0..2ef1dad 100644 (file)
@@ -50,18 +50,10 @@ case class DSLCreditPlan (
   override val effective: DSLTimeFrame
 ) extends DSLTimeBoundedItem[DSLCreditPlan](name, overrides, effective) {
 
-  override def toMap(): Map[String, Any] = {
-    val data = new scala.collection.mutable.HashMap[String, Any]()
-
-    data ++= super.toMap
-    data += (Vocabulary.credits -> credits)
-    data += (Vocabulary.at -> atCron)
-
-    data.toMap
-  }
+  override def toMap(): Map[String, Any] =
+    super.toMap ++ Map(Vocabulary.credits -> credits) ++ Map(Vocabulary.at -> atCron)
 }
 
 object DSLCreditPlan {
-  val emptyCreditPlan = DSLCreditPlan("", None, 0,
-    List(DSLTimeSpec.emtpyTimeSpec), "", DSLTimeFrame.emptyTimeFrame)
+  val emptyCreditPlan = DSLCreditPlan("", None, 0, List(), "", DSLTimeFrame.emptyTimeFrame)
 }
\ No newline at end of file
index 08d7260..fec5f72 100644 (file)
@@ -76,6 +76,13 @@ case class DSLPolicy (
   def findAgreement(name: String): Option[DSLAgreement] = {
     agreements.find(a => a.name.equals(name))
   }
+
+  override def toMap() =
+    Map(Vocabulary.algorithms  -> algorithms.map{a => a.toYAML})  ++
+    Map(Vocabulary.pricelists  -> pricelists.map{p => p.toYAML})  ++
+    Map(Vocabulary.resources   -> resources.map{r => r.toYAML})   ++
+    Map(Vocabulary.creditplans -> creditplans.map{c => c.toYAML}) ++
+    Map(Vocabulary.agreements  -> agreements.map{a => a.toYAML})
 }
 
 object DSLPolicy {
index 0aec5e2..3dd2ca9 100644 (file)
@@ -47,15 +47,8 @@ case class DSLPriceList (
   override val effective: DSLTimeFrame
 ) extends DSLTimeBoundedItem[DSLPriceList](name, overrides, effective) {
   
-  override def toMap(): Map[String, Any] = {
-    val data = new scala.collection.mutable.HashMap[String, Any]()
-
-    data ++= super.toMap
-
-    prices.keys.foreach{x => data += (x.name -> prices.get(x))}
-
-    data.toMap
-  }
+  override def toMap(): Map[String, Any] =
+    super.toMap ++ prices.map{x => (x._1.name -> x._2)}
 }
 
 object DSLPriceList {
index 324f288..94bb41f 100644 (file)
@@ -35,9 +35,6 @@
 
 package gr.grnet.aquarium.logic.accounting.dsl
 
-import gr.grnet.aquarium.util.yaml.{YAMLNode}
-
-
 /**
  * Represents a chargable resource.
  *
@@ -54,6 +51,11 @@ sealed abstract class DSLResource (
   val costpolicy: DSLCostPolicy
 ) extends DSLItem {
   def isComplex: Boolean
+  
+  override def toMap(): Map[String, Any] =
+    Map(Vocabulary.name -> name) ++
+      Map(Vocabulary.unit -> unit) ++
+        Map(Vocabulary.costpolicy -> costpolicy.name)
 }
 
 /**
@@ -74,6 +76,9 @@ case class DSLComplexResource (
   descriminatorField: String
 ) extends DSLResource(name, unit, costpolicy) {
   override def isComplex = true
+
+  override def toMap(): Map[String, Any] =
+    super.toMap ++ Map(Vocabulary.descriminatorfield -> descriminatorField)
 }
 
 /**