Skip to content

Commit

Permalink
chore: Remove preprocess that filters out deleted entitites in tracke…
Browse files Browse the repository at this point in the history
…r stores [DHIS2-18883] (#19921)

* chore: Remove preprocess that filters out deleted entitites in tracker stores [DHIS2-18883]

* Fix tests

* chore: Add factory method for single PageParams
  • Loading branch information
enricocolasante authored Feb 17, 2025
1 parent 8946d0d commit 111fbbd
Show file tree
Hide file tree
Showing 23 changed files with 164 additions and 313 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,8 @@
package org.hisp.dhis.program.hibernate;

import jakarta.persistence.EntityManager;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -64,17 +59,6 @@ public HibernateEventStore(
super(entityManager, jdbcTemplate, publisher, Event.class, aclService, false);
}

@Override
protected void preProcessPredicates(
CriteriaBuilder builder, List<Function<Root<Event>, Predicate>> predicates) {
predicates.add(root -> builder.equal(root.get("deleted"), false));
}

@Override
protected Event postProcessObject(Event event) {
return (event == null || event.isDeleted()) ? null : event;
}

@Override
public void mergeEventDataValuesWithDataElement(
@Nonnull Collection<UID> sourceDataElements, @Nonnull UID targetDataElement) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ public TrackedEntity validateTrackedEntity(UID uid, UserDetails user)

// TODO(tracker) Are these validations enough? Should we check for ownership too?
TrackedEntity trackedEntity = manager.get(TrackedEntity.class, uid.getValue());
if (trackedEntity == null) {
if (trackedEntity == null || trackedEntity.isDeleted()) {
throw new BadRequestException("Tracked entity is specified but does not exist: " + uid);
}
trackedEntityAuditService.addTrackedEntityAudit(READ, user.getUsername(), trackedEntity);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ public class PageParams {
private static final int DEFAULT_PAGE = 1;
private static final int DEFAULT_PAGE_SIZE = 50;

public static PageParams single() {
return new PageParams(1, 1, false);
}

/** The page number to be returned. */
final int page;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,23 +81,21 @@ class DefaultEnrollmentService implements EnrollmentService {
@Nonnull
@Override
public Enrollment getEnrollment(@Nonnull UID uid) throws ForbiddenException, NotFoundException {
return getEnrollment(uid, EnrollmentParams.FALSE, false);
return getEnrollment(uid, EnrollmentParams.FALSE);
}

@Nonnull
@Override
public Enrollment getEnrollment(
@Nonnull UID uid, @Nonnull EnrollmentParams params, boolean includeDeleted)
public Enrollment getEnrollment(@Nonnull UID uid, @Nonnull EnrollmentParams params)
throws NotFoundException, ForbiddenException {
Page<Enrollment> enrollments;
try {
EnrollmentOperationParams operationParams =
EnrollmentOperationParams.builder()
.enrollments(Set.of(uid))
.enrollmentParams(params)
.includeDeleted(includeDeleted)
.build();
enrollments = getEnrollments(operationParams, new PageParams(1, 1, false));
enrollments = getEnrollments(operationParams, PageParams.single());
} catch (BadRequestException e) {
throw new IllegalArgumentException(
"this must be a bug in how the EnrollmentOperationParams are built");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public interface EnrollmentService {
Enrollment getEnrollment(UID uid) throws ForbiddenException, NotFoundException;

@Nonnull
Enrollment getEnrollment(UID uid, EnrollmentParams params, boolean includeDeleted)
Enrollment getEnrollment(UID uid, EnrollmentParams params)
throws NotFoundException, ForbiddenException;

/** Get all enrollments matching given params. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,10 @@
import static org.hisp.dhis.util.DateUtils.toLongGmtDate;

import jakarta.persistence.EntityManager;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.StringJoiner;
import java.util.function.Function;
import java.util.function.LongSupplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
Expand Down Expand Up @@ -296,17 +292,6 @@ String getFullQuery() {
}
}

@Override
protected void preProcessPredicates(
CriteriaBuilder builder, List<Function<Root<Enrollment>, Predicate>> predicates) {
predicates.add(root -> builder.equal(root.get("deleted"), false));
}

@Override
protected Enrollment postProcessObject(Enrollment enrollment) {
return (enrollment == null || enrollment.isDeleted()) ? null : enrollment;
}

public Set<String> getOrderableFields() {
return ORDERABLE_FIELDS;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ private FileResource getFileResourceMetadata(UID eventUid, UID dataElementUid)
.eventParams(EventParams.FALSE)
.dataElementFilters(Map.of(dataElementUid, List.of()))
.build();
events = getEvents(operationParams, new PageParams(1, 1, false));
events = getEvents(operationParams, PageParams.single());
} catch (BadRequestException e) {
throw new IllegalArgumentException(
"this must be a bug in how the EventOperationParams are built");
Expand Down Expand Up @@ -180,7 +180,7 @@ public Event getEvent(
.eventParams(eventParams)
.idSchemeParams(idSchemeParams)
.build();
events = getEvents(operationParams, new PageParams(1, 1, false));
events = getEvents(operationParams, PageParams.single());
} catch (BadRequestException e) {
throw new IllegalArgumentException(
"this must be a bug in how the EventOperationParams are built");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public Relationship getRelationship(@Nonnull UID uid)
throws ForbiddenException, NotFoundException {
Relationship relationship = relationshipStore.getByUid(uid.getValue());

if (relationship == null) {
if (relationship == null || relationship.isDeleted()) {
throw new NotFoundException(Relationship.class, uid);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.function.LongSupplier;
import java.util.stream.Stream;
import javax.annotation.Nonnull;
Expand Down Expand Up @@ -379,15 +378,4 @@ private Page<Relationship> getPage(
public Set<String> getOrderableFields() {
return ORDERABLE_FIELDS;
}

@Override
protected void preProcessPredicates(
CriteriaBuilder builder, List<Function<Root<Relationship>, Predicate>> predicates) {
predicates.add(root -> builder.equal(root.get("deleted"), false));
}

@Override
protected Relationship postProcessObject(Relationship relationship) {
return (relationship == null || relationship.isDeleted()) ? null : relationship;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ private FileResource getFileResourceMetadata(
UID trackedEntityUid, UID attributeUid, @CheckForNull UID programUid)
throws NotFoundException {
TrackedEntity trackedEntity = trackedEntityStore.getByUid(trackedEntityUid.getValue());
if (trackedEntity == null) {
if (trackedEntity == null || trackedEntity.isDeleted()) {
throw new NotFoundException(TrackedEntity.class, trackedEntityUid.getValue());
}

Expand Down Expand Up @@ -238,7 +238,7 @@ private TrackedEntity getTrackedEntity(
UID uid, Program program, TrackedEntityParams params, UserDetails user)
throws NotFoundException, ForbiddenException, BadRequestException {
TrackedEntity trackedEntity = trackedEntityStore.getByUid(uid.getValue());
if (trackedEntity == null) {
if (trackedEntity == null || trackedEntity.isDeleted()) {
throw new NotFoundException(TrackedEntity.class, uid);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,13 @@
import static org.hisp.dhis.util.DateUtils.toLongGmtDate;

import jakarta.persistence.EntityManager;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.function.LongSupplier;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
Expand Down Expand Up @@ -1105,15 +1101,4 @@ private String getFromSubQueryLimitAndOffset(
.toString();
}
}

@Override
protected void preProcessPredicates(
CriteriaBuilder builder, List<Function<Root<TrackedEntity>, Predicate>> predicates) {
predicates.add(root -> builder.equal(root.get("deleted"), false));
}

@Override
protected TrackedEntity postProcessObject(TrackedEntity trackedEntity) {
return (trackedEntity == null || trackedEntity.isDeleted()) ? null : trackedEntity;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,11 @@ public void emptyDatabase() {
emptyTable("eventchangelog");
emptyTable("trackedentityprogramowner");

emptyTable("programmessage_phonenumbers");
emptyTable("programmessage_emailaddresses");
emptyTable("programmessage_deliverychannels");
emptyTable("programmessage");

emptyTable("event_notes");
emptyTable("enrollment_notes");
emptyTable("note");
Expand Down
Loading

0 comments on commit 111fbbd

Please sign in to comment.