summaryrefslogtreecommitdiffstats
path: root/proxy/src/main/java/org/fedoraproject/candlepin/model
diff options
context:
space:
mode:
Diffstat (limited to 'proxy/src/main/java/org/fedoraproject/candlepin/model')
-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
3 files changed, 47 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;
/**