diff --git a/dhis-2/dhis-api/src/main/java/org/hisp/dhis/fileresource/FileResourceStore.java b/dhis-2/dhis-api/src/main/java/org/hisp/dhis/fileresource/FileResourceStore.java index 3e8d9a1aa98e..1487cd1e4ac9 100644 --- a/dhis-2/dhis-api/src/main/java/org/hisp/dhis/fileresource/FileResourceStore.java +++ b/dhis-2/dhis-api/src/main/java/org/hisp/dhis/fileresource/FileResourceStore.java @@ -120,4 +120,10 @@ Optional findByUidAndDomain( List getUnassignedPassedGracePeriod( Set domainsToDeleteWhenUnassigned, DateTime minus); + + /** + * Updates the assignment state and owner of the file resource with the given uid via a single + * JDBC UPDATE. No-op if no file resource with that uid exists. + */ + void updateAssignment(@Nonnull String uid, boolean assigned, @Nonnull String fileResourceOwner); } diff --git a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/fileresource/hibernate/HibernateFileResourceStore.java b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/fileresource/hibernate/HibernateFileResourceStore.java index ac2aed532f31..d9bb198d8d58 100644 --- a/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/fileresource/hibernate/HibernateFileResourceStore.java +++ b/dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/fileresource/hibernate/HibernateFileResourceStore.java @@ -212,6 +212,16 @@ and fr.uid not in (select uid from jobconfiguration where schedulingtype = 'ONCE return nativeSynchronizedTypedQuery(sql).list(); } + @Override + public void updateAssignment( + @Nonnull String uid, boolean assigned, @Nonnull String fileResourceOwner) { + jdbcTemplate.update( + "update fileresource set isassigned = ?, fileresourceowner = ?, lastupdated = now() where uid = ?", + assigned, + fileResourceOwner, + uid); + } + @Override public List getUnassignedPassedGracePeriod( Set domainsToDeleteWhenUnassigned, DateTime gracePeriod) { diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java index 0948d6b78e33..a55e4fe945f2 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/bundle/TrackedEntityProgramAttributeFileResourceTest.java @@ -97,6 +97,7 @@ void testTrackedEntityProgramAttributeFileResourceValue() throws IOException { List attributeValues = trackedEntityAttributeValueService.getTrackedEntityAttributeValues(trackedEntity); assertEquals(5, attributeValues.size()); + manager.clear(); fileResource = fileResourceService.getFileResource(fileResource.getUid()); assertTrue(fileResource.isAssigned()); } diff --git a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java index 8c1e69a59029..5507f8732c8b 100644 --- a/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java +++ b/dhis-2/dhis-test-integration/src/test/java/org/hisp/dhis/tracker/imports/validation/TeTaValidationTest.java @@ -108,6 +108,7 @@ void testTrackedEntityProgramAttributeFileResourceValue() throws IOException { List attributeValues = trackedEntityAttributeValueService.getTrackedEntityAttributeValues(trackedEntity); assertEquals(1, attributeValues.size()); + manager.clear(); fileResource = fileResourceService.getFileResource(fileResource.getUid()); assertTrue(fileResource.isAssigned()); } @@ -137,6 +138,7 @@ void testFileAlreadyAssign() throws IOException { List attributeValues = trackedEntityAttributeValueService.getTrackedEntityAttributeValues(trackedEntity); assertEquals(1, attributeValues.size()); + manager.clear(); fileResource = fileResourceService.getFileResource(fileResource.getUid()); assertTrue(fileResource.isAssigned()); trackerObjects = diff --git a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/AbstractTrackerPersister.java b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/AbstractTrackerPersister.java index 25712dbdbc42..3d5734640dc7 100644 --- a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/AbstractTrackerPersister.java +++ b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/AbstractTrackerPersister.java @@ -61,6 +61,7 @@ import org.hisp.dhis.common.UID; import org.hisp.dhis.common.ValueType; import org.hisp.dhis.fileresource.FileResource; +import org.hisp.dhis.fileresource.FileResourceStore; import org.hisp.dhis.program.notification.ProgramNotificationTemplate; import org.hisp.dhis.reservedvalue.ReservedValueService; import org.hisp.dhis.trackedentity.TrackedEntityAttribute; @@ -99,6 +100,8 @@ public abstract class AbstractTrackerPersister { - public RelationshipPersister(ReservedValueService reservedValueService, DataSource dataSource) { - super(reservedValueService, dataSource); + public RelationshipPersister( + ReservedValueService reservedValueService, + DataSource dataSource, + FileResourceStore fileResourceStore) { + super(reservedValueService, dataSource, fileResourceStore); } @Override diff --git a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/SingleEventPersister.java b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/SingleEventPersister.java index db1917d65a31..8ff91940277c 100644 --- a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/SingleEventPersister.java +++ b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/SingleEventPersister.java @@ -51,6 +51,7 @@ import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.event.EventStatus; import org.hisp.dhis.eventdatavalue.EventDataValue; +import org.hisp.dhis.fileresource.FileResourceStore; import org.hisp.dhis.program.Program; import org.hisp.dhis.program.UserInfoSnapshot; import org.hisp.dhis.program.notification.NotificationTrigger; @@ -74,8 +75,11 @@ public class SingleEventPersister extends AbstractTrackerPersister< org.hisp.dhis.tracker.imports.domain.SingleEvent, SingleEvent> { - public SingleEventPersister(ReservedValueService reservedValueService, DataSource dataSource) { - super(reservedValueService, dataSource); + public SingleEventPersister( + ReservedValueService reservedValueService, + DataSource dataSource, + FileResourceStore fileResourceStore) { + super(reservedValueService, dataSource, fileResourceStore); } @Override diff --git a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackedEntityPersister.java b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackedEntityPersister.java index 18babf87bf85..b64a201c52aa 100644 --- a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackedEntityPersister.java +++ b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackedEntityPersister.java @@ -34,6 +34,7 @@ import java.util.Set; import javax.sql.DataSource; import org.hisp.dhis.common.UID; +import org.hisp.dhis.fileresource.FileResourceStore; import org.hisp.dhis.reservedvalue.ReservedValueService; import org.hisp.dhis.tracker.TrackerType; import org.hisp.dhis.tracker.imports.bundle.TrackerBundle; @@ -51,8 +52,11 @@ public class TrackedEntityPersister extends AbstractTrackerPersister< org.hisp.dhis.tracker.imports.domain.TrackedEntity, TrackedEntity> { - public TrackedEntityPersister(ReservedValueService reservedValueService, DataSource dataSource) { - super(reservedValueService, dataSource); + public TrackedEntityPersister( + ReservedValueService reservedValueService, + DataSource dataSource, + FileResourceStore fileResourceStore) { + super(reservedValueService, dataSource, fileResourceStore); } @Override diff --git a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackerEventPersister.java b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackerEventPersister.java index 4394bc349a11..25b83ae2aea5 100644 --- a/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackerEventPersister.java +++ b/dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackerEventPersister.java @@ -52,6 +52,7 @@ import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.event.EventStatus; import org.hisp.dhis.eventdatavalue.EventDataValue; +import org.hisp.dhis.fileresource.FileResourceStore; import org.hisp.dhis.program.Program; import org.hisp.dhis.program.UserInfoSnapshot; import org.hisp.dhis.program.notification.NotificationTrigger; @@ -75,8 +76,11 @@ public class TrackerEventPersister extends AbstractTrackerPersister< org.hisp.dhis.tracker.imports.domain.TrackerEvent, TrackerEvent> { - public TrackerEventPersister(ReservedValueService reservedValueService, DataSource dataSource) { - super(reservedValueService, dataSource); + public TrackerEventPersister( + ReservedValueService reservedValueService, + DataSource dataSource, + FileResourceStore fileResourceStore) { + super(reservedValueService, dataSource, fileResourceStore); } @Override