diff --git a/api/src/main/java/org/openmrs/BaseCustomizableMetadata.java b/api/src/main/java/org/openmrs/BaseCustomizableMetadata.java
index 673dbfc4600a..20ed98722a96 100644
--- a/api/src/main/java/org/openmrs/BaseCustomizableMetadata.java
+++ b/api/src/main/java/org/openmrs/BaseCustomizableMetadata.java
@@ -36,26 +36,16 @@
@Audited
public abstract class BaseCustomizableMetadata extends BaseChangeableOpenmrsMetadata implements Customizable {
- @OrderBy("voided asc")
- @BatchSize(size = 100)
- @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
- @JoinColumn(name = "location_id")
- private Set attributes = new LinkedHashSet<>();
-
/**
* @see org.openmrs.customdatatype.Customizable#getAttributes()
*/
@Override
- public Set getAttributes() {
- return attributes;
- }
-
+ public abstract Set getAttributes();
/**
* @param attributes the attributes to set
*/
- public void setAttributes(Set attributes) {
- this.attributes = attributes;
- }
+ public abstract void setAttributes(Set attributes);
+
/**
* @see org.openmrs.customdatatype.Customizable#getActiveAttributes()
diff --git a/api/src/main/java/org/openmrs/Location.java b/api/src/main/java/org/openmrs/Location.java
index ed5f00ddc52a..a54c8347ecef 100644
--- a/api/src/main/java/org/openmrs/Location.java
+++ b/api/src/main/java/org/openmrs/Location.java
@@ -34,6 +34,7 @@
import javax.persistence.Table;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@@ -148,6 +149,12 @@ public class Location extends BaseCustomizableMetadata implem
@Independent
private Set tags;
+ @OrderBy("voided asc")
+ @BatchSize(size = 100)
+ @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
+ @JoinColumn(name = "location_id")
+ private Set attributes = new LinkedHashSet<>();
+
// Constructors
/** default constructor */
@@ -852,4 +859,14 @@ public String getAddress15() {
public void setAddress15(String address15) {
this.address15 = address15;
}
+
+ @Override
+ public Set getAttributes() {
+ return attributes;
+ }
+
+ @Override
+ public void setAttributes(Set attributes) {
+ this.attributes = attributes;
+ }
}
diff --git a/api/src/main/java/org/openmrs/OrderSet.java b/api/src/main/java/org/openmrs/OrderSet.java
index b8d904aff6e8..c18577871184 100644
--- a/api/src/main/java/org/openmrs/OrderSet.java
+++ b/api/src/main/java/org/openmrs/OrderSet.java
@@ -10,7 +10,9 @@
package org.openmrs;
import java.util.ArrayList;
+import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Set;
import org.hibernate.envers.Audited;
import org.openmrs.api.APIException;
@@ -43,6 +45,8 @@ public enum Operator {
private List orderSetMembers;
private Concept category;
+
+ private Set attributes= new LinkedHashSet<>();
/**
* Gets the orderSetId
@@ -204,4 +208,14 @@ public void retireOrderSetMember(OrderSetMember orderSetMember) {
orderSetMember.setRetired(true);
}
+ @Override
+ public Set getAttributes() {
+ return attributes;
+ }
+
+ @Override
+ public void setAttributes(Set attributes) {
+ this.attributes = attributes;
+ }
+
}
diff --git a/api/src/main/java/org/openmrs/Provider.java b/api/src/main/java/org/openmrs/Provider.java
index 2b26d3f35d7f..6fa9110e59ee 100644
--- a/api/src/main/java/org/openmrs/Provider.java
+++ b/api/src/main/java/org/openmrs/Provider.java
@@ -9,6 +9,27 @@
*/
package org.openmrs;
+import javax.persistence.AttributeOverride;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import org.hibernate.annotations.BatchSize;
+import org.hibernate.annotations.Cascade;
+import org.hibernate.annotations.CascadeType;
+import org.hibernate.annotations.GenericGenerator;
+import org.hibernate.annotations.Parameter;
import org.hibernate.envers.Audited;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,21 +39,45 @@
*
* @since 1.9
*/
+@Entity
+@Table(name = "provider")
@Audited
+@AttributeOverride(name = "name", column = @Column(name = "name"))
public class Provider extends BaseCustomizableMetadata {
-
+
private static final Logger log = LoggerFactory.getLogger(Provider.class);
+ @Id
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "provider_id_seq")
+ @GenericGenerator(
+ name = "provider_id_seq",
+ strategy = "native",
+ parameters = @Parameter(name = "sequence", value = "provider_provider_id_seq")
+ )
+ @Column(name = "provider_id", nullable = false,insertable = false)
private Integer providerId;
+ @ManyToOne
+ @JoinColumn(name="person_id")
+ @Cascade(CascadeType.SAVE_UPDATE)
private Person person;
+ @Column(name="identifier")
private String identifier;
+ @ManyToOne
+ @JoinColumn(name="role_id")
private Concept role;
+ @ManyToOne
+ @JoinColumn(name="speciality_id")
private Concept speciality;
+
+ @OneToMany(mappedBy = "provider",cascade = javax.persistence.CascadeType.ALL,fetch = FetchType.LAZY,orphanRemoval = true)
+ @BatchSize(size = 100)
+ @OrderBy("voided ASC")
+ private Set attributes= new LinkedHashSet<>();
public Provider() {
}
@@ -138,6 +183,16 @@ public Concept getSpeciality() {
return speciality;
}
+ @Override
+ public Set getAttributes() {
+ return attributes;
+ }
+
+ @Override
+ public void setAttributes(Set attributes) {
+ this.attributes = attributes;
+ }
+
@Override
public String toString() {
String provider = String.valueOf(providerId) + " providerName:" + ((person != null) ? person.getNames() : "");
diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml
index 1cad8cc6aa43..3514c653843e 100644
--- a/api/src/main/resources/hibernate.cfg.xml
+++ b/api/src/main/resources/hibernate.cfg.xml
@@ -102,7 +102,6 @@
-
diff --git a/api/src/main/resources/org/openmrs/api/db/hibernate/Provider.hbm.xml b/api/src/main/resources/org/openmrs/api/db/hibernate/Provider.hbm.xml
deleted file mode 100644
index 8c2d3facfa28..000000000000
--- a/api/src/main/resources/org/openmrs/api/db/hibernate/Provider.hbm.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- provider_provider_id_seq
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/api/src/test/java/org/openmrs/api/OrderServiceTest.java b/api/src/test/java/org/openmrs/api/OrderServiceTest.java
index 12f636a67082..8668f6c441f7 100644
--- a/api/src/test/java/org/openmrs/api/OrderServiceTest.java
+++ b/api/src/test/java/org/openmrs/api/OrderServiceTest.java
@@ -2742,6 +2742,7 @@ public void saveOrder_shouldFailIfTheJavaTypeOfThePreviousOrderDoesNotMatch() th
.addAnnotatedClass(ProgramAttributeType.class)
.addAnnotatedClass(HL7InError.class)
.addAnnotatedClass(OrderType.class)
+ .addAnnotatedClass(Provider.class)
.getMetadataBuilder().build();