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();