Skip to content

Commit

Permalink
Refactor analytics services and controllers for improved readability …
Browse files Browse the repository at this point in the history
…and consistency
  • Loading branch information
LeonardoMeireles55 committed Jan 21, 2025
1 parent 50f8d9d commit b35eae8
Show file tree
Hide file tree
Showing 8 changed files with 201 additions and 216 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package leonardo.labutilities.qualitylabpro.controllers.analytics;

import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.validation.Valid;
import leonardo.labutilities.qualitylabpro.dtos.analytics.*;
import leonardo.labutilities.qualitylabpro.services.analytics.AnalyticsHelperService;
import org.springdoc.core.annotations.ParameterObject;
Expand All @@ -25,39 +24,38 @@
@RestController()
public abstract class AnalyticsController extends AnalyticsHelperController {

public AnalyticsController(AnalyticsHelperService analyticsHelperService) {
super(analyticsHelperService);
}
@GetMapping()
public abstract ResponseEntity<CollectionModel<EntityModel<AnalyticsRecord>>> getAllAnalytics(
@PageableDefault(sort = "date", direction = Sort.Direction.DESC)
@ParameterObject Pageable pageable);


@GetMapping("/date-range")
public abstract ResponseEntity<Page<AnalyticsRecord>> getAnalyticsDateBetween(
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate,
@PageableDefault(sort = "date", direction = Sort.Direction.DESC) @ParameterObject Pageable pageable);

@GetMapping("/level-date-range")
public abstract ResponseEntity<Page<AnalyticsRecord>> getAllAnalyticsByLevelDateRange(
@RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate,
@ParameterObject Pageable pageable);

@GetMapping("/name-and-level-date-range")
public abstract ResponseEntity<List<AnalyticsRecord>> getAllAnalyticsByNameAndLevelDateRange(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate);

@GetMapping("/mean-standard-deviation")
public abstract ResponseEntity<MeanAndStdDeviationRecord> getMeanAndStandardDeviation(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate);
public AnalyticsController(AnalyticsHelperService analyticsHelperService) {
super(analyticsHelperService);
}

@GetMapping()
public abstract ResponseEntity<CollectionModel<EntityModel<AnalyticsRecord>>> getAllAnalytics(
@PageableDefault(sort = "date",
direction = Sort.Direction.DESC) @ParameterObject Pageable pageable);


@GetMapping("/date-range")
public abstract ResponseEntity<Page<AnalyticsRecord>> getAnalyticsDateBetween(
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @PageableDefault(sort = "date",
direction = Sort.Direction.DESC) @ParameterObject Pageable pageable);

@GetMapping("/level-date-range")
public abstract ResponseEntity<Page<AnalyticsRecord>> getAllAnalyticsByLevelDateRange(
@RequestParam String level, @RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @ParameterObject Pageable pageable);

@GetMapping("/name-and-level-date-range")
public abstract ResponseEntity<List<AnalyticsRecord>> getAllAnalyticsByNameAndLevelDateRange(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate);

@GetMapping("/mean-standard-deviation")
public abstract ResponseEntity<MeanAndStdDeviationRecord> getMeanAndStandardDeviation(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate);
}


Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@
import leonardo.labutilities.qualitylabpro.dtos.analytics.GroupedResultsByLevel;
import leonardo.labutilities.qualitylabpro.dtos.analytics.UpdateAnalyticsMeanRecord;
import leonardo.labutilities.qualitylabpro.services.analytics.AnalyticsHelperService;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
Expand Down Expand Up @@ -55,21 +52,18 @@ public ResponseEntity<List<AnalyticsRecord>> postAnalytics(
}

@PatchMapping()
public ResponseEntity<Void>
updateAnalyticsMean(@Valid @RequestBody UpdateAnalyticsMeanRecord updateAnalyticsMeanRecord) {
public ResponseEntity<Void> updateAnalyticsMean(
@Valid @RequestBody UpdateAnalyticsMeanRecord updateAnalyticsMeanRecord) {
analyticsHelperService.updateAnalyticsMeanByNameAndLevelAndLevelLot(
updateAnalyticsMeanRecord.name(),
updateAnalyticsMeanRecord.level(),
updateAnalyticsMeanRecord.levelLot(),
updateAnalyticsMeanRecord.mean());
updateAnalyticsMeanRecord.name(), updateAnalyticsMeanRecord.level(),
updateAnalyticsMeanRecord.levelLot(), updateAnalyticsMeanRecord.mean());
return ResponseEntity.noContent().build();
}

@GetMapping("/grouped-by-level")
public ResponseEntity<List<GroupedResultsByLevel>> getGroupedByLevel
(@RequestParam String name,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
public ResponseEntity<List<GroupedResultsByLevel>> getGroupedByLevel(@RequestParam String name,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
List<GroupedResultsByLevel> groupedData =
analyticsHelperService.findAnalyticsWithGroupedResults(name, startDate, endDate);
return ResponseEntity.ok(groupedData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import leonardo.labutilities.qualitylabpro.constants.AvailableBiochemistryAnalytics;
import leonardo.labutilities.qualitylabpro.dtos.analytics.AnalyticsRecord;
import leonardo.labutilities.qualitylabpro.dtos.analytics.DefaultMeanAndStdRecord;
import leonardo.labutilities.qualitylabpro.dtos.analytics.MeanAndStdDeviationRecord;
import leonardo.labutilities.qualitylabpro.services.analytics.BiochemistryAnalyticsService;
import org.springdoc.core.annotations.ParameterObject;
Expand All @@ -29,61 +28,61 @@
@RestController()
public class BiochemistryAnalyticsController extends AnalyticsController {

private static final List<String> names =
new AvailableBiochemistryAnalytics().availableBioAnalytics();
private final BiochemistryAnalyticsService biochemistryAnalyticsService;
private static final List<String> names =
new AvailableBiochemistryAnalytics().availableBioAnalytics();
private final BiochemistryAnalyticsService biochemistryAnalyticsService;

public BiochemistryAnalyticsController(
BiochemistryAnalyticsService biochemistryAnalyticsService) {
super(biochemistryAnalyticsService);
this.biochemistryAnalyticsService = biochemistryAnalyticsService;
}
@Override
@GetMapping()
public ResponseEntity<CollectionModel<EntityModel<AnalyticsRecord>>> getAllAnalytics(
@PageableDefault(sort = "date", direction = Sort.Direction.DESC)
@ParameterObject Pageable pageable) {
return this.getAllAnalyticsWithLinks(names, pageable);
}
public BiochemistryAnalyticsController(
BiochemistryAnalyticsService biochemistryAnalyticsService) {
super(biochemistryAnalyticsService);
this.biochemistryAnalyticsService = biochemistryAnalyticsService;
}

@GetMapping("/date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAnalyticsDateBetween(
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @PageableDefault(sort = "date", direction = Sort.Direction.DESC) @ParameterObject Pageable pageable) {
return ResponseEntity.ok
(biochemistryAnalyticsService
.findAnalyticsByNameInAndDateBetween(names, startDate, endDate, pageable));
}
@Override
@GetMapping()
public ResponseEntity<CollectionModel<EntityModel<AnalyticsRecord>>> getAllAnalytics(
@PageableDefault(sort = "date",
direction = Sort.Direction.DESC) @ParameterObject Pageable pageable) {
return this.getAllAnalyticsWithLinks(names, pageable);
}

@Override
@GetMapping("/level-date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAllAnalyticsByLevelDateRange(
@RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate,
@ParameterObject Pageable pageable) {
return ResponseEntity.ok(biochemistryAnalyticsService
.findAnalyticsByNameInByLevel(names, level, startDate, endDate, pageable));
}
@Override
@GetMapping("/date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAnalyticsDateBetween(
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @PageableDefault(sort = "date",
direction = Sort.Direction.DESC) @ParameterObject Pageable pageable) {
return ResponseEntity.ok(biochemistryAnalyticsService
.findAnalyticsByNameInAndDateBetween(names, startDate, endDate, pageable));
}

@Override
@GetMapping("/name-and-level-date-range")
public ResponseEntity<List<AnalyticsRecord>> getAllAnalyticsByNameAndLevelDateRange(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(biochemistryAnalyticsService
.findAnalyticsByNameAndLevelAndDate(name, level, startDate, endDate));
}
@Override
@GetMapping("/level-date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAllAnalyticsByLevelDateRange(
@RequestParam String level, @RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @ParameterObject Pageable pageable) {
return ResponseEntity.ok(biochemistryAnalyticsService.findAnalyticsByNameInByLevel(names,
level, startDate, endDate, pageable));
}

@Override
@GetMapping("/name-and-level-date-range")
public ResponseEntity<List<AnalyticsRecord>> getAllAnalyticsByNameAndLevelDateRange(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(biochemistryAnalyticsService
.findAnalyticsByNameAndLevelAndDate(name, level, startDate, endDate));
}

@Override
@GetMapping("/mean-standard-deviation")
public ResponseEntity<MeanAndStdDeviationRecord> getMeanAndStandardDeviation(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(biochemistryAnalyticsService.calculateMeanAndStandardDeviation(
name, level, startDate, endDate));
}

@Override
@GetMapping("/mean-standard-deviation")
public ResponseEntity<MeanAndStdDeviationRecord> getMeanAndStandardDeviation(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(biochemistryAnalyticsService
.calculateMeanAndStandardDeviation(name, level, startDate, endDate));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import leonardo.labutilities.qualitylabpro.constants.AvailableCoagulationAnalytics;
import leonardo.labutilities.qualitylabpro.dtos.analytics.AnalyticsRecord;
import leonardo.labutilities.qualitylabpro.dtos.analytics.DefaultMeanAndStdRecord;
import leonardo.labutilities.qualitylabpro.dtos.analytics.MeanAndStdDeviationRecord;
import leonardo.labutilities.qualitylabpro.services.analytics.CoagulationAnalyticsService;
import org.springdoc.core.annotations.ParameterObject;
Expand All @@ -29,61 +28,62 @@
@RestController()
public class CoagulationAnalyticsController extends AnalyticsController {

private static final List<String> names =
new AvailableCoagulationAnalytics().availableCoagulationAnalytics();
private final CoagulationAnalyticsService coagulationAnalyticsService;
private static final List<String> names =
new AvailableCoagulationAnalytics().availableCoagulationAnalytics();
private final CoagulationAnalyticsService coagulationAnalyticsService;

public CoagulationAnalyticsController(CoagulationAnalyticsService coagulationAnalyticsService) {
super(coagulationAnalyticsService);
this.coagulationAnalyticsService = coagulationAnalyticsService;
}
@Override
@GetMapping()
public ResponseEntity<CollectionModel<EntityModel<AnalyticsRecord>>> getAllAnalytics(
@PageableDefault(sort = "date", direction = Sort.Direction.DESC) @ParameterObject Pageable pageable) {
return this.getAllAnalyticsWithLinks(names, pageable);
}
public CoagulationAnalyticsController(CoagulationAnalyticsService coagulationAnalyticsService) {
super(coagulationAnalyticsService);
this.coagulationAnalyticsService = coagulationAnalyticsService;
}

@GetMapping("/date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAnalyticsDateBetween(
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @PageableDefault(sort = "date", direction = Sort.Direction.DESC) @ParameterObject Pageable pageable) {
return ResponseEntity.ok
(coagulationAnalyticsService
.findAnalyticsByNameInAndDateBetween(names, startDate, endDate, pageable));
}
@Override
@GetMapping()
public ResponseEntity<CollectionModel<EntityModel<AnalyticsRecord>>> getAllAnalytics(
@PageableDefault(sort = "date",
direction = Sort.Direction.DESC) @ParameterObject Pageable pageable) {
return this.getAllAnalyticsWithLinks(names, pageable);
}

@Override
@GetMapping("/name-and-level-date-range")
public ResponseEntity<List<AnalyticsRecord>> getAllAnalyticsByNameAndLevelDateRange(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(coagulationAnalyticsService
.findAnalyticsByNameAndLevelAndDate(name, level, startDate, endDate));
}
@Override
@GetMapping("/date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAnalyticsDateBetween(
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @PageableDefault(sort = "date",
direction = Sort.Direction.DESC) @ParameterObject Pageable pageable) {
return ResponseEntity.ok(coagulationAnalyticsService
.findAnalyticsByNameInAndDateBetween(names, startDate, endDate, pageable));
}

@Override
@GetMapping("/level-date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAllAnalyticsByLevelDateRange(
@RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate,
@ParameterObject Pageable pageable) {
return ResponseEntity.ok(coagulationAnalyticsService
.findAnalyticsByNameInByLevel(names, level, startDate, endDate, pageable));
}
@Override
@GetMapping("/name-and-level-date-range")
public ResponseEntity<List<AnalyticsRecord>> getAllAnalyticsByNameAndLevelDateRange(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(coagulationAnalyticsService
.findAnalyticsByNameAndLevelAndDate(name, level, startDate, endDate));
}

@Override
@GetMapping("/level-date-range")
public ResponseEntity<Page<AnalyticsRecord>> getAllAnalyticsByLevelDateRange(
@RequestParam String level, @RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate, @ParameterObject Pageable pageable) {
return ResponseEntity.ok(coagulationAnalyticsService.findAnalyticsByNameInByLevel(names,
level, startDate, endDate, pageable));
}


@Override
@GetMapping("/mean-standard-deviation")
public ResponseEntity<MeanAndStdDeviationRecord> getMeanAndStandardDeviation(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(coagulationAnalyticsService.calculateMeanAndStandardDeviation(
name, level, startDate, endDate));

}
@Override
@GetMapping("/mean-standard-deviation")
public ResponseEntity<MeanAndStdDeviationRecord> getMeanAndStandardDeviation(
@RequestParam String name, @RequestParam String level,
@RequestParam("startDate") LocalDateTime startDate,
@RequestParam("endDate") LocalDateTime endDate) {
return ResponseEntity.ok(coagulationAnalyticsService.calculateMeanAndStandardDeviation(name,
level, startDate, endDate));

}
}
Loading

0 comments on commit b35eae8

Please sign in to comment.