Skip to content

Commit cf6e2a6

Browse files
chore: Extract FileResource assignment update [DHIS2-21378]
1 parent 2744ef6 commit cf6e2a6

8 files changed

Lines changed: 52 additions & 12 deletions

File tree

dhis-2/dhis-api/src/main/java/org/hisp/dhis/fileresource/FileResourceStore.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,12 @@ Optional<FileResource> findByUidAndDomain(
120120

121121
List<FileResource> getUnassignedPassedGracePeriod(
122122
Set<FileResourceDomain> domainsToDeleteWhenUnassigned, DateTime minus);
123+
124+
/**
125+
* Updates the assignment state and owner of the file resource with the given uid via a single
126+
* JDBC UPDATE. Bypasses the Hibernate persistence context, so {@link
127+
* org.hisp.dhis.artemis.audit.listener.AbstractHibernateListener Hibernate audit listeners} do
128+
* not fire. No-op if no file resource with that uid exists.
129+
*/
130+
void updateAssignment(@Nonnull String uid, boolean assigned, @Nonnull String fileResourceOwner);
123131
}

dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/fileresource/hibernate/HibernateFileResourceStore.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,16 @@ and fr.uid not in (select uid from jobconfiguration where schedulingtype = 'ONCE
212212
return nativeSynchronizedTypedQuery(sql).list();
213213
}
214214

215+
@Override
216+
public void updateAssignment(
217+
@Nonnull String uid, boolean assigned, @Nonnull String fileResourceOwner) {
218+
jdbcTemplate.update(
219+
"update fileresource set isassigned = ?, fileresourceowner = ?, lastupdated = now() where uid = ?",
220+
assigned,
221+
fileResourceOwner,
222+
uid);
223+
}
224+
215225
@Override
216226
public List<FileResource> getUnassignedPassedGracePeriod(
217227
Set<FileResourceDomain> domainsToDeleteWhenUnassigned, DateTime gracePeriod) {

dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/AbstractTrackerPersister.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import org.hisp.dhis.common.UID;
6262
import org.hisp.dhis.common.ValueType;
6363
import org.hisp.dhis.fileresource.FileResource;
64+
import org.hisp.dhis.fileresource.FileResourceStore;
6465
import org.hisp.dhis.program.notification.ProgramNotificationTemplate;
6566
import org.hisp.dhis.reservedvalue.ReservedValueService;
6667
import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
@@ -99,6 +100,8 @@ public abstract class AbstractTrackerPersister<T extends TrackerDto, V extends I
99100

100101
protected final DataSource dataSource;
101102

103+
protected final FileResourceStore fileResourceStore;
104+
102105
/**
103106
* Template method that can be used by classes extending this class to execute the persistence
104107
* flow of Tracker entities
@@ -365,9 +368,10 @@ private void assignFileResource(
365368
return;
366369
}
367370

368-
fileResource.setAssigned(isAssign);
369-
fileResource.setFileResourceOwner(fileResourceOwner);
370-
entityManager.merge(fileResource);
371+
// Direct JDBC update — bypasses the Hibernate persistence context so the entity is not
372+
// dirty-marked and PostUpdateAuditListener does not fire. The in-memory copy in the preheat
373+
// is intentionally left as-is; nothing reads it back later in this import.
374+
fileResourceStore.updateAssignment(fileResource.getUid(), isAssign, fileResourceOwner);
371375
}
372376

373377
protected void handleTrackedEntityAttributeValues(

dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/EnrollmentPersister.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.Set;
3535
import javax.sql.DataSource;
3636
import org.hisp.dhis.common.UID;
37+
import org.hisp.dhis.fileresource.FileResourceStore;
3738
import org.hisp.dhis.program.EnrollmentStatus;
3839
import org.hisp.dhis.program.notification.NotificationTrigger;
3940
import org.hisp.dhis.program.notification.ProgramNotificationTemplate;
@@ -60,8 +61,9 @@ public class EnrollmentPersister
6061
public EnrollmentPersister(
6162
ReservedValueService reservedValueService,
6263
DataSource dataSource,
64+
FileResourceStore fileResourceStore,
6365
TrackedEntityProgramOwnerService trackedEntityProgramOwnerService) {
64-
super(reservedValueService, dataSource);
66+
super(reservedValueService, dataSource, fileResourceStore);
6567
this.trackedEntityProgramOwnerService = trackedEntityProgramOwnerService;
6668
}
6769

dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/RelationshipPersister.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.Set;
3434
import javax.sql.DataSource;
3535
import org.hisp.dhis.common.UID;
36+
import org.hisp.dhis.fileresource.FileResourceStore;
3637
import org.hisp.dhis.reservedvalue.ReservedValueService;
3738
import org.hisp.dhis.tracker.TrackerType;
3839
import org.hisp.dhis.tracker.imports.TrackerImportStrategy;
@@ -50,8 +51,11 @@
5051
public class RelationshipPersister
5152
extends AbstractTrackerPersister<Relationship, org.hisp.dhis.tracker.model.Relationship> {
5253

53-
public RelationshipPersister(ReservedValueService reservedValueService, DataSource dataSource) {
54-
super(reservedValueService, dataSource);
54+
public RelationshipPersister(
55+
ReservedValueService reservedValueService,
56+
DataSource dataSource,
57+
FileResourceStore fileResourceStore) {
58+
super(reservedValueService, dataSource, fileResourceStore);
5559
}
5660

5761
@Override

dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/SingleEventPersister.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.hisp.dhis.dataelement.DataElement;
5252
import org.hisp.dhis.event.EventStatus;
5353
import org.hisp.dhis.eventdatavalue.EventDataValue;
54+
import org.hisp.dhis.fileresource.FileResourceStore;
5455
import org.hisp.dhis.program.Program;
5556
import org.hisp.dhis.program.UserInfoSnapshot;
5657
import org.hisp.dhis.program.notification.NotificationTrigger;
@@ -74,8 +75,11 @@
7475
public class SingleEventPersister
7576
extends AbstractTrackerPersister<
7677
org.hisp.dhis.tracker.imports.domain.SingleEvent, SingleEvent> {
77-
public SingleEventPersister(ReservedValueService reservedValueService, DataSource dataSource) {
78-
super(reservedValueService, dataSource);
78+
public SingleEventPersister(
79+
ReservedValueService reservedValueService,
80+
DataSource dataSource,
81+
FileResourceStore fileResourceStore) {
82+
super(reservedValueService, dataSource, fileResourceStore);
7983
}
8084

8185
@Override

dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackedEntityPersister.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.Set;
3535
import javax.sql.DataSource;
3636
import org.hisp.dhis.common.UID;
37+
import org.hisp.dhis.fileresource.FileResourceStore;
3738
import org.hisp.dhis.reservedvalue.ReservedValueService;
3839
import org.hisp.dhis.tracker.TrackerType;
3940
import org.hisp.dhis.tracker.imports.bundle.TrackerBundle;
@@ -51,8 +52,11 @@ public class TrackedEntityPersister
5152
extends AbstractTrackerPersister<
5253
org.hisp.dhis.tracker.imports.domain.TrackedEntity, TrackedEntity> {
5354

54-
public TrackedEntityPersister(ReservedValueService reservedValueService, DataSource dataSource) {
55-
super(reservedValueService, dataSource);
55+
public TrackedEntityPersister(
56+
ReservedValueService reservedValueService,
57+
DataSource dataSource,
58+
FileResourceStore fileResourceStore) {
59+
super(reservedValueService, dataSource, fileResourceStore);
5660
}
5761

5862
@Override

dhis-2/dhis-tracker/src/main/java/org/hisp/dhis/tracker/imports/bundle/persister/TrackerEventPersister.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import org.hisp.dhis.dataelement.DataElement;
5353
import org.hisp.dhis.event.EventStatus;
5454
import org.hisp.dhis.eventdatavalue.EventDataValue;
55+
import org.hisp.dhis.fileresource.FileResourceStore;
5556
import org.hisp.dhis.program.Program;
5657
import org.hisp.dhis.program.UserInfoSnapshot;
5758
import org.hisp.dhis.program.notification.NotificationTrigger;
@@ -75,8 +76,11 @@
7576
public class TrackerEventPersister
7677
extends AbstractTrackerPersister<
7778
org.hisp.dhis.tracker.imports.domain.TrackerEvent, TrackerEvent> {
78-
public TrackerEventPersister(ReservedValueService reservedValueService, DataSource dataSource) {
79-
super(reservedValueService, dataSource);
79+
public TrackerEventPersister(
80+
ReservedValueService reservedValueService,
81+
DataSource dataSource,
82+
FileResourceStore fileResourceStore) {
83+
super(reservedValueService, dataSource, fileResourceStore);
8084
}
8185

8286
@Override

0 commit comments

Comments
 (0)