From 8d07f6755b2a3a3d7e5bed2e3dbecd6bb2646ed9 Mon Sep 17 00:00:00 2001 From: ManojLL Date: Sun, 27 Oct 2024 11:31:21 +0530 Subject: [PATCH 1/4] TRUNK-6280: Migrate GlobalProperty from Hibernate Mapping XML to JPA annotations --- .../main/java/org/openmrs/GlobalProperty.java | 31 +++++++++++ api/src/main/resources/hibernate.cfg.xml | 1 - .../api/db/hibernate/GlobalProperty.hbm.xml | 54 ------------------- .../org/openmrs/api/OrderServiceTest.java | 1 + 4 files changed, 32 insertions(+), 55 deletions(-) delete mode 100644 api/src/main/resources/org/openmrs/api/db/hibernate/GlobalProperty.hbm.xml diff --git a/api/src/main/java/org/openmrs/GlobalProperty.java b/api/src/main/java/org/openmrs/GlobalProperty.java index ce7b503b2eae..68c89152c6d3 100644 --- a/api/src/main/java/org/openmrs/GlobalProperty.java +++ b/api/src/main/java/org/openmrs/GlobalProperty.java @@ -12,48 +12,79 @@ import java.util.Date; import org.codehaus.jackson.annotate.JsonIgnore; +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.envers.Audited; import org.openmrs.customdatatype.CustomDatatype; import org.openmrs.customdatatype.CustomDatatypeUtil; import org.openmrs.customdatatype.CustomValueDescriptor; import org.openmrs.customdatatype.SingleCustomValue; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Transient; + /** * Global properties are simple key-value pairs persisted in the database GPs can be thought of as * something similar to environment variables used in operating systems. */ +@Entity +@Table(name = "global_property") +@Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @Audited public class GlobalProperty extends BaseOpenmrsObject implements CustomValueDescriptor, SingleCustomValue { private static final long serialVersionUID = 1L; + @Id + @Column(name = "property", nullable = false, length = 255) private String property = ""; + @Column(name = "property_value", columnDefinition = "TEXT", length = 65535) private String propertyValue = ""; private transient Object typedValue; // if true, indicates that setValue has been called, and we need to invoke CustomDatatype's save + @Transient private boolean dirty = false; + @Column(name = "description", columnDefinition = "TEXT", length = 65535) private String description = ""; + @Column(name = "datatype", length = 255) private String datatypeClassname; + @Column(name = "datatype_config", columnDefinition = "TEXT", length = 65535) private String datatypeConfig; + @Column(name = "preferred_handler", length = 255) private String preferredHandlerClassname; + @Column(name = "handler_config", columnDefinition = "TEXT", length = 65535) private String handlerConfig; + @ManyToOne + @JoinColumn(name = "changed_by") private User changedBy; + @Column(name = "date_changed") private Date dateChanged; + @ManyToOne + @JoinColumn(name = "view_privilege") private Privilege viewPrivilege; + @ManyToOne + @JoinColumn(name = "edit_privilege") private Privilege editPrivilege; + @ManyToOne + @JoinColumn(name = "delete_privilege") private Privilege deletePrivilege; diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml index 05e1299293e4..e0c0f579d7cf 100644 --- a/api/src/main/resources/hibernate.cfg.xml +++ b/api/src/main/resources/hibernate.cfg.xml @@ -49,7 +49,6 @@ - diff --git a/api/src/main/resources/org/openmrs/api/db/hibernate/GlobalProperty.hbm.xml b/api/src/main/resources/org/openmrs/api/db/hibernate/GlobalProperty.hbm.xml deleted file mode 100644 index e67ea95d39e6..000000000000 --- a/api/src/main/resources/org/openmrs/api/db/hibernate/GlobalProperty.hbm.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/src/test/java/org/openmrs/api/OrderServiceTest.java b/api/src/test/java/org/openmrs/api/OrderServiceTest.java index 60b6ad9516c8..400adaa3ec56 100644 --- a/api/src/test/java/org/openmrs/api/OrderServiceTest.java +++ b/api/src/test/java/org/openmrs/api/OrderServiceTest.java @@ -2739,6 +2739,7 @@ public void saveOrder_shouldFailIfTheJavaTypeOfThePreviousOrderDoesNotMatch() th .addAnnotatedClass(PatientIdentifierType.class) .addAnnotatedClass(ProgramAttributeType.class) .addAnnotatedClass(HL7InError.class) + .addAnnotatedClass(GlobalProperty.class) .getMetadataBuilder().build(); From bfab6da0ca4f370891553789eee564a1ab2344e8 Mon Sep 17 00:00:00 2001 From: ManojLL Date: Sun, 27 Oct 2024 12:02:24 +0530 Subject: [PATCH 2/4] TRUNK-6280: added @Lob annotation --- api/src/main/java/org/openmrs/GlobalProperty.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/api/src/main/java/org/openmrs/GlobalProperty.java b/api/src/main/java/org/openmrs/GlobalProperty.java index 68c89152c6d3..ad2430f4cddc 100644 --- a/api/src/main/java/org/openmrs/GlobalProperty.java +++ b/api/src/main/java/org/openmrs/GlobalProperty.java @@ -24,6 +24,7 @@ import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; +import javax.persistence.Lob; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Transient; @@ -45,8 +46,10 @@ public class GlobalProperty extends BaseOpenmrsObject implements CustomValueDesc private String property = ""; @Column(name = "property_value", columnDefinition = "TEXT", length = 65535) + @Lob private String propertyValue = ""; + @Transient private transient Object typedValue; // if true, indicates that setValue has been called, and we need to invoke CustomDatatype's save @@ -54,18 +57,21 @@ public class GlobalProperty extends BaseOpenmrsObject implements CustomValueDesc private boolean dirty = false; @Column(name = "description", columnDefinition = "TEXT", length = 65535) + @Lob private String description = ""; @Column(name = "datatype", length = 255) private String datatypeClassname; @Column(name = "datatype_config", columnDefinition = "TEXT", length = 65535) + @Lob private String datatypeConfig; @Column(name = "preferred_handler", length = 255) private String preferredHandlerClassname; @Column(name = "handler_config", columnDefinition = "TEXT", length = 65535) + @Lob private String handlerConfig; @ManyToOne From 89f02ec6fe84221c0788da97a1a95fab258804c6 Mon Sep 17 00:00:00 2001 From: ManojLL Date: Sun, 27 Oct 2024 14:49:30 +0530 Subject: [PATCH 3/4] TRUNK-6280: Remove length attribute from text data type --- api/src/main/java/org/openmrs/GlobalProperty.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/org/openmrs/GlobalProperty.java b/api/src/main/java/org/openmrs/GlobalProperty.java index ad2430f4cddc..cf402125c13c 100644 --- a/api/src/main/java/org/openmrs/GlobalProperty.java +++ b/api/src/main/java/org/openmrs/GlobalProperty.java @@ -45,32 +45,31 @@ public class GlobalProperty extends BaseOpenmrsObject implements CustomValueDesc @Column(name = "property", nullable = false, length = 255) private String property = ""; - @Column(name = "property_value", columnDefinition = "TEXT", length = 65535) + @Column(name = "property_value", columnDefinition = "TEXT") @Lob private String propertyValue = ""; - @Transient private transient Object typedValue; // if true, indicates that setValue has been called, and we need to invoke CustomDatatype's save @Transient private boolean dirty = false; - @Column(name = "description", columnDefinition = "TEXT", length = 65535) + @Column(name = "description", columnDefinition = "TEXT") @Lob private String description = ""; @Column(name = "datatype", length = 255) private String datatypeClassname; - @Column(name = "datatype_config", columnDefinition = "TEXT", length = 65535) + @Column(name = "datatype_config", columnDefinition = "TEXT") @Lob private String datatypeConfig; @Column(name = "preferred_handler", length = 255) private String preferredHandlerClassname; - @Column(name = "handler_config", columnDefinition = "TEXT", length = 65535) + @Column(name = "handler_config", columnDefinition = "TEXT") @Lob private String handlerConfig; @@ -78,7 +77,7 @@ public class GlobalProperty extends BaseOpenmrsObject implements CustomValueDesc @JoinColumn(name = "changed_by") private User changedBy; - @Column(name = "date_changed") + @Column(name = "date_changed", length=19) private Date dateChanged; @ManyToOne From ca9d66227eda5d482451b64b9231d9ea8933ab42 Mon Sep 17 00:00:00 2001 From: ManojLL Date: Sun, 27 Oct 2024 14:53:04 +0530 Subject: [PATCH 4/4] TRUNK-6280: Remove length attribute from dateChange property --- api/src/main/java/org/openmrs/GlobalProperty.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/org/openmrs/GlobalProperty.java b/api/src/main/java/org/openmrs/GlobalProperty.java index cf402125c13c..00f0c80fd095 100644 --- a/api/src/main/java/org/openmrs/GlobalProperty.java +++ b/api/src/main/java/org/openmrs/GlobalProperty.java @@ -77,7 +77,7 @@ public class GlobalProperty extends BaseOpenmrsObject implements CustomValueDesc @JoinColumn(name = "changed_by") private User changedBy; - @Column(name = "date_changed", length=19) + @Column(name = "date_changed") private Date dateChanged; @ManyToOne