From 173420dd7caa199245aa6ba3e6b61ca5f631f7bc Mon Sep 17 00:00:00 2001 From: Leonardo Gonzales Date: Tue, 2 Dec 2025 18:55:13 +0000 Subject: [PATCH] chore: Refactor formName to NameableObject --- .../java/org/hisp/dhis/api/ApiFields.java | 12 +++--- .../org/hisp/dhis/model/CategoryOption.java | 2 - .../java/org/hisp/dhis/model/DataSet.java | 2 - .../org/hisp/dhis/model/NameableObject.java | 2 + .../java/org/hisp/dhis/model/Program.java | 2 - .../org/hisp/dhis/model/ProgramStage.java | 2 - .../hisp/dhis/model/ProgramStageSection.java | 2 - .../java/org/hisp/dhis/ApiFieldsTest.java | 38 +++++++++---------- .../org/hisp/dhis/DataElementApiTest.java | 1 + .../dhis/TrackedEntityAttributeApiTest.java | 17 +++++---- .../metadata/data-element-color.json | 1 + 11 files changed, 39 insertions(+), 42 deletions(-) diff --git a/src/main/java/org/hisp/dhis/api/ApiFields.java b/src/main/java/org/hisp/dhis/api/ApiFields.java index 1060e588..0c56380d 100644 --- a/src/main/java/org/hisp/dhis/api/ApiFields.java +++ b/src/main/java/org/hisp/dhis/api/ApiFields.java @@ -53,7 +53,7 @@ public class ApiFields { /** Nameable object extended fields. */ public static final String NAME_EXT_FIELDS = - String.format("%s,shortName,description", ID_EXT_FIELDS); + String.format("%s,shortName,description,formName", ID_EXT_FIELDS); /** Analytics table hook fields. */ public static final String ANALYTICS_TABLE_HOOK_FIELDS = @@ -62,7 +62,7 @@ public class ApiFields { /** Category option fields. */ public static final String CATEGORY_OPTION_FIELDS = String.format( - "%1$s,shortName,startDate,endDate,formName,categories[%2$s],organisationUnits[%2$s]", + "%1$s,shortName,startDate,endDate,categories[%2$s],organisationUnits[%2$s]", NAME_EXT_FIELDS, NAME_FIELDS); /** Category option extended fields. */ @@ -223,7 +223,7 @@ public class ApiFields { public static final String DATA_SET_FIELDS = String.format( """ - %1$s,formName,displayFormName,\ + %1$s,displayFormName,\ categoryCombo[%2$s],\ dataSetElements[dataSet[%2$s],dataElement[%2$s],categoryCombo[%2$s]],\ dimensionItem,openFuturePeriods,expiryDays,timelyDays,url,formType,periodType,version,\ @@ -340,7 +340,7 @@ public class ApiFields { public static final String PROGRAM_STAGE_SECTION_FIELDS = String.format( """ - %1$s,programStage[%2$s],formName,sortOrder,dataElements[%2$s],programIndicators[%2$s]""", + %1$s,programStage[%2$s],sortOrder,dataElements[%2$s],programIndicators[%2$s]""", NAME_EXT_FIELDS, NAME_FIELDS); /** Program stage fields. */ @@ -350,7 +350,7 @@ public class ApiFields { %1$s,program[%2$s],\ programStageDataElements[%3$s],\ programStageSections[%4$s],\ - formName,executionDateLabel,dueDateLabel,programStageLabel,eventLabel,\ + executionDateLabel,dueDateLabel,programStageLabel,eventLabel,\ repeatable,autoGenerateEvent,displayGenerateEventBox,blockEntryForm,preGenerateUID,\ remindCompleted,generatedByEnrollmentDate,allowGenerateNextVisit,openAfterEnrollment,\ hideDueDate,enableUserAssignment,referral,featureType""", @@ -391,7 +391,7 @@ public class ApiFields { /** Program simple fields. */ private static final String PROGRAM_SIMPLE_FIELDS = """ - formName,programType,\ + programType,\ enrollmentDateLabel,incidentDateLabel,enrollmentLabel,followUpLabel,\ orgUnitLabel,relationshipLabel,noteLabel,trackedEntityAttributeLabel,\ programStageLabel,eventLabel,\ diff --git a/src/main/java/org/hisp/dhis/model/CategoryOption.java b/src/main/java/org/hisp/dhis/model/CategoryOption.java index 349560df..284ab2f9 100644 --- a/src/main/java/org/hisp/dhis/model/CategoryOption.java +++ b/src/main/java/org/hisp/dhis/model/CategoryOption.java @@ -52,8 +52,6 @@ public class CategoryOption extends DimensionItem { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT) private Date endDate; - @JsonProperty private String formName; - @JsonProperty private Set categories = new HashSet<>(); @JsonProperty private Set categoryOptionCombos = new HashSet<>(); diff --git a/src/main/java/org/hisp/dhis/model/DataSet.java b/src/main/java/org/hisp/dhis/model/DataSet.java index c8c2aaae..60287def 100644 --- a/src/main/java/org/hisp/dhis/model/DataSet.java +++ b/src/main/java/org/hisp/dhis/model/DataSet.java @@ -40,8 +40,6 @@ @Setter @NoArgsConstructor public class DataSet extends DimensionItem { - @JsonProperty private String formName; - @JsonProperty private String displayFormName; @JsonProperty private CategoryCombo categoryCombo; diff --git a/src/main/java/org/hisp/dhis/model/NameableObject.java b/src/main/java/org/hisp/dhis/model/NameableObject.java index b8d5ee0c..30db7e63 100644 --- a/src/main/java/org/hisp/dhis/model/NameableObject.java +++ b/src/main/java/org/hisp/dhis/model/NameableObject.java @@ -42,6 +42,8 @@ public class NameableObject extends IdentifiableObject { @JsonProperty protected String description; + @JsonProperty protected String formName; + /** * Constructor. * diff --git a/src/main/java/org/hisp/dhis/model/Program.java b/src/main/java/org/hisp/dhis/model/Program.java index 2466af59..6b664424 100644 --- a/src/main/java/org/hisp/dhis/model/Program.java +++ b/src/main/java/org/hisp/dhis/model/Program.java @@ -49,8 +49,6 @@ @Setter @NoArgsConstructor public class Program extends NameableObject { - @JsonProperty private String formName; - @JsonProperty private ProgramType programType; /** diff --git a/src/main/java/org/hisp/dhis/model/ProgramStage.java b/src/main/java/org/hisp/dhis/model/ProgramStage.java index a95510f5..69e4fd89 100644 --- a/src/main/java/org/hisp/dhis/model/ProgramStage.java +++ b/src/main/java/org/hisp/dhis/model/ProgramStage.java @@ -48,8 +48,6 @@ public class ProgramStage extends NameableObject { @JsonProperty private List programStageSections = new ArrayList<>(); - @JsonProperty private String formName; - @JsonProperty private String executionDateLabel; @JsonProperty private String dueDateLabel; diff --git a/src/main/java/org/hisp/dhis/model/ProgramStageSection.java b/src/main/java/org/hisp/dhis/model/ProgramStageSection.java index 0459faae..da91d4e6 100644 --- a/src/main/java/org/hisp/dhis/model/ProgramStageSection.java +++ b/src/main/java/org/hisp/dhis/model/ProgramStageSection.java @@ -40,8 +40,6 @@ public class ProgramStageSection extends NameableObject { @JsonProperty private ProgramStage programStage; - @JsonProperty private String formName; - @JsonProperty private Integer sortOrder; @JsonProperty private List dataElements = new ArrayList<>(); diff --git a/src/test/java/org/hisp/dhis/ApiFieldsTest.java b/src/test/java/org/hisp/dhis/ApiFieldsTest.java index 4627fc17..b005cf68 100644 --- a/src/test/java/org/hisp/dhis/ApiFieldsTest.java +++ b/src/test/java/org/hisp/dhis/ApiFieldsTest.java @@ -40,21 +40,21 @@ class ApiFieldsTest { void testProgramStageFields() { String expected = """ - id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ + id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ program[id,code,name,created,lastUpdated,attributeValues],\ - programStageDataElements[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ + programStageDataElements[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ programStage[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ - dataElement[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ + dataElement[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ aggregationType,valueType,domainType,url,legendSets[id,code,name,created,lastUpdated,\ attributeValues,shortName,description],\ optionSet[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,valueType,version]],\ compulsory,displayInReports,skipSynchronization,skipAnalytics,sortOrder],\ programStageSections[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,\ - shortName,description,programStage[id,code,name,created,lastUpdated,\ - attributeValues,shortName,description],formName,sortOrder,\ + shortName,description,formName,programStage[id,code,name,created,lastUpdated,\ + attributeValues,shortName,description],sortOrder,\ dataElements[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ programIndicators[id,code,name,created,lastUpdated,attributeValues,shortName,description]],\ - formName,executionDateLabel,dueDateLabel,programStageLabel,eventLabel,\ + executionDateLabel,dueDateLabel,programStageLabel,eventLabel,\ repeatable,autoGenerateEvent,displayGenerateEventBox,blockEntryForm,preGenerateUID,\ remindCompleted,generatedByEnrollmentDate,allowGenerateNextVisit,openAfterEnrollment,\ hideDueDate,enableUserAssignment,referral,featureType"""; @@ -66,33 +66,33 @@ void testProgramStageFields() { void testProgramExtFields() { String expected = """ - id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ - trackedEntityType[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ + id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ + trackedEntityType[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ trackedEntityTypeAttributes[id,\ trackedEntityAttribute[id,code,name,created,lastUpdated,attributeValues,shortName,description,valueType,\ aggregationType,confidential,unique],displayInList,mandatory,searchable]],\ categoryCombo[id,code,name,created,lastUpdated,attributeValues,shortName,description,\ - categories[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,dataDimensionType,dataDimension,\ + categories[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,dataDimensionType,dataDimension,\ categoryOptions[id,code,name,created,lastUpdated,attributeValues],\ categoryCombos[id,code,name,created,lastUpdated,attributeValues]]],\ organisationUnits[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ - programSections[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,sortOrder,\ + programSections[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,sortOrder,\ program[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ trackedEntityAttributes[id,code,name,created,lastUpdated,attributeValues,shortName,description]],\ - programStages[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ + programStages[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ program[id,code,name,created,lastUpdated,attributeValues],\ - programStageDataElements[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ + programStageDataElements[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ programStage[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ - dataElement[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ + dataElement[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,formName,\ aggregationType,valueType,domainType,url,\ legendSets[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ optionSet[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,valueType,version]],\ compulsory,displayInReports,skipSynchronization,skipAnalytics,sortOrder],\ programStageSections[id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,\ - shortName,description,programStage[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ - formName,sortOrder,dataElements[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ + shortName,description,formName,programStage[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ + sortOrder,dataElements[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ programIndicators[id,code,name,created,lastUpdated,attributeValues,shortName,description]],\ - formName,executionDateLabel,dueDateLabel,programStageLabel,eventLabel,\ + executionDateLabel,dueDateLabel,programStageLabel,eventLabel,\ repeatable,autoGenerateEvent,displayGenerateEventBox,blockEntryForm,preGenerateUID,\ remindCompleted,generatedByEnrollmentDate,allowGenerateNextVisit,openAfterEnrollment,\ hideDueDate,enableUserAssignment,referral,featureType],\ @@ -107,7 +107,7 @@ void testProgramExtFields() { lastUpdated,attributeValues],trackedEntityAttribute[id,code,name,created,\ lastUpdated,attributeValues],useCodeForOptionSet,\ dataElement[id,code,name,created,lastUpdated,attributeValues]],\ - formName,programType,\ + programType,\ enrollmentDateLabel,incidentDateLabel,enrollmentLabel,followUpLabel,\ orgUnitLabel,relationshipLabel,noteLabel,trackedEntityAttributeLabel,\ programStageLabel,eventLabel,\ @@ -124,7 +124,7 @@ void testProgramMinFields() { String expected = """ id,code,name,created,lastUpdated,attributeValues,translations,sharing,access,shortName,description,\ - trackedEntityType[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ + formName,trackedEntityType[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ categoryCombo[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ programSections[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ programStages[id,code,name,created,lastUpdated,attributeValues,shortName,description],\ @@ -133,7 +133,7 @@ void testProgramMinFields() { trackedEntityAttribute[id,code,name,created,lastUpdated,attributeValues,shortName,\ description,valueType,aggregationType,confidential,unique],\ sortOrder,displayInList,mandatory,allowFutureDate,searchable],\ - formName,programType,\ + programType,\ enrollmentDateLabel,incidentDateLabel,enrollmentLabel,followUpLabel,\ orgUnitLabel,relationshipLabel,noteLabel,trackedEntityAttributeLabel,\ programStageLabel,eventLabel,\ diff --git a/src/test/java/org/hisp/dhis/DataElementApiTest.java b/src/test/java/org/hisp/dhis/DataElementApiTest.java index 3308b703..e07d3716 100644 --- a/src/test/java/org/hisp/dhis/DataElementApiTest.java +++ b/src/test/java/org/hisp/dhis/DataElementApiTest.java @@ -134,6 +134,7 @@ void testSaveGetDataElementWithSharing() { assertEquals("DJC_COLOR", retrieved.getCode()); assertEquals("DJC: Color", retrieved.getName()); assertEquals("DJC: Color", retrieved.getShortName()); + assertEquals("DJC: Color", retrieved.getFormName()); Sharing sharing = retrieved.getSharing(); diff --git a/src/test/java/org/hisp/dhis/TrackedEntityAttributeApiTest.java b/src/test/java/org/hisp/dhis/TrackedEntityAttributeApiTest.java index 99f51953..9c192231 100644 --- a/src/test/java/org/hisp/dhis/TrackedEntityAttributeApiTest.java +++ b/src/test/java/org/hisp/dhis/TrackedEntityAttributeApiTest.java @@ -87,6 +87,7 @@ void testCreateUpdateDeleteTrackedEntityAttributes() { tea.setDescription(uidA); tea.setCode(uidA); tea.setShortName(uidA); + tea.setFormName(uidA); tea.setValueType(ValueType.TEXT); tea.setAggregationType(AggregationType.COUNT); @@ -104,16 +105,18 @@ void testCreateUpdateDeleteTrackedEntityAttributes() { // Get - tea = dhis2.getTrackedEntityAttribute(teaId); + TrackedEntityAttribute retrieved = dhis2.getTrackedEntityAttribute(teaId); assertNotNull(tea); - assertEquals(teaId, tea.getId()); + assertEquals(teaId, retrieved.getId()); + assertEquals(tea.getFormName(), retrieved.getFormName()); + assertEquals(tea.getShortName(), retrieved.getDescription()); - tea.setName(uidB); + retrieved.setName(uidB); // Update - ObjectResponse updateResp = dhis2.updateTrackedEntityAttribute(tea); + ObjectResponse updateResp = dhis2.updateTrackedEntityAttribute(retrieved); assertEquals(200, updateResp.getHttpStatusCode().intValue(), updateResp.toString()); assertEquals(HttpStatus.OK, updateResp.getHttpStatus(), updateResp.toString()); @@ -124,9 +127,9 @@ void testCreateUpdateDeleteTrackedEntityAttributes() { tea = dhis2.getTrackedEntityAttribute(teaId); assertNotNull(tea); - assertEquals(teaId, tea.getId()); - assertEquals(uidB, tea.getName()); - assertNotNull(tea.getDescription()); + assertEquals(teaId, retrieved.getId()); + assertEquals(uidB, retrieved.getName()); + assertNotNull(retrieved.getDescription()); // Remove diff --git a/src/test/resources/metadata/data-element-color.json b/src/test/resources/metadata/data-element-color.json index edb0f637..3a90be67 100644 --- a/src/test/resources/metadata/data-element-color.json +++ b/src/test/resources/metadata/data-element-color.json @@ -3,6 +3,7 @@ "code": "DJC_COLOR", "name": "DJC: Color", "shortName": "DJC: Color", + "formName": "DJC: Color", "aggregationType": "SUM", "valueType": "NUMBER", "domainType": "AGGREGATE",