summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Likins <adrian@alikins.usersys.redhat.com>2010-01-12 14:55:51 -0500
committerAdrian Likins <adrian@alikins.usersys.redhat.com>2010-01-12 14:55:51 -0500
commit3efdc75ab04a5d5f1d547ea23fdc8459c368130c (patch)
tree635678ab41c8d99235d3754a1996b112a7c9d1cd
parent939fee56c640dda3caffe718133ffdbd84370700 (diff)
downloadcandlepin-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
-rw-r--r--proxy/src/main/java/org/fedoraproject/candlepin/model/Attribute.java42
-rw-r--r--proxy/src/main/java/org/fedoraproject/candlepin/model/EntitlementPool.java6
-rw-r--r--proxy/src/main/java/org/fedoraproject/candlepin/model/Product.java5
-rw-r--r--proxy/src/test/java/org/fedoraproject/candlepin/model/test/AttributeTest.java58
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