Skip to content

Commit

Permalink
Use jpa model gen
Browse files Browse the repository at this point in the history
Signed-off-by: montesm <montesm@objectcomputing.com>
  • Loading branch information
montesmoci committed May 1, 2024
1 parent e11f21a commit 6e3af59
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 42 deletions.
11 changes: 2 additions & 9 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ dependencies {
annotationProcessor("io.micronaut:micronaut-http-validation")
annotationProcessor("io.micronaut.security:micronaut-security-annotations")
annotationProcessor("io.micronaut.openapi:micronaut-openapi")
implementation("org.hibernate:hibernate-jpamodelgen-jakarta")
annotationProcessor("org.hibernate:hibernate-jpamodelgen:5.6.15.Final")
compileOnly("org.hibernate:hibernate-jpamodelgen:5.6.15.Final")
implementation("io.micronaut:micronaut-http-client")
implementation("io.micronaut:micronaut-jackson-databind")
implementation("jakarta.annotation:jakarta.annotation-api")
Expand Down Expand Up @@ -62,14 +63,6 @@ dependencies {
}
}

sourceSets {
generated {
java {
srcDirs = ["$build/generated/java"]
}
}
}

application {
mainClass.set("app.Application")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

package app.model.servicerequest;

import app.model.jurisdiction.Jurisdiction_;
import app.model.service.Service_;
import io.micronaut.data.annotation.Repository;
import io.micronaut.data.jpa.repository.JpaSpecificationExecutor;
import io.micronaut.data.jpa.repository.criteria.Specification;
Expand All @@ -28,18 +30,23 @@
import java.util.Optional;

@Repository
public interface ServiceRequestRepository extends PageableRepository<ServiceRequest, Long>, JpaSpecificationExecutor<ServiceRequest> {
public interface ServiceRequestRepository extends PageableRepository<ServiceRequest, Long>,
JpaSpecificationExecutor<ServiceRequest> {

Page<ServiceRequest> findByIdInAndJurisdictionId(List<Long> serviceRequestIds, String jurisdictionId,
Pageable pageable);

Page<ServiceRequest> findByIdInAndJurisdictionId(List<Long> serviceRequestIds, String jurisdictionId, Pageable pageable);
List<ServiceRequest> findByIdInAndJurisdictionId(List<Long> serviceRequestIds, String jurisdictionId, Sort sort);

Optional<ServiceRequest> findByIdAndJurisdictionId(Long serviceRequestId, String jurisdictionId);

@Transactional
default Page<ServiceRequest> findAllBy(String jurisdictionId, List<Long> serviceCodes,
List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority,
Instant startDate, Instant endDate, Pageable pageable) {

Specification<ServiceRequest> specification = getServiceRequestSpecification(jurisdictionId, serviceCodes, status, priority, startDate, endDate);
Specification<ServiceRequest> specification = getServiceRequestSpecification(jurisdictionId, serviceCodes,
status, priority, startDate, endDate);

return findAll(specification, pageable);
}
Expand All @@ -49,71 +56,72 @@ default List<ServiceRequest> findAllBy(String jurisdictionId, List<Long> service
List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority,
Instant startDate, Instant endDate, Sort sort) {

Specification<ServiceRequest> specification = getServiceRequestSpecification(jurisdictionId, serviceCodes, status, priority, startDate, endDate);
Specification<ServiceRequest> specification = getServiceRequestSpecification(jurisdictionId, serviceCodes,
status, priority, startDate, endDate);

return findAll(specification, sort);
}

private static Specification<ServiceRequest> getServiceRequestSpecification(String jurisdictionId, List<Long> serviceCodes, List<ServiceRequestStatus> status, List<ServiceRequestPriority> priority, Instant startDate, Instant endDate) {
Specification<ServiceRequest> specification;
specification = (root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get("jurisdiction_id"), jurisdictionId);
private static Specification<ServiceRequest> getServiceRequestSpecification(String jurisdictionId,
List<Long> serviceCodes,
List<ServiceRequestStatus> status,
List<ServiceRequestPriority> priority,
Instant startDate, Instant endDate) {
Specification<ServiceRequest> specification =
(root, query, criteriaBuilder) -> criteriaBuilder.equal(root.get(ServiceRequest_.jurisdiction).get(Jurisdiction_.id), jurisdictionId);

if (serviceCodes != null && !serviceCodes.isEmpty()) {
specification.and(Specifications.serviceCodeIn(serviceCodes));
specification = specification.and(Specifications.serviceCodeIn(serviceCodes));
}

if (status != null && !status.isEmpty()) {
specification.and(Specifications.statusIn(status));
specification = specification.and(Specifications.statusIn(status));
}

if (priority != null && !priority.isEmpty()) {
specification.and(Specifications.priorityIn(priority));
specification = specification.and(Specifications.priorityIn(priority));
}

if (startDate != null && endDate != null) {
specification.and(Specifications.createdDateBetween(startDate, endDate));
} else if (startDate != null && endDate == null) {
specification.and(Specifications.createdDateAfter(startDate));
} else if (startDate == null && endDate != null) {
specification.and(Specifications.createdDateBefore(endDate));
specification = specification.and(Specifications.createdDateBetween(startDate, endDate));
} else if (startDate != null) {
specification = specification.and(Specifications.createdDateAfter(startDate));
} else if (endDate != null) {
specification = specification.and(Specifications.createdDateBefore(endDate));
}

return specification;
}

class Specifications {

// serviceCode
public static Specification<ServiceRequest> serviceCodeIn(List<Long> serviceCodes) {
return (root, query, criteriaBuilder)
-> root.get("service_id").in(serviceCodes);
return (root, query, criteriaBuilder) -> root.get(ServiceRequest_.service).get(Service_.id).in(serviceCodes);
}

// status
public static Specification<ServiceRequest> statusIn(List<ServiceRequestStatus> serviceRequestStatuses) {
return (root, query, criteriaBuilder)
-> root.get("service_id").in(serviceRequestStatuses);
return (root, query, criteriaBuilder) -> root.get(ServiceRequest_.status).in(serviceRequestStatuses);
}

// priority
public static Specification<ServiceRequest> priorityIn(List<ServiceRequestPriority> serviceRequestPriorities) {
return (root, query, criteriaBuilder)
-> root.get("service_id").in(serviceRequestPriorities);
return (root, query, criteriaBuilder) -> root.get(ServiceRequest_.priority).in(serviceRequestPriorities);
}

// dateCreated
public static Specification<ServiceRequest> createdDateBetween(Instant startDate, Instant endDate) {
return (root, query, criteriaBuilder)
-> criteriaBuilder.between(root.get(ServiceRequest_.dateCreated), startDate, endDate);
return (root, query, criteriaBuilder) -> criteriaBuilder.between(root.get(ServiceRequest_.dateCreated),
startDate, endDate);
}

public static Specification<ServiceRequest> createdDateAfter(Instant instant) {
return (root, query, criteriaBuilder)
-> criteriaBuilder.greaterThanOrEqualTo(root.get("date_created"), instant);
return (root, query, criteriaBuilder) -> criteriaBuilder.greaterThanOrEqualTo(root.get(ServiceRequest_.dateCreated), instant);
}

public static Specification<ServiceRequest> createdDateBefore(Instant instant) {
return (root, query, criteriaBuilder)
-> criteriaBuilder.lessThanOrEqualTo(root.get("date_created"), instant);
return (root, query, criteriaBuilder) -> criteriaBuilder.lessThanOrEqualTo(root.get(ServiceRequest_.dateCreated), instant);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,6 @@ public ServiceRequestDTO getServiceRequest(Long serviceRequestId, String jurisdi
.orElse(null);
}

public SensitiveServiceRequestDTO getSensitiveServiceRequest(Long serviceRequestId, String jurisdictionId) {
return findServiceRequest(serviceRequestId, jurisdictionId)
.map(ServiceRequestService::convertToSensitiveDTO)
.orElse(null);
}

private Optional<ServiceRequest> findServiceRequest(Long serviceRequestId, String jurisdictionId) {
return serviceRequestRepository.findByIdAndJurisdictionId(serviceRequestId, jurisdictionId);
}
Expand Down

0 comments on commit 6e3af59

Please sign in to comment.