More entities, make logic code compile
authorGeorgios Gousios <gousiosg@gmail.com>
Wed, 14 Sep 2011 07:38:55 +0000 (10:38 +0300)
committerGeorgios Gousios <gousiosg@gmail.com>
Wed, 14 Sep 2011 07:38:55 +0000 (10:38 +0300)
logic/pom.xml
logic/src/main/scala/gr/grnet/aquarium/logic/Accounts.scala
logic/src/main/scala/gr/grnet/aquarium/logic/Bills.scala
logic/src/main/scala/gr/grnet/aquarium/logic/DB.scala [new file with mode: 0644]
model/src/main/resources/META-INF/persistence.xml
model/src/main/scala/gr/grnet/aquarium/model/ConsumableResource.scala [new file with mode: 0644]
model/src/main/scala/gr/grnet/aquarium/model/Group.scala
model/src/main/scala/gr/grnet/aquarium/model/Organization.scala
model/src/main/scala/gr/grnet/aquarium/model/ServiceItem.scala [new file with mode: 0644]
model/src/main/scala/gr/grnet/aquarium/model/ServiceItemConfig.scala [new file with mode: 0644]

index 04d8192..a4e4fd9 100644 (file)
@@ -22,7 +22,6 @@
       <groupId>org.scala-libs</groupId>
       <artifactId>scalajpa_2.9.1</artifactId>
       <version>1.4</version>
-      <scope>test</scope>
     </dependency>
   </dependencies>
 
index c98e5ee..5820b50 100644 (file)
@@ -1,20 +1,17 @@
 package gr.grnet.aquarium.logic
 
 import gr.grnet.aquarium.model._
-import org.scala_libs.jpa.{ThreadLocalEM, LocalEMF}
-
-object DB extends LocalEMF("aquarium", true) with ThreadLocalEM {}
 
 trait Accounts {
 
   def addUserToGroup(u : User, g : Group) = {
-    g.users.add u
-    DB.persist g
+    g.users.add(u)
+    DB.persist(g)
   }
 
 
   def addUserToOrg(u : User, o : Organization) = {
-    o.users.add u
-    DB.persist o
+    o.users.add(u)
+    DB.persist(o)
   }
 }
\ No newline at end of file
index b9cd6fc..085223a 100644 (file)
@@ -1,9 +1,6 @@
 package gr.grnet.aquarium.logic
 
-import gr.grnet.aquarium.model._
-import org.scala_libs.jpa.{ThreadLocalEM, LocalEMF}
-
-object DB extends LocalEMF("aquarium", true) with ThreadLocalEM {}
+import gr.grnet.aquarium.model.User
 
 trait Bills {
 
diff --git a/logic/src/main/scala/gr/grnet/aquarium/logic/DB.scala b/logic/src/main/scala/gr/grnet/aquarium/logic/DB.scala
new file mode 100644 (file)
index 0000000..0500157
--- /dev/null
@@ -0,0 +1,5 @@
+package gr.grnet.aquarium.logic
+
+import org.scala_libs.jpa.{ThreadLocalEM, LocalEMF}
+
+object DB extends LocalEMF("aquarium", true) with ThreadLocalEM {}
index 61e4cdc..efba4e5 100644 (file)
@@ -10,6 +10,9 @@
         <class>gr.grnet.aquarium.model.Group</class>
         <class>gr.grnet.aquarium.model.User</class>
         <class>gr.grnet.aquarium.model.Organization</class>
+        <class>gr.grnet.aquarium.model.ConsumableResource</class>
+        <class>gr.grnet.aquarium.model.ServiceItem</class>
+        <class>gr.grnet.aquarium.model.ServiceItemConfig</class>
         <properties>
 
             <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.H2Platform"/>
diff --git a/model/src/main/scala/gr/grnet/aquarium/model/ConsumableResource.scala b/model/src/main/scala/gr/grnet/aquarium/model/ConsumableResource.scala
new file mode 100644 (file)
index 0000000..3afb0d9
--- /dev/null
@@ -0,0 +1,24 @@
+package gr.grnet.aquarium.model
+
+import javax.persistence._
+
+@Table(name = "CONSUMABLE_RESOURCE")
+@javax.persistence.Entity
+class ConsumableResource extends Id {
+
+  @Column(name = "NAME")
+  var name : String = _
+
+  @Column(name = "RESOURCE_TYPE")
+  var restype : String = _
+
+  @Column(name = "UNIT_TYPE")
+  var unittype : String = _
+
+  @Column(name = "COST")
+  var cost : Float = _
+
+  @OneToMany(mappedBy = "resource",  targetEntity = classOf[ServiceItemConfig],
+             cascade = Array(CascadeType.REMOVE))
+  var configItems : java.util.Set[ServiceItemConfig] = new java.util.HashSet[ServiceItemConfig]()
+}
\ No newline at end of file
index f80f516..d01ec6c 100644 (file)
@@ -18,5 +18,5 @@ class Group extends Entity {
   @JoinTable(name="USER_GROUP",
              joinColumns = Array(new JoinColumn(name="USER_ID")),
              inverseJoinColumns = Array(new JoinColumn(name="GROUP_ID")))
-  var users : java.util.Set[Group] = new java.util.HashSet[Group]()
+  var users : java.util.Set[User] = new java.util.HashSet[User]()
 }
\ No newline at end of file
index 88dc787..d97c9a0 100644 (file)
@@ -22,5 +22,5 @@ class Organization extends Id {
 
   @OneToMany(mappedBy = "org",  targetEntity = classOf[User],
              cascade = Array(CascadeType.REMOVE))
-  var users : java.util.Set[Group] = new java.util.HashSet[Group]()
+  var users : java.util.Set[User] = new java.util.HashSet[User]()
 }
\ No newline at end of file
diff --git a/model/src/main/scala/gr/grnet/aquarium/model/ServiceItem.scala b/model/src/main/scala/gr/grnet/aquarium/model/ServiceItem.scala
new file mode 100644 (file)
index 0000000..59b96e7
--- /dev/null
@@ -0,0 +1,15 @@
+package gr.grnet.aquarium.model
+
+import javax.persistence._
+
+@javax.persistence.Entity
+@Table(name = "SERVICE_ITEM")
+class ServiceItem extends Id {
+
+  @Column(name = "URL")
+  var url : String = ""
+
+  @OneToMany(mappedBy = "item",  targetEntity = classOf[ServiceItemConfig],
+             cascade = Array(CascadeType.REMOVE))
+  var configItems : java.util.Set[ServiceItemConfig] = new java.util.HashSet[ServiceItemConfig]()
+}
diff --git a/model/src/main/scala/gr/grnet/aquarium/model/ServiceItemConfig.scala b/model/src/main/scala/gr/grnet/aquarium/model/ServiceItemConfig.scala
new file mode 100644 (file)
index 0000000..7e2126b
--- /dev/null
@@ -0,0 +1,36 @@
+package gr.grnet.aquarium.model
+
+import javax.persistence._
+
+case class ServiceItemConfigKey(var item_id : Int, var resource_id : Int)
+
+@Table(name = "SERVICE_ITEM_CONFIG")
+@IdClass(classOf[ServiceItemConfigKey])
+@javax.persistence.Entity
+class ServiceItemConfig {
+
+  //def this() = this("")
+
+  @javax.persistence.Id
+  @Column(name ="SERVICE_ITEM_ID", nullable=false, updatable=false,
+          insertable=false)
+  var item_id: Int = _
+
+  @javax.persistence.Id
+  @Column(name ="CONSUMABLE_RESOURCE_ID", nullable=false, updatable=false,
+          insertable=false)
+  var resource_id: Int = _
+
+  @ManyToOne (cascade = Array(CascadeType.ALL),
+              targetEntity = classOf[ServiceItem])
+  @JoinColumn(name = "SERVICE_ITEM_ID")
+  var item : ServiceItem = _
+
+  @ManyToOne (cascade = Array(CascadeType.ALL),
+              targetEntity = classOf[ConsumableResource])
+  @JoinColumn(name = "CONSUMABLE_RESOURCE_ID")
+  var resource : ConsumableResource = _
+
+  @Column(name = "QUANTITY")
+  var quantity: Int = _
+}
\ No newline at end of file