Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 74 additions & 13 deletions api/src/main/java/org/openmrs/FormField.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,21 @@

import java.io.Serializable;
import java.util.Comparator;
import java.util.Date;

import jakarta.persistence.AttributeOverride;
import jakarta.persistence.AttributeOverrides;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.PrePersist;
import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.hibernate.envers.Audited;

Expand All @@ -24,38 +38,74 @@
* @see org.openmrs.Field
*/
@Audited
@Entity
@Table(name = "form_field")
@AttributeOverrides({
@AttributeOverride(name = "retired", column = @Column(name = "retired", nullable = true)),
@AttributeOverride(name = "name", column = @Column(name = "name", insertable = false, updatable = false)),
@AttributeOverride(name = "description", column = @Column(name = "description", insertable = false, updatable = false))
})
public class FormField extends BaseChangeableOpenmrsMetadata implements java.io.Serializable, Comparable<FormField> {

public static final long serialVersionUID = 3456L;

// Fields


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "form_field_id", nullable = false)
protected Integer formFieldId;


@ManyToOne
@JoinColumn(name = "parent_form_field")
protected FormField parent;


@ManyToOne(optional = false)
@JoinColumn(name = "form_id", nullable = false)
protected Form form;


@ManyToOne
@JoinColumn(name = "field_id", nullable = false)
@org.hibernate.annotations.NotFound(action = org.hibernate.annotations.NotFoundAction.IGNORE)
@org.hibernate.annotations.Cascade({})
protected Field field;


@Column(name = "field_number", length = 11)
protected Integer fieldNumber;


@Column(name = "field_part", length = 5)
protected String fieldPart;


@Column(name = "page_number", length = 11)
protected Integer pageNumber;

protected Integer minOccurs;


@Column(name = "min_occurs", length = 11, nullable = false, insertable = true)
protected Integer minOccurs = 0;

@Column(name = "max_occurs", length = 11)
protected Integer maxOccurs;


@Column(name = "required", nullable = false)
protected Boolean required = false;


@Column(name = "sort_weight")
protected Float sortWeight;


@Column(name = "name")
private String name;

@Column(name = "description")
private String description;

@Column(name = "date_retired")
private Date dateRetired;

// Constructors

/** default constructor */
public FormField() {
this.minOccurs = 0;
this.maxOccurs = 1;
}

/** constructor with id */
Expand Down Expand Up @@ -344,4 +394,15 @@ public int compare(FormField ff1, FormField ff2) {
return ff1.getFormFieldId().compareTo(ff2.getFormFieldId());
}
}

@PrePersist
@PreUpdate
protected void ensureDefaults() {
if (this.minOccurs == null) {
this.minOccurs = 0;
}
if (this.maxOccurs == null) {
this.maxOccurs = 1;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,9 @@ public void deleteField(Field field) throws DAOException {
*/
@Override
public FormField saveFormField(FormField formField) throws DAOException {
if (formField.getField() != null) {
sessionFactory.getCurrentSession().saveOrUpdate(formField.getField());
}
sessionFactory.getCurrentSession().saveOrUpdate(formField);
return formField;
}
Expand Down
1 change: 0 additions & 1 deletion api/src/main/resources/hibernate.cfg.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
<mapping resource="org/openmrs/api/db/hibernate/DiagnosisAttributeType.hbm.xml" />
<mapping resource="org/openmrs/api/db/hibernate/FieldType.hbm.xml" />
<mapping resource="org/openmrs/api/db/hibernate/Form.hbm.xml" />
<mapping resource="org/openmrs/api/db/hibernate/FormField.hbm.xml" />
<mapping resource="org/openmrs/api/db/hibernate/GlobalProperty.hbm.xml" />
<mapping resource="org/openmrs/api/db/hibernate/Obs.hbm.xml" />
<mapping resource="org/openmrs/api/db/hibernate/Person.hbm.xml" />
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,23 @@
<modifyDataType tableName="concept_reference_range" columnName="criteria" newDataType="TEXT" />
</changeSet>

<changeSet id="TRUNK-5822-add-columns-to-form-field" author="pidson">
<addColumn tableName="form_field">
<column name="name" type="varchar(255)"/>
<column name="description" type="varchar(255)"/>
<column name="retired" type="bit"/>
<column name="retired_by" type="int"/>
<column name="retire_reason" type="varchar(255)"/>
<column name="date_retired" type="datetime"/>
</addColumn>

<addForeignKeyConstraint
baseTableName="form_field"
baseColumnNames="retired_by"
referencedTableName="users"
referencedColumnNames="user_id"
constraintName="fk_form_field_retired_by"
onDelete="SET NULL"/>
</changeSet>

</databaseChangeLog>
26 changes: 26 additions & 0 deletions api/src/test/java/org/openmrs/api/FormServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,8 @@ public void saveFormField_shouldPropagateSaveToTheFieldPropertyOnTheGivenFormFie
field.setName("This is a new field");
field.setDescription("It should be saved along with the formField");
field.setFieldType(new FieldType(1));

field = Context.getFormService().saveField(field);

// put that field on a new FormField.
FormField formField = new FormField();
Expand Down Expand Up @@ -918,6 +920,7 @@ public void saveFormField_shouldInjectFormFieldsFromSerializableComplexObsHandle
field.setName("neighbor");
field.setConcept(concept);
field.setFieldType(new FieldType(1));
field = Context.getFormService().saveField(field);

FormField formField = new FormField();
formField.setField(field);
Expand All @@ -928,6 +931,7 @@ public void saveFormField_shouldInjectFormFieldsFromSerializableComplexObsHandle
List<FormField> originalFormFields = fs.getAllFormFields();
int initialFormFieldCount = originalFormFields.size();
formField = fs.saveFormField(formField);
formField = fs.getFormField(formField.getFormFieldId());
List<FormField> updatedFormFields = fs.getAllFormFields();
//should have this and the two form fields from the handler
assertEquals(initialFormFieldCount += 3, updatedFormFields.size());
Expand Down Expand Up @@ -1098,6 +1102,28 @@ public void purgeForm_shouldDeleteGivenFormSuccessfully() {
createFormsLockedGPAndSetValue("false");

Form form = fs.getForm(1);

for (FormField ff : new ArrayList<>(form.getFormFields())) {
Field realField = fs.getField(1);
ff.setField(realField);
fs.saveFormField(ff);
fs.purgeFormField(ff);
form.removeFormField(ff);
}

Field field = new Field();
field.setName("purge-test-field");
field.setDescription("Field created for purge test");
field.setFieldType(new FieldType(1));
field = fs.saveField(field);

FormField formField = new FormField();
formField.setForm(form);
formField.setField(field);
formField.setFieldNumber(0);

fs.saveFormField(formField);

fs.purgeForm(form);

assertNull(fs.getForm(1));
Expand Down
2 changes: 2 additions & 0 deletions api/src/test/java/org/openmrs/api/OrderServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.openmrs.DrugOrder;
import org.openmrs.Encounter;
import org.openmrs.EncounterRole;
import org.openmrs.FormField;
import org.openmrs.FreeTextDosingInstructions;
import org.openmrs.GlobalProperty;
import org.openmrs.Location;
Expand Down Expand Up @@ -2915,6 +2916,7 @@ public void saveOrder_shouldFailIfTheJavaTypeOfThePreviousOrderDoesNotMatch() th
.addAnnotatedClass(ConceptClass.class)
.addAnnotatedClass(ConceptMap.class)
.addAnnotatedClass(FormResource.class)
.addAnnotatedClass(FormField.class)
.addAnnotatedClass(VisitType.class)
.addAnnotatedClass(ProviderRole.class)
.addAnnotatedClass(EncounterRole.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public class DatabaseUpdaterDatabaseIT extends DatabaseIT {
* This constant needs to be updated when adding new Liquibase update files to openmrs-core.
*/

private static final int CHANGE_SET_COUNT_FOR_GREATER_THAN_2_1_X = 909;
private static final int CHANGE_SET_COUNT_FOR_GREATER_THAN_2_1_X = 910;

private static final int CHANGE_SET_COUNT_FOR_2_1_X = 870;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
<form form_id="3" name="Some Retired Basic Form" version="0.1" build="0" published="0" description="Test form" creator="1" date_created="2005-08-07 00:00:00.0" encounter_type="1" changed_by="1" date_changed="2007-10-24 14:51:53.0" retired="false" retired_reason="" uuid="c158-6731-4ebd-89ff-hiui8hjJKK"/>
<form form_id="4" name="Another Form" version="0.1" build="0" published="0" description="Test form" creator="1" date_created="2005-08-07 00:00:00.0" encounter_type="1" changed_by="1" date_changed="2007-10-24 14:51:53.0" retired="true" retired_reason="" uuid="c156e1a8-6731-4ebd-89ff-c45kjni2891"/>

<form_field form_field_id="2" form_id="1" field_id="1" field_number="1" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:11:53.0" creator="1" date_created="2006-07-18 11:04:36.0" sort_weight="10.0" uuid="6cbc3f1a-0b69-4f93-8865-f7ee4dd6a879"/>
<form_field form_field_id="3" form_id="1" field_id="1" field_number="2" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:12:05.0" creator="1" date_created="2006-07-18 11:06:52.0" sort_weight="20.0" uuid="22a5ea24-f755-42c2-ae56-b0d23aaa46f7"/>
<form_field form_field_id="5" form_id="2" field_id="1" field_number="3" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="0d38e38e-19da-41d6-9d24-af7e08e5e0f0"/>
<form_field form_field_id="6" form_id="3" field_id="2" field_number="4" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="3bb44f19-e162-219a-a5f5-19bd1eaa0f3b"/>
<form_field form_field_id="7" form_id="2" field_id="3" field_number="5" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="dbb44d19-d162-219d-d5f5-19dd1daa0f3b"/>
<form_field form_field_id="2" form_id="1" field_id="1" field_number="1" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:11:53.0" creator="1" date_created="2006-07-18 11:04:36.0" sort_weight="10.0" uuid="6cbc3f1a-0b69-4f93-8865-f7ee4dd6a879" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="3" form_id="1" field_id="1" field_number="2" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:12:05.0" creator="1" date_created="2006-07-18 11:06:52.0" sort_weight="20.0" uuid="22a5ea24-f755-42c2-ae56-b0d23aaa46f7" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="5" form_id="2" field_id="1" field_number="3" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="0d38e38e-19da-41d6-9d24-af7e08e5e0f0" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="6" form_id="3" field_id="2" field_number="4" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="3bb44f19-e162-219a-a5f5-19bd1eaa0f3b" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="7" form_id="2" field_id="3" field_number="5" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="dbb44d19-d162-219d-d5f5-19dd1daa0f3b" min_occurs="0" max_occurs="1"/>
</dataset>
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
<field field_id="2" name="Some same concept" description="This is a duplicate field" field_type="1" concept_id="1" table_name="" default_value="" select_multiple="false" creator="1" date_created="2006-07-18 11:03:31.0" retired="false" uuid="a2843248-ca4c-4349-a3b7-1162b98d91df"/>
<field field_id="3" name="Some same concept" description="This is a duplicate field" field_type="1" concept_id="1" table_name="" default_value="" select_multiple="false" creator="1" date_created="2006-07-18 11:03:31.0" retired="false" uuid="b1843148-da2f-4349-c9c7-1164b98d91dd"/>
<form form_id="1" name="Basic Form" version="0.1" build="0" published="0" description="Test form" creator="1" date_created="2005-08-07 00:00:00.0" changed_by="1" date_changed="2007-10-24 14:51:53.0" retired="false" retired_reason="" uuid="c156e1a8-6731-4ebd-89ff-d0d1c45eb577"/>
<form_field form_field_id="2" form_id="1" field_id="1" field_number="1" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:11:53.0" creator="1" date_created="2006-07-18 11:04:36.0" sort_weight="10.0" uuid="6cbc3f1a-0b69-4f93-8865-f7ee4dd6a879"/>
<form_field form_field_id="3" form_id="1" field_id="1" field_number="2" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:12:05.0" creator="1" date_created="2006-07-18 11:06:52.0" sort_weight="20.0" uuid="22a5ea24-f755-42c2-ae56-b0d23aaa46f7"/>
<form_field form_field_id="5" form_id="1" field_id="1" field_number="3" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="0d38e38e-19da-41d6-9d24-af7e08e5e0f0"/>
<form_field form_field_id="6" form_id="1" field_id="2" field_number="4" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="3bb44f19-e162-219a-a5f5-19bd1eaa0f3b"/>
<form_field form_field_id="7" form_id="1" field_id="3" field_number="5" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="dbb44d19-d162-219d-d5f5-19dd1daa0f3b"/>
<form_field form_field_id="2" form_id="1" field_id="1" field_number="1" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:11:53.0" creator="1" date_created="2006-07-18 11:04:36.0" sort_weight="10.0" uuid="6cbc3f1a-0b69-4f93-8865-f7ee4dd6a879" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="3" form_id="1" field_id="1" field_number="2" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:12:05.0" creator="1" date_created="2006-07-18 11:06:52.0" sort_weight="20.0" uuid="22a5ea24-f755-42c2-ae56-b0d23aaa46f7" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="5" form_id="1" field_id="1" field_number="3" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="0d38e38e-19da-41d6-9d24-af7e08e5e0f0" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="6" form_id="1" field_id="2" field_number="4" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="3bb44f19-e162-219a-a5f5-19bd1eaa0f3b" min_occurs="0" max_occurs="1"/>
<form_field form_field_id="7" form_id="1" field_id="3" field_number="5" field_part="" required="false" changed_by="1" date_changed="2006-07-18 11:13:59.0" creator="1" date_created="2006-07-18 11:13:57.0" sort_weight="30.0" uuid="dbb44d19-d162-219d-d5f5-19dd1daa0f3b" min_occurs="0" max_occurs="1"/>
</dataset>
Loading
Loading