diff --git a/api/src/main/java/org/openmrs/ProgramWorkflow.java b/api/src/main/java/org/openmrs/ProgramWorkflow.java index 93715d068092..ecaff1ce6d62 100644 --- a/api/src/main/java/org/openmrs/ProgramWorkflow.java +++ b/api/src/main/java/org/openmrs/ProgramWorkflow.java @@ -20,10 +20,25 @@ import org.hibernate.envers.Audited; import org.openmrs.util.NaturalStrings; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OrderBy; +import jakarta.persistence.Table; + /** * ProgramWorkflow */ @Audited +@Entity +@Table(name = "program_workflow") public class ProgramWorkflow extends BaseChangeableOpenmrsMetadata { private static final long serialVersionUID = 1L; @@ -31,13 +46,23 @@ public class ProgramWorkflow extends BaseChangeableOpenmrsMetadata { // ****************** // Properties // ****************** - + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "program_workflow_id") private Integer programWorkflowId; - + @ManyToOne + @JoinColumn(name = "program_id" ,nullable = false) private Program program; - + @ManyToOne + @JoinColumn(name = "concept_id" ,nullable = false) private Concept concept; - + @OneToMany( + mappedBy = "programWorkflow", + fetch = FetchType.EAGER, + cascade = CascadeType.ALL, + orphanRemoval = true + ) + @OrderBy("date_created asc") private Set states = new HashSet<>(); // ****************** diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml index b385d106a5c5..b354855643d2 100644 --- a/api/src/main/resources/hibernate.cfg.xml +++ b/api/src/main/resources/hibernate.cfg.xml @@ -56,7 +56,6 @@ - diff --git a/api/src/main/resources/org/openmrs/api/db/hibernate/ProgramWorkflow.hbm.xml b/api/src/main/resources/org/openmrs/api/db/hibernate/ProgramWorkflow.hbm.xml deleted file mode 100644 index f2973faa0b4b..000000000000 --- a/api/src/main/resources/org/openmrs/api/db/hibernate/ProgramWorkflow.hbm.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - program_workflow_program_workflow_id_seq - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/src/main/resources/org/openmrs/liquibase/updates/liquibase-update-to-latest-3.0.x.xml b/api/src/main/resources/org/openmrs/liquibase/updates/liquibase-update-to-latest-3.0.x.xml index 2819a27df584..3669530d25b8 100644 --- a/api/src/main/resources/org/openmrs/liquibase/updates/liquibase-update-to-latest-3.0.x.xml +++ b/api/src/main/resources/org/openmrs/liquibase/updates/liquibase-update-to-latest-3.0.x.xml @@ -53,6 +53,15 @@ + + + + + + + + + diff --git a/api/src/test/java/org/openmrs/api/OrderServiceTest.java b/api/src/test/java/org/openmrs/api/OrderServiceTest.java index b0723b811df4..3bd3a86738bc 100644 --- a/api/src/test/java/org/openmrs/api/OrderServiceTest.java +++ b/api/src/test/java/org/openmrs/api/OrderServiceTest.java @@ -70,6 +70,7 @@ import org.openmrs.Privilege; import org.openmrs.Program; import org.openmrs.ProgramAttributeType; +import org.openmrs.ProgramWorkflow; import org.openmrs.Provider; import org.openmrs.ProviderAttributeType; import org.openmrs.ProviderRole; @@ -2790,6 +2791,7 @@ public void saveOrder_shouldFailIfTheJavaTypeOfThePreviousOrderDoesNotMatch() th .addAnnotatedClass(LocationTag.class) .addAnnotatedClass(org.openmrs.Field.class) .addAnnotatedClass(Privilege.class) + .addAnnotatedClass(ProgramWorkflow.class) .getMetadataBuilder().build(); diff --git a/api/src/test/java/org/openmrs/api/ProgramWorkflowServiceTest.java b/api/src/test/java/org/openmrs/api/ProgramWorkflowServiceTest.java index 8b4fef4d74ce..2ccdf96d44ba 100644 --- a/api/src/test/java/org/openmrs/api/ProgramWorkflowServiceTest.java +++ b/api/src/test/java/org/openmrs/api/ProgramWorkflowServiceTest.java @@ -171,10 +171,12 @@ public void savePatientProgram_shouldSetEndDateOfAllRecentStatesWhenCompletingTh program.setConcept(cs.getConcept(3)); ProgramWorkflow workflow1 = new ProgramWorkflow(); + workflow1.setName("WORKFLOW1 NAME"); workflow1.setConcept(cs.getConcept(4)); program.addWorkflow(workflow1); ProgramWorkflow workflow2 = new ProgramWorkflow(); + workflow2.setName("WORKFLOW2 NAME"); workflow2.setConcept(cs.getConcept(4)); program.addWorkflow(workflow2); @@ -281,14 +283,17 @@ public void savePatientProgram_shouldSetEndDateOfAllRecentStatesOnTransitionToTe program.setConcept(cs.getConcept(3)); ProgramWorkflow workflow1 = new ProgramWorkflow(); + workflow1.setName("WORKFLOW1 NAME"); workflow1.setConcept(cs.getConcept(4)); program.addWorkflow(workflow1); ProgramWorkflow workflow2 = new ProgramWorkflow(); + workflow2.setName("WORKFLOW2 NAME"); workflow2.setConcept(cs.getConcept(4)); program.addWorkflow(workflow2); ProgramWorkflow workflow3 = new ProgramWorkflow(); + workflow3.setName("WORKFLOW3 NAME"); workflow3.setConcept(cs.getConcept(4)); program.addWorkflow(workflow3); @@ -398,6 +403,7 @@ public void saveProgram_shouldCreateProgramWorkflows() { program.setConcept(cs.getConcept(3)); ProgramWorkflow workflow = new ProgramWorkflow(); + workflow.setName("WORKFLOW NAME"); workflow.setConcept(cs.getConcept(4)); program.addWorkflow(workflow); diff --git a/api/src/test/resources/org/openmrs/api/include/ConceptServiceTest-numerics.xml b/api/src/test/resources/org/openmrs/api/include/ConceptServiceTest-numerics.xml index c5e1a1654ad7..442abbb5efa6 100644 --- a/api/src/test/resources/org/openmrs/api/include/ConceptServiceTest-numerics.xml +++ b/api/src/test/resources/org/openmrs/api/include/ConceptServiceTest-numerics.xml @@ -380,15 +380,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/api/src/test/resources/org/openmrs/api/include/ProgramWorkflowServiceTest-otherProgramWorkflows.xml b/api/src/test/resources/org/openmrs/api/include/ProgramWorkflowServiceTest-otherProgramWorkflows.xml index 44a95f315b81..d8ddbafe75f7 100644 --- a/api/src/test/resources/org/openmrs/api/include/ProgramWorkflowServiceTest-otherProgramWorkflows.xml +++ b/api/src/test/resources/org/openmrs/api/include/ProgramWorkflowServiceTest-otherProgramWorkflows.xml @@ -11,6 +11,6 @@ --> - + diff --git a/api/src/test/resources/org/openmrs/include/standardTestDataset.xml b/api/src/test/resources/org/openmrs/include/standardTestDataset.xml index 77b0acf426a8..8e87e4661cac 100644 --- a/api/src/test/resources/org/openmrs/include/standardTestDataset.xml +++ b/api/src/test/resources/org/openmrs/include/standardTestDataset.xml @@ -407,8 +407,8 @@ - - + + diff --git a/api/src/test/resources/org/openmrs/util/databasechange/standardTest-1.9.7-dataSet.xml b/api/src/test/resources/org/openmrs/util/databasechange/standardTest-1.9.7-dataSet.xml index 4b5dd88a5dd4..44dd02f70859 100644 --- a/api/src/test/resources/org/openmrs/util/databasechange/standardTest-1.9.7-dataSet.xml +++ b/api/src/test/resources/org/openmrs/util/databasechange/standardTest-1.9.7-dataSet.xml @@ -240,8 +240,8 @@ - - + +