From c26e628a4fd5d8796c777b0f7daa0f43110f96e9 Mon Sep 17 00:00:00 2001 From: Adrian Likins Date: Thu, 3 Dec 2009 10:16:59 -0500 Subject: add annotations for ForeignKeys, so the names are quite as ugly as the autogenerated ones which are something along the lines of "FKEF232442242" --- proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java | 6 ++++++ proxy/code/src/org/fedoraproject/candlepin/model/Entitlement.java | 5 +++++ .../code/src/org/fedoraproject/candlepin/model/EntitlementPool.java | 3 +++ proxy/code/src/org/fedoraproject/candlepin/model/Owner.java | 4 ++++ proxy/code/src/org/fedoraproject/candlepin/model/Product.java | 3 +++ proxy/code/src/org/fedoraproject/candlepin/model/User.java | 3 ++- 6 files changed, 23 insertions(+), 1 deletion(-) (limited to 'proxy') diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java index 5e11a6a..b22249d 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java @@ -36,6 +36,7 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; +import org.hibernate.annotations.ForeignKey; /** * A Consumer is the entity that uses a given Entitlement. It can be a user, @@ -60,9 +61,11 @@ public class Consumer { @ManyToOne @JoinColumn(nullable=false) + @ForeignKey(name="fk_consumer_consumer_type") private ConsumerType type; @ManyToOne + @ForeignKey(name="fk_consumer_owner") private Owner owner; // TODO: Is this worth mapping? Do we need a hierarchy amidst consumers? @@ -72,6 +75,9 @@ public class Consumer { // TODO: Are we sure we want to track this explicitly? Wouldn't we examine the // entitlements we're consuming and the products associated to them for this info? @OneToMany + @ForeignKey(name = "fk_consumer_product_consumer_id", + inverseName = "fk_consumer_product_product_id") + @JoinTable(name="cp_consumer_products", joinColumns=@JoinColumn(name="consumer_id"), inverseJoinColumns=@JoinColumn(name="product_id")) diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Entitlement.java b/proxy/code/src/org/fedoraproject/candlepin/model/Entitlement.java index f1614a8..3f7bb94 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Entitlement.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Entitlement.java @@ -27,6 +27,9 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; +import org.hibernate.annotations.ForeignKey; + + /** * Entitlements are documents either signed XML or other certificate which @@ -55,10 +58,12 @@ public class Entitlement { private Long id; @ManyToOne + @ForeignKey(name="fk_entitlement_owner") @JoinColumn(nullable=false) private Owner owner; @ManyToOne + @ForeignKey(name="fk_entitlement_entitlement_pool") @JoinColumn(nullable=false) private EntitlementPool pool; diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/EntitlementPool.java b/proxy/code/src/org/fedoraproject/candlepin/model/EntitlementPool.java index 7829048..80b949b 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/EntitlementPool.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/EntitlementPool.java @@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; +import org.hibernate.annotations.ForeignKey; /** * Represents a pool of products eligible to be consumed (entitled). @@ -44,10 +45,12 @@ public class EntitlementPool { private Long id; @ManyToOne + @ForeignKey(name="fk_entitlement_pool_owner") @JoinColumn(nullable=false) private Owner owner; @ManyToOne + @ForeignKey(name="fk_entitlement_pool_product") @JoinColumn(nullable=false) private Product product; diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java index 46f8999..4765410 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java @@ -29,6 +29,9 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; +import org.hibernate.annotations.ForeignKey; + + /** * Represents the owner of entitlements. * @@ -55,6 +58,7 @@ public class Owner { // EntitlementPool is the owning side of this relationship. @OneToMany(mappedBy="owner", targetEntity=EntitlementPool.class) + @ForeignKey(name="fk_user_owner_id") private List entitlementPools; @Transient diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Product.java b/proxy/code/src/org/fedoraproject/candlepin/model/Product.java index 127287c..18447f1 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Product.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Product.java @@ -30,6 +30,7 @@ import javax.persistence.Table; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; +import org.hibernate.annotations.ForeignKey; /** * Represents a Product that can be consumed and entitled. Products define @@ -55,6 +56,8 @@ public class Product { private String name; @OneToMany(targetEntity=Product.class, cascade=CascadeType.ALL) + @ForeignKey(name = "fk_product_product_id", + inverseName = "fk_product_child_product_id") @JoinTable(name="cp_product_hierarchy", joinColumns=@JoinColumn(name="PARENT_PRODUCT_ID"), inverseJoinColumns=@JoinColumn(name="CHILD_PRODUCT_ID")) diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/User.java b/proxy/code/src/org/fedoraproject/candlepin/model/User.java index 33a6ab5..7594e9d 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/User.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/User.java @@ -15,7 +15,6 @@ package org.fedoraproject.candlepin.model; import java.util.Formatter; - import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -26,6 +25,7 @@ import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; +import org.hibernate.annotations.ForeignKey; /** * Represents the user. @@ -43,6 +43,7 @@ public class User { private Long id; @ManyToOne + @ForeignKey(name="fk_user_owner_id") private Owner owner; private String login; -- cgit From addf7c2f62c8a789586711105715683776ea5809 Mon Sep 17 00:00:00 2001 From: Adrian Likins Date: Thu, 3 Dec 2009 11:19:04 -0500 Subject: add fk's for cp_consumer_products and cp_consumer_entitlements --- proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'proxy') diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java index f1d3335..3ffea28 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java @@ -80,14 +80,16 @@ public class Consumer { // Separate mapping because in theory, a consumer could be consuming products they're // not entitled to. @ManyToMany - @ForeignKey(name = "fk_consumer_product_consumer_id", - inverseName = "fk_consumer_product_product_id") + @ForeignKey(name="fk_consumer_product_consumer_id", + inverseName="fk_consumer_product_product_id") @JoinTable(name="cp_consumer_products", joinColumns=@JoinColumn(name="consumer_id"), inverseJoinColumns=@JoinColumn(name="product_id")) private Set consumedProducts; @OneToMany + @ForeignKey(name="fk_consumer_product_consumer_id", + inverseName="fk_consumer_produce_product_id") @JoinTable(name="cp_consumer_entitlements", joinColumns=@JoinColumn(name="consumer_id"), inverseJoinColumns=@JoinColumn(name="entitlement_id")) -- cgit From 0ec8823f6fa082dce753204f40eeca58220bab3c Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Thu, 3 Dec 2009 10:48:58 -0400 Subject: Small cleanup of the Consumer -> ConsumerInfo relationship. --- proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java | 6 ++---- proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java | 5 +++++ .../src/org/fedoraproject/candlepin/model/test/ConsumerTest.java | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) (limited to 'proxy') diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java index 3ffea28..5d44d9e 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java @@ -104,16 +104,14 @@ public class Consumer { this.owner = owner; this.type = type; - this.info = new ConsumerInfo(); - this.info.setConsumer(this); // TODO: ??? + this.info = new ConsumerInfo(this); this.childConsumers = new HashSet(); this.consumedProducts = new HashSet(); this.entitlements = new HashSet(); } public Consumer() { - this.info = new ConsumerInfo(); - this.info.setConsumer(this); // TODO: ??? + this.info = new ConsumerInfo(this); this.childConsumers = new HashSet(); this.consumedProducts = new HashSet(); this.entitlements = new HashSet(); diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java index 6ea48bc..c1c2eaa 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerInfo.java @@ -66,6 +66,11 @@ public class ConsumerInfo { metadata = new HashMap(); } + public ConsumerInfo(Consumer consumerIn) { + metadata = new HashMap(); + consumer = consumerIn; + } + /** * @return the id */ diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java index dc03056..aedd2b3 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/ConsumerTest.java @@ -109,6 +109,7 @@ public class ConsumerTest extends DatabaseTestFixture { assertEquals("bar", lookedUp.getInfo().getMetadataField("foo")); assertEquals("bar1", metadata.get("foo1")); assertEquals("bar1", lookedUp.getInfo().getMetadataField("foo1")); + assertEquals(consumer.getId(), lookedUp.getInfo().getConsumer().getId()); commitTransaction(); } -- cgit From 6d48f05d2582b68e842b26539d072aad67292b53 Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Thu, 3 Dec 2009 13:39:52 -0400 Subject: Make consumer owner a required column. --- .../code/src/org/fedoraproject/candlepin/model/Consumer.java | 1 + .../src/org/fedoraproject/candlepin/model/ConsumerType.java | 2 +- .../src/org/fedoraproject/candlepin/model/ProductFactory.java | 2 +- .../candlepin/resource/test/ConsumerResourceTest.java | 11 ++++++++--- .../org/fedoraproject/candlepin/test/DatabaseTestFixture.java | 10 +++++----- 5 files changed, 16 insertions(+), 10 deletions(-) (limited to 'proxy') diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java index 5d44d9e..6bc0019 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java @@ -66,6 +66,7 @@ public class Consumer { @ManyToOne @ForeignKey(name="fk_consumer_owner") + @JoinColumn(nullable=false) private Owner owner; // Consumer hierarchy it meant to be useful to represent the relationship between diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java index ddb5976..143f5d9 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ConsumerType.java @@ -24,7 +24,7 @@ import javax.xml.bind.annotation.XmlRootElement; /** * Represents the type of consumer. * - * TODO: Examples? + * See ProductFactory for some examples. */ @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/ProductFactory.java b/proxy/code/src/org/fedoraproject/candlepin/model/ProductFactory.java index ca949c9..589cdd0 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/ProductFactory.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/ProductFactory.java @@ -131,7 +131,7 @@ public class ProductFactory extends ObjectFactory { } /** - * Lookup a ConsumerTYpe by name + * Lookup a ConsumerType by name * @param labelIn to lookup by * @return ConsumerType found */ diff --git a/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java b/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java index 609717a..591a053 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/resource/test/ConsumerResourceTest.java @@ -21,8 +21,10 @@ import org.fedoraproject.candlepin.model.ConsumerInfo; import org.fedoraproject.candlepin.model.ConsumerRepository; import org.fedoraproject.candlepin.model.ConsumerType; import org.fedoraproject.candlepin.model.ConsumerTypeRepository; +import org.fedoraproject.candlepin.model.Owner; import org.fedoraproject.candlepin.resource.ConsumerResource; import org.fedoraproject.candlepin.test.DatabaseTestFixture; +import org.fedoraproject.candlepin.test.TestUtil; import org.junit.Before; import org.junit.Test; @@ -54,9 +56,12 @@ public class ConsumerResourceTest extends DatabaseTestFixture { ConsumerInfo ci = new ConsumerInfo(); ci.setMetadataField("name", newname); - Consumer c = new Consumer(); - c.setName(ci.getMetadataField("name")); - c.setType(standardSystemType); + Owner owner = TestUtil.createOwner(); + beginTransaction(); + em.persist(owner); + commitTransaction(); + + Consumer c = new Consumer(ci.getMetadataField("name"), owner, standardSystemType); c.setInfo(ci); Consumer saved = consumerRepository.create(c); diff --git a/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java b/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java index d3ff05d..79b5593 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java +++ b/proxy/code/src/org/fedoraproject/candlepin/test/DatabaseTestFixture.java @@ -73,16 +73,16 @@ public class DatabaseTestFixture { em.remove(p); } - List owners = em.createQuery("from Owner o").getResultList(); - for (Owner o : owners) { - em.remove(o); - } - List consumers = em.createQuery("from Consumer c").getResultList(); for (Consumer c : consumers) { em.remove(c); } + List owners = em.createQuery("from Owner o").getResultList(); + for (Owner o : owners) { + em.remove(o); + } + // List consumerInfos = em.createQuery("from ConsumerInfo c").getResultList(); // for (ConsumerInfo c : consumerInfos) { // em.remove(c); -- cgit From 3a30375aabcfc58a2ca83381caec4079f2249c7e Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Thu, 3 Dec 2009 15:39:37 -0400 Subject: Make owner -> consumer bi-directional relationship. Though you aparently still have to add the object references on both sides. :( --- .../fedoraproject/candlepin/model/Consumer.java | 2 +- .../org/fedoraproject/candlepin/model/Owner.java | 38 ++++++++++++---------- .../candlepin/model/test/OwnerTest.java | 28 ++++++++++++++-- .../org/fedoraproject/candlepin/test/TestUtil.java | 7 ++-- 4 files changed, 52 insertions(+), 23 deletions(-) (limited to 'proxy') diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java index 6bc0019..1e20d3e 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java @@ -66,7 +66,7 @@ public class Consumer { @ManyToOne @ForeignKey(name="fk_consumer_owner") - @JoinColumn(nullable=false) + @JoinColumn(nullable=false, name="owner_id", referencedColumnName="id") private Owner owner; // Consumer hierarchy it meant to be useful to represent the relationship between diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java index 4765410..61f0787 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java @@ -14,8 +14,8 @@ */ package org.fedoraproject.candlepin.model; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; @@ -53,21 +53,24 @@ public class Owner { // TODO: Remove these transients once the appropriate objects are mapped: - @Transient - private List consumers; + @OneToMany(mappedBy="owner", targetEntity=Consumer.class) + private Set consumers; // EntitlementPool is the owning side of this relationship. @OneToMany(mappedBy="owner", targetEntity=EntitlementPool.class) @ForeignKey(name="fk_user_owner_id") - private List entitlementPools; + private Set entitlementPools; @Transient - private List users; + private Set users; /** * Default constructor. */ public Owner() { + consumers = new HashSet(); + entitlementPools = new HashSet(); + users = new HashSet(); } /** @@ -77,6 +80,10 @@ public class Owner { */ public Owner(String nameIn) { this.name = nameIn; + + consumers = new HashSet(); + entitlementPools = new HashSet(); + users = new HashSet(); } /** @@ -110,37 +117,37 @@ public class Owner { /** * @return the consumers */ - public List getConsumers() { + public Set getConsumers() { return consumers; } /** * @param consumers the consumers to set */ - public void setConsumers(List consumers) { + public void setConsumers(Set consumers) { this.consumers = consumers; } /** * @return the entitlementPools */ - public List getEntitlementPools() { + public Set getEntitlementPools() { return entitlementPools; } /** * @param entitlementPools the entitlementPools to set */ - public void setEntitlementPools(List entitlementPools) { + public void setEntitlementPools(Set entitlementPools) { this.entitlementPools = entitlementPools; } /** * @return the users */ - public List getUsers() { + public Set getUsers() { return users; } /** * @param users the users to set */ - public void setUsers(List users) { + public void setUsers(Set users) { this.users = users; } @@ -151,7 +158,7 @@ public class Owner { public void addUser(User u) { u.setOwner(this); if (this.users == null) { - this.users = new LinkedList(); + this.users = new HashSet(); } this.users.add(u); } @@ -162,9 +169,6 @@ public class Owner { */ public void addConsumer(Consumer c) { c.setOwner(this); - if (this.consumers == null) { - this.consumers = new LinkedList(); - } this.consumers.add(c); } @@ -176,7 +180,7 @@ public class Owner { public void addEntitlementPool(EntitlementPool pool) { pool.setOwner(this); if (this.entitlementPools == null) { - this.entitlementPools = new LinkedList(); + this.entitlementPools = new HashSet(); } this.entitlementPools.add(pool); } diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java index bbef5db..c42af0a 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java @@ -15,11 +15,13 @@ package org.fedoraproject.candlepin.model.test; import org.fedoraproject.candlepin.model.Consumer; +import org.fedoraproject.candlepin.model.ConsumerType; import org.fedoraproject.candlepin.model.EntitlementPool; import org.fedoraproject.candlepin.model.Owner; import org.fedoraproject.candlepin.model.Product; import org.fedoraproject.candlepin.model.User; import org.fedoraproject.candlepin.test.DatabaseTestFixture; +import org.fedoraproject.candlepin.test.TestUtil; import java.util.List; @@ -38,9 +40,6 @@ public class OwnerTest extends DatabaseTestFixture { .setParameter("name", ownerName).getSingleResult(); assertNotNull(result); assertEquals(ownerName, result.getName()); -// assertEquals(0, result.getConsumers().size()); -// assertEquals(0, result.getEntitlementPools().size()); -// assertEquals(0, result.getUsers().size()); assertTrue(result.getId() > 0); assertEquals(o.getId(), result.getId()); } @@ -93,4 +92,27 @@ public class OwnerTest extends DatabaseTestFixture { assertEquals(1, owner.getEntitlementPools().size()); } + + @Test + public void bidirectionalConsumers() throws Exception { + beginTransaction(); + Owner o = TestUtil.createOwner(); + ConsumerType consumerType = TestUtil.createConsumerType(); + Consumer c1 = TestUtil.createConsumer(consumerType, o); + Consumer c2 = TestUtil.createConsumer(consumerType, o); + o.addConsumer(c1); + o.addConsumer(c2); + em.persist(o); + em.persist(consumerType); + em.persist(c1); + em.persist(c2); + + commitTransaction(); + + assertEquals(2, o.getConsumers().size()); + + em.clear(); + Owner lookedUp = (Owner)em.find(Owner.class, o.getId()); + assertEquals(2, lookedUp.getConsumers().size()); + } } diff --git a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java index 30f8e85..a000d43 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java +++ b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java @@ -56,8 +56,11 @@ public class TestUtil { * @return Consumer */ public static Consumer createConsumer() { - return createConsumer(new ConsumerType("test-consumer-type-" + randomInt()), - createOwner()); + return createConsumer(createConsumerType(), createOwner()); + } + + public static ConsumerType createConsumerType() { + return new ConsumerType("test-consumer-type-" + randomInt()); } public static int randomInt() { -- cgit From 6e0285b30d87bbab036f6ecd8d050593b7c07ce3 Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Thu, 3 Dec 2009 16:20:59 -0400 Subject: Make owner -> user bi-directional relationship. --- .../fedoraproject/candlepin/model/Consumer.java | 2 +- .../org/fedoraproject/candlepin/model/Owner.java | 4 +--- .../org/fedoraproject/candlepin/model/User.java | 2 ++ .../candlepin/model/test/OwnerTest.java | 24 ++++++++++++++++++++++ .../org/fedoraproject/candlepin/test/TestUtil.java | 6 ++++++ 5 files changed, 34 insertions(+), 4 deletions(-) (limited to 'proxy') diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java index 1e20d3e..6bc0019 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Consumer.java @@ -66,7 +66,7 @@ public class Consumer { @ManyToOne @ForeignKey(name="fk_consumer_owner") - @JoinColumn(nullable=false, name="owner_id", referencedColumnName="id") + @JoinColumn(nullable=false) private Owner owner; // Consumer hierarchy it meant to be useful to represent the relationship between diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java index 61f0787..6367817 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Owner.java @@ -51,8 +51,6 @@ public class Owner { @Column(nullable=false) private String name; - // TODO: Remove these transients once the appropriate objects are mapped: - @OneToMany(mappedBy="owner", targetEntity=Consumer.class) private Set consumers; @@ -61,7 +59,7 @@ public class Owner { @ForeignKey(name="fk_user_owner_id") private Set entitlementPools; - @Transient + @OneToMany(mappedBy="owner", targetEntity=User.class) private Set users; /** diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/User.java b/proxy/code/src/org/fedoraproject/candlepin/model/User.java index 7594e9d..dd67521 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/User.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/User.java @@ -19,6 +19,7 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.xml.bind.annotation.XmlAccessType; @@ -44,6 +45,7 @@ public class User { @ManyToOne @ForeignKey(name="fk_user_owner_id") + @JoinColumn(nullable=false) private Owner owner; private String login; diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java index c42af0a..83e6299 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/test/OwnerTest.java @@ -115,4 +115,28 @@ public class OwnerTest extends DatabaseTestFixture { Owner lookedUp = (Owner)em.find(Owner.class, o.getId()); assertEquals(2, lookedUp.getConsumers().size()); } + + @Test + public void bidirectionalUsers() throws Exception { + beginTransaction(); + Owner o = TestUtil.createOwner(); + + User u1 = TestUtil.createUser(o); + User u2 = TestUtil.createUser(o); + + o.addUser(u1); + o.addUser(u2); + em.persist(o); + em.persist(u1); + em.persist(u2); + + commitTransaction(); + + assertEquals(2, o.getUsers().size()); + + em.clear(); + Owner lookedUp = (Owner)em.find(Owner.class, o.getId()); + assertEquals(2, lookedUp.getUsers().size()); + } + } diff --git a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java index a000d43..a7b21c0 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java +++ b/proxy/code/src/org/fedoraproject/candlepin/test/TestUtil.java @@ -26,6 +26,7 @@ import org.fedoraproject.candlepin.model.EntitlementPool; import org.fedoraproject.candlepin.model.ObjectFactory; import org.fedoraproject.candlepin.model.Owner; import org.fedoraproject.candlepin.model.Product; +import org.fedoraproject.candlepin.model.User; /** * TestUtil for creating various testing objects. @@ -87,6 +88,11 @@ public class TestUtil { return e; } + public static User createUser(Owner owner) { + User u = new User(owner, "testuser" + randomInt(), "sekret"); + return u; + } + public static Date createDate(int year, int month, int day) { Calendar cal = Calendar.getInstance(); -- cgit From e4e2ea177d23b4f97c4163c1ee9258b59e432ea0 Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Thu, 3 Dec 2009 16:24:50 -0400 Subject: Remove some TODOs, no longer relevant. --- proxy/code/src/org/fedoraproject/candlepin/model/Product.java | 2 -- 1 file changed, 2 deletions(-) (limited to 'proxy') diff --git a/proxy/code/src/org/fedoraproject/candlepin/model/Product.java b/proxy/code/src/org/fedoraproject/candlepin/model/Product.java index 18447f1..7eae3dd 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/model/Product.java +++ b/proxy/code/src/org/fedoraproject/candlepin/model/Product.java @@ -48,7 +48,6 @@ public class Product { @GeneratedValue(strategy=GenerationType.AUTO) private Long id; - // TODO: Drop one of these? @Column(nullable=false, unique=true) private String label; @@ -72,7 +71,6 @@ public class Product { * @param name */ public Product(String label, String name) { - // TODO: Do we want to drop one of these? setLabel(label); setName(name); } -- cgit From a04a850ef1eb2f625e993d8c36b1a00122b4c023 Mon Sep 17 00:00:00 2001 From: Devan Goodwin Date: Fri, 4 Dec 2009 10:47:01 -0400 Subject: Fix ant gen-schema to generate for PostgreSQL, not HSQLDB. --- proxy/build.xml | 22 +++++++--------------- proxy/code/src/META-INF/persistence.xml | 18 ++++++++++++++++-- .../candlepin/resource/CertificateResource.java | 2 +- 3 files changed, 24 insertions(+), 18 deletions(-) (limited to 'proxy') diff --git a/proxy/build.xml b/proxy/build.xml index 6bac8d6..f1593cc 100644 --- a/proxy/build.xml +++ b/proxy/build.xml @@ -482,22 +482,9 @@ Running @{banner} ... - - - - - - - - - @@ -510,6 +497,9 @@ Running @{banner} ... + + + @@ -573,20 +563,22 @@ Running @{banner} ... - + + - + org.hibernate.ejb.HibernatePersistence - - + + + + + + org.hibernate.ejb.HibernatePersistence + + + + + + + + + + diff --git a/proxy/code/src/org/fedoraproject/candlepin/resource/CertificateResource.java b/proxy/code/src/org/fedoraproject/candlepin/resource/CertificateResource.java index f4f40b2..82ea14a 100644 --- a/proxy/code/src/org/fedoraproject/candlepin/resource/CertificateResource.java +++ b/proxy/code/src/org/fedoraproject/candlepin/resource/CertificateResource.java @@ -72,7 +72,7 @@ public class CertificateResource extends BaseResource { encodedCert = base64cert; String decoded = Base64.base64Decode(base64cert); - System.out.println(decoded); +// System.out.println(decoded); cert = CertificateFactory.read(decoded); addProducts(cert); -- cgit