From c8725d95066bee53547796394beafc94c623ed9b Mon Sep 17 00:00:00 2001 From: Zubair Asghar Date: Fri, 8 Nov 2024 11:41:52 +0500 Subject: [PATCH] feat: Add skipAnalytics to ProgramTrackedEntityAttribute [DHIS2-16454] (#19017) --- .../ProgramTrackedEntityAttribute.java | 13 +++++++++++ .../ProgramTrackedEntityAttributeTest.java | 22 +++++++++++++++++++ .../ProgramTrackedEntityAttribute.hbm.xml | 4 +++- ...Analytics_column_to_program_attributes.sql | 4 ++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 dhis-2/dhis-support/dhis-support-db-migration/src/main/resources/org/hisp/dhis/db/migration/2.42/V2_42_24__Add_skipIndividualAnalytics_column_to_program_attributes.sql diff --git a/dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramTrackedEntityAttribute.java b/dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramTrackedEntityAttribute.java index f08fd4afad12..2ea9d726b625 100644 --- a/dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramTrackedEntityAttribute.java +++ b/dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramTrackedEntityAttribute.java @@ -68,6 +68,8 @@ public class ProgramTrackedEntityAttribute extends BaseIdentifiableObject private Boolean searchable = false; + private boolean skipIndividualAnalytics; + // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -265,6 +267,16 @@ public DeviceRenderTypeMap getRenderType() { return renderType; } + @JsonProperty + @JacksonXmlProperty(namespace = DxfNamespaces.DXF_2_0) + public boolean isSkipIndividualAnalytics() { + return skipIndividualAnalytics; + } + + public void setSkipIndividualAnalytics(boolean skipIndividualAnalytics) { + this.skipIndividualAnalytics = skipIndividualAnalytics; + } + public void setRenderType(DeviceRenderTypeMap renderType) { this.renderType = renderType; } @@ -295,5 +307,6 @@ private static void setShallowCopyValues( copy.setSharing(original.getSharing()); copy.setSortOrder(original.getSortOrder()); copy.setTranslations(original.getTranslations()); + copy.setSkipIndividualAnalytics(original.isSkipIndividualAnalytics()); } } diff --git a/dhis-2/dhis-api/src/test/java/org/hisp/dhis/program/ProgramTrackedEntityAttributeTest.java b/dhis-2/dhis-api/src/test/java/org/hisp/dhis/program/ProgramTrackedEntityAttributeTest.java index 7ad34ae9e498..52409c166a17 100644 --- a/dhis-2/dhis-api/src/test/java/org/hisp/dhis/program/ProgramTrackedEntityAttributeTest.java +++ b/dhis-2/dhis-api/src/test/java/org/hisp/dhis/program/ProgramTrackedEntityAttributeTest.java @@ -29,6 +29,7 @@ import static org.hisp.dhis.program.ProgramTest.getNewProgram; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotSame; @@ -62,6 +63,27 @@ void testCopyOf() { assertEquals("Copy of Program Name tracked entity attr 1", copy.getName()); } + @Test + void testDefaultSkipAnalyticsValue() { + ProgramTrackedEntityAttribute ptea = new ProgramTrackedEntityAttribute(); + assertFalse( + ptea.isSkipIndividualAnalytics(), + "Default value of skipIndividualAnalytics should be false"); + } + + @Test + void testCopyOfWithSkipAnalytics() { + ProgramTrackedEntityAttribute original = getNewProgramAttribute(getNewProgram()); + original.setSkipIndividualAnalytics(true); // Set to true to check copy behavior + ProgramTrackedEntityAttribute copy = + ProgramTrackedEntityAttribute.copyOf.apply(original, getNewProgram()); + + assertEquals( + original.isSkipIndividualAnalytics(), + copy.isSkipIndividualAnalytics(), + "skipIndividualAnalytics should be copied correctly"); + } + private ProgramTrackedEntityAttribute getNewProgramAttribute(Program program) { ProgramTrackedEntityAttribute ptea = new ProgramTrackedEntityAttribute(); TrackedEntityAttribute tea = new TrackedEntityAttribute(); diff --git a/dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/program/hibernate/ProgramTrackedEntityAttribute.hbm.xml b/dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/program/hibernate/ProgramTrackedEntityAttribute.hbm.xml index ac43c4c16ce5..505cd2d2422b 100644 --- a/dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/program/hibernate/ProgramTrackedEntityAttribute.hbm.xml +++ b/dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/program/hibernate/ProgramTrackedEntityAttribute.hbm.xml @@ -33,6 +33,8 @@ - + + + diff --git a/dhis-2/dhis-support/dhis-support-db-migration/src/main/resources/org/hisp/dhis/db/migration/2.42/V2_42_24__Add_skipIndividualAnalytics_column_to_program_attributes.sql b/dhis-2/dhis-support/dhis-support-db-migration/src/main/resources/org/hisp/dhis/db/migration/2.42/V2_42_24__Add_skipIndividualAnalytics_column_to_program_attributes.sql new file mode 100644 index 000000000000..d910b54175b2 --- /dev/null +++ b/dhis-2/dhis-support/dhis-support-db-migration/src/main/resources/org/hisp/dhis/db/migration/2.42/V2_42_24__Add_skipIndividualAnalytics_column_to_program_attributes.sql @@ -0,0 +1,4 @@ + +-- Add the new column with a default value of false +ALTER TABLE program_attributes + ADD COLUMN IF NOT EXISTS skipIndividualAnalytics boolean DEFAULT FALSE; \ No newline at end of file