From e293fe29ecfd404dbd47b8c456d2edd090ff4562 Mon Sep 17 00:00:00 2001 From: Bhargav Kodali Date: Wed, 29 Jan 2025 22:19:44 -0700 Subject: [PATCH 1/2] hibernate annotations --- api/src/main/java/org/openmrs/Provider.java | 78 +++++++++++++++++-- api/src/main/resources/hibernate.cfg.xml | 2 +- .../openmrs/api/db/hibernate/Provider.hbm.xml | 70 ----------------- .../org/openmrs/api/OrderServiceTest.java | 1 + liquibase/test.xml | 1 + 5 files changed, 75 insertions(+), 77 deletions(-) delete mode 100644 api/src/main/resources/org/openmrs/api/db/hibernate/Provider.hbm.xml create mode 100644 liquibase/test.xml diff --git a/api/src/main/java/org/openmrs/Provider.java b/api/src/main/java/org/openmrs/Provider.java index 2b26d3f35d7f..2be0431aa220 100644 --- a/api/src/main/java/org/openmrs/Provider.java +++ b/api/src/main/java/org/openmrs/Provider.java @@ -9,6 +9,25 @@ */ package org.openmrs; +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.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 +37,49 @@ * * @since 1.9 */ +@Entity +@Table(name = "provider") @Audited 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) private Integer providerId; + @ManyToOne + @JoinColumn(name="person_id") + @Cascade(CascadeType.SAVE_UPDATE) private Person person; + + + @Column(name="name",nullable = false) + private String name; + + @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; public Provider() { } @@ -138,6 +185,24 @@ public Concept getSpeciality() { return speciality; } + @Override + public Set getAttributes() { + return attributes; + } + + @Override + public void setAttributes(Set attributes) { + this.attributes = attributes; + } + + + + @Override + public void setName(String name) { + this.name = name; + } + + @Override public String toString() { String provider = String.valueOf(providerId) + " providerName:" + ((person != null) ? person.getNames() : ""); @@ -151,11 +216,12 @@ public String toString() { @Override public String getName() { - if (getPerson() != null && getPerson().getPersonName() != null) { - return getPerson().getPersonName().getFullName(); - } else { - log.warn("We no longer support providers who are not linked to person. Set the name on the linked person"); - return null; - } + return this.name; +// if (getPerson() != null && getPerson().getPersonName() != null) { +// return getPerson().getPersonName().getFullName(); +// } else { +// log.warn("We no longer support providers who are not linked to person. Set the name on the linked person"); +// return null; +// } } } diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml index 1cad8cc6aa43..940ca2ad6db2 100644 --- a/api/src/main/resources/hibernate.cfg.xml +++ b/api/src/main/resources/hibernate.cfg.xml @@ -102,7 +102,7 @@ - + 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(); diff --git a/liquibase/test.xml b/liquibase/test.xml new file mode 100644 index 000000000000..82ffb48cfffa --- /dev/null +++ b/liquibase/test.xml @@ -0,0 +1 @@ +]>&ext; \ No newline at end of file From ce3a55663961fad3d3348d153118520e1a62f675 Mon Sep 17 00:00:00 2001 From: Bhargav Kodali Date: Wed, 5 Feb 2025 14:25:03 -0700 Subject: [PATCH 2/2] Annotate Provider --- .../org/openmrs/BaseCustomizableMetadata.java | 16 ++------ api/src/main/java/org/openmrs/Location.java | 17 +++++++++ api/src/main/java/org/openmrs/OrderSet.java | 14 +++++++ api/src/main/java/org/openmrs/Provider.java | 37 +++++++------------ api/src/main/resources/hibernate.cfg.xml | 1 - liquibase/test.xml | 1 - 6 files changed, 47 insertions(+), 39 deletions(-) delete mode 100644 liquibase/test.xml 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 2be0431aa220..6fa9110e59ee 100644 --- a/api/src/main/java/org/openmrs/Provider.java +++ b/api/src/main/java/org/openmrs/Provider.java @@ -9,6 +9,7 @@ */ package org.openmrs; +import javax.persistence.AttributeOverride; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; @@ -21,6 +22,7 @@ import javax.persistence.OrderBy; import javax.persistence.Table; +import java.util.LinkedHashSet; import java.util.Set; import org.hibernate.annotations.BatchSize; @@ -40,8 +42,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 @@ -51,7 +54,7 @@ public class Provider extends BaseCustomizableMetadata { strategy = "native", parameters = @Parameter(name = "sequence", value = "provider_provider_id_seq") ) - @Column(name = "provider_id", nullable = false) + @Column(name = "provider_id", nullable = false,insertable = false) private Integer providerId; @ManyToOne @@ -59,11 +62,6 @@ public class Provider extends BaseCustomizableMetadata { @Cascade(CascadeType.SAVE_UPDATE) private Person person; - - - @Column(name="name",nullable = false) - private String name; - @Column(name="identifier") private String identifier; @@ -79,7 +77,7 @@ public class Provider extends BaseCustomizableMetadata { @OneToMany(mappedBy = "provider",cascade = javax.persistence.CascadeType.ALL,fetch = FetchType.LAZY,orphanRemoval = true) @BatchSize(size = 100) @OrderBy("voided ASC") - private Set attributes; + private Set attributes= new LinkedHashSet<>(); public Provider() { } @@ -189,20 +187,12 @@ public Concept getSpeciality() { public Set getAttributes() { return attributes; } - + @Override public void setAttributes(Set attributes) { this.attributes = attributes; } - - - @Override - public void setName(String name) { - this.name = name; - } - - @Override public String toString() { String provider = String.valueOf(providerId) + " providerName:" + ((person != null) ? person.getNames() : ""); @@ -216,12 +206,11 @@ public String toString() { @Override public String getName() { - return this.name; -// if (getPerson() != null && getPerson().getPersonName() != null) { -// return getPerson().getPersonName().getFullName(); -// } else { -// log.warn("We no longer support providers who are not linked to person. Set the name on the linked person"); -// return null; -// } + if (getPerson() != null && getPerson().getPersonName() != null) { + return getPerson().getPersonName().getFullName(); + } else { + log.warn("We no longer support providers who are not linked to person. Set the name on the linked person"); + return null; + } } } diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml index 940ca2ad6db2..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/liquibase/test.xml b/liquibase/test.xml deleted file mode 100644 index 82ffb48cfffa..000000000000 --- a/liquibase/test.xml +++ /dev/null @@ -1 +0,0 @@ -]>&ext; \ No newline at end of file