diff options
author | Adrian Likins <adrian@alikins.usersys.redhat.com> | 2010-01-12 14:55:51 -0500 |
---|---|---|
committer | Adrian Likins <adrian@alikins.usersys.redhat.com> | 2010-01-12 14:55:51 -0500 |
commit | 3efdc75ab04a5d5f1d547ea23fdc8459c368130c (patch) | |
tree | 635678ab41c8d99235d3754a1996b112a7c9d1cd | |
parent | 939fee56c640dda3caffe718133ffdbd84370700 (diff) | |
download | candlepin-attr.tar.gz candlepin-attr.tar.xz candlepin-attr.zip |
Add hibernate annotations for Attribute classattr
add Attribute test cases
modify EntitlementPool and Product to use Attribute class
4 files changed, 105 insertions, 6 deletions
diff --git a/proxy/src/main/java/org/fedoraproject/candlepin/model/Attribute.java b/proxy/src/main/java/org/fedoraproject/candlepin/model/Attribute.java index 0952206..16df2fb 100644 --- a/proxy/src/main/java/org/fedoraproject/candlepin/model/Attribute.java +++ b/proxy/src/main/java/org/fedoraproject/candlepin/model/Attribute.java @@ -15,10 +15,46 @@ package org.fedoraproject.candlepin.model; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Id; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.SequenceGenerator; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; + +/** + * + * + * Attributes can be thought of as a hint on some restriction on the usage of an entitlement. + * They will not actually contain the logic on how to enforce the Attribute, but basically just act as a constant the policy rules can look for, and a little metadata that may be required to enforce. + * Attributes can be affiliated with a given product in the product database, or they can be affiliated with entitlements granted within a particular customer's order/certificate. + * All Attributes must pass for the entitlement to be granted to a consumer. Not sure if this statement will stand the test of time, may be some issues here with "enabling" attributes vs "restricting" attributes and knowing when to grant/not grant based on the outcome of multiple checks. Will see how it goes. + * Attributes can be associated with a product, or more commonly with an order of that product contained in the cert. For us, this probably means they'll be associated with entitlement pools in the database. + * o If the same Attribute is found on both the product and the entitlement pool, the entitlement pool's version can be assumed as the authoritative one to check. + */ + +@XmlRootElement +@XmlAccessorType(XmlAccessType.PROPERTY) +@Entity +@Table(name = "cp_attribute") +@SequenceGenerator(name="seq_attribute", sequenceName="seq_attribute", allocationSize=1) public class Attribute { + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="seq_attribute") + private Long id; + + + @Column(nullable = false) private String name; - private String quantity; + + @Column(nullable = false) + private Long quantity; public String getName() { return name; @@ -28,11 +64,11 @@ public class Attribute { this.name = name; } - public String getQuantity() { + public Long getQuantity() { return quantity; } - public void setQuantity(String quantity) { + public void setQuantity(Long quantity) { this.quantity = quantity; } diff --git a/proxy/src/main/java/org/fedoraproject/candlepin/model/EntitlementPool.java b/proxy/src/main/java/org/fedoraproject/candlepin/model/EntitlementPool.java index a10a620..2edc8a7 100644 --- a/proxy/src/main/java/org/fedoraproject/candlepin/model/EntitlementPool.java +++ b/proxy/src/main/java/org/fedoraproject/candlepin/model/EntitlementPool.java @@ -24,6 +24,8 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.ManyToMany; +import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Transient; @@ -72,7 +74,9 @@ public class EntitlementPool implements Persisted { @Column(nullable = false) private Date endDate; - @Transient + @OneToMany +// @ForeignKey(name = "fk_entitlement_pool_attribute") + @JoinColumn(name = "attribute_id") private Set<Attribute> attributes; public EntitlementPool() { diff --git a/proxy/src/main/java/org/fedoraproject/candlepin/model/Product.java b/proxy/src/main/java/org/fedoraproject/candlepin/model/Product.java index 183a4b9..be179d3 100644 --- a/proxy/src/main/java/org/fedoraproject/candlepin/model/Product.java +++ b/proxy/src/main/java/org/fedoraproject/candlepin/model/Product.java @@ -28,7 +28,6 @@ import javax.persistence.JoinTable; import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; -import javax.persistence.Transient; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; @@ -66,7 +65,9 @@ public class Product implements Persisted { inverseJoinColumns = @JoinColumn(name = "CHILD_PRODUCT_ID")) private Set<Product> childProducts; - @Transient + + @OneToMany + @JoinColumn(name = "attribute_id") private Set<Attribute> attributes; /** diff --git a/proxy/src/test/java/org/fedoraproject/candlepin/model/test/AttributeTest.java b/proxy/src/test/java/org/fedoraproject/candlepin/model/test/AttributeTest.java new file mode 100644 index 0000000..800de8e --- /dev/null +++ b/proxy/src/test/java/org/fedoraproject/candlepin/model/test/AttributeTest.java @@ -0,0 +1,58 @@ +package org.fedoraproject.candlepin.model.test; + +import org.fedoraproject.candlepin.test.DatabaseTestFixture; + +import org.fedoraproject.candlepin.model.Attribute; + +import org.junit.Before; +import org.junit.Test; +import static org.junit.Assert.*; + +public class AttributeTest extends DatabaseTestFixture { + + + @Before + public void setupTestObjects() { + String some_attribute = "canEatCheese"; + } + + @Test + public void testCreateAttr() { + Attribute newAttr = new Attribute(); + + } + + @Test + public void testAttributeSetName() { + Attribute newAttr = new Attribute(); + newAttr.setName("OwesUsMoney"); + } + + + @Test + public void testAttributeGetName() { + Attribute newAttr = new Attribute(); + String some_name = "OwesUsMoney"; + + newAttr.setName(some_name); + assertEquals(some_name, newAttr.getName()); + } + + @Test + public void testAttributeSetQuantity() { + Attribute newAttr = new Attribute(); + Long some_number = new Long(100); + newAttr.setQuantity(some_number); + } + + + @Test + public void testAttributeGetQuantity() { + Attribute newAttr = new Attribute(); + Long some_number = new Long(200); + + newAttr.setQuantity(some_number); + assertEquals(some_number, newAttr.getQuantity()); + } + +}
\ No newline at end of file |