From fc198aa34f581dea07e817231df0bdb2e06e94be Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Thu, 5 Oct 2023 14:25:40 +0200 Subject: [PATCH] DM-285: added componentLog sorting in ComponentLogService --- .../controller/RSSComponentLogController.java | 71 +--------------- .../service/ComponentLogService.java | 85 ++++++++++++++++++- publish-custom-docker-img.sh | 2 +- 3 files changed, 87 insertions(+), 71 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RSSComponentLogController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RSSComponentLogController.java index 6d2e6538c..03d9b4915 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RSSComponentLogController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/RSSComponentLogController.java @@ -2,7 +2,6 @@ package com.iqser.red.persistence.service.v1.external.api.impl.controller; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.GET_RSS; -import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; @@ -76,7 +75,7 @@ public class RSSComponentLogController implements RSSResource { Map results = new LinkedHashMap<>(); - componentLog.getComponentLogEntries().stream().sorted(new ComponentOrderComparator()).forEach(entry -> { + componentLog.getComponentLogEntries().forEach(entry -> { if (entry.getComponentValues().size() <= 1) { results.put(entry.getName(), entry.getComponentValues().get(0).getValue()); return; @@ -116,7 +115,7 @@ public class RSSComponentLogController implements RSSResource { Map results = new LinkedHashMap<>(); - componentLog.getComponentLogEntries().stream().sorted(new ComponentOrderComparator()).forEach(entry -> { + componentLog.getComponentLogEntries().forEach(entry -> { if (entry.getComponentValues().size() <= 1) { results.put(entry.getName(), toSCMComponent(entry.getComponentValues().get(0))); return; @@ -262,70 +261,4 @@ public class RSSComponentLogController implements RSSResource { .orElse(""); } - - private static class ComponentOrderComparator implements Comparator { - - private static final List ORDER = List.of("Study_Title", - "Performing_Laboratory", - "Report_Number", - "GLP_Study", - "Test_Guidelines_1", - "Test_Guidelines_2", - "Experimental_Starting_Date", - "Experimental_Completion_Date", - "Certificate_of_Analysis_Batch_Identification", - "Species", - "Strain", - "Was_the_definitive_study_conducted_with_positive_control", - "Results_Main_Study", - "Preliminary_Test_Results", - "What_was_the_approach_used", - "Sex", - "Number_of_Animals", - "Study_Design", - "Test_Results", - "Results_and_Conclusions", - "Conducted_with_4_Hours_of_Exposure", - "Dosages", - "Doses_mg_per_kg_bw", - "Mortality", - "Dose_Mortality", - "Mortality_Statement", - "Weight_Behavior_Changes", - "Clinical_Observations", - "Clinical_Signs", - "Body_Weight_Changes", - "Necropsy_Findings", - "Detailing_of_Reported_Changes", - "Deviation_from_the_Guideline", - "Conclusion_LD50_Greater_than", - "Conclusion_LD50_mg_per_kg", - "Conclusion_Minimum_Confidence", - "Conclusion_Maximum_Confidence", - "Study_Conclusion"); - - - @Override - public int compare(ComponentLogEntry entry1, ComponentLogEntry entry2) { - - String name1 = entry1.getName(); - String name2 = entry2.getName(); - boolean thisInList = ORDER.contains(name1); - boolean otherInList = ORDER.contains(name2); - - // Compare the types - if (thisInList && !otherInList) { - return -1; - } else if (!thisInList && otherInList) { - return 1; - } else if (thisInList && otherInList) { - int thisIndex = ORDER.indexOf(name1); - int otherIndex = ORDER.indexOf(name2); - return Integer.compare(thisIndex, otherIndex); - } - return String.CASE_INSENSITIVE_ORDER.compare(name1, name2); - } - - } - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java index d225d8c1c..ae647570f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ComponentLogService.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service; +import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -9,7 +10,9 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentsOverrides; +import lombok.AccessLevel; import lombok.RequiredArgsConstructor; +import lombok.experimental.FieldDefaults; @Service @RequiredArgsConstructor @@ -18,10 +21,51 @@ public class ComponentLogService { private final FileManagementStorageService fileManagementStorageService; private final ComponentOverrideService componentOverrideService; + // TODO: make this DB changeable! + private static final List ORDER = List.of("Study_Title", + "Performing_Laboratory", + "Report_Number", + "GLP_Study", + "Test_Guidelines_1", + "Test_Guidelines_2", + "Experimental_Starting_Date", + "Experimental_Completion_Date", + "Certificate_of_Analysis_Batch_Identification", + "Species", + "Strain", + "Was_the_definitive_study_conducted_with_positive_control", + "Results_Main_Study", + "Preliminary_Test_Results", + "What_was_the_approach_used", + "Sex", + "Number_of_Animals", + "Study_Design", + "Test_Results", + "Results_and_Conclusions", + "Conducted_with_4_Hours_of_Exposure", + "Dosages", + "Doses_mg_per_kg_bw", + "Mortality", + "Dose_Mortality", + "Mortality_Statement", + "Weight_Behavior_Changes", + "Clinical_Observations", + "Clinical_Signs", + "Body_Weight_Changes", + "Necropsy_Findings", + "Detailing_of_Reported_Changes", + "Deviation_from_the_Guideline", + "Conclusion_LD50_Greater_than", + "Conclusion_LD50_mg_per_kg", + "Conclusion_Minimum_Confidence", + "Conclusion_Maximum_Confidence", + "Study_Conclusion"); + public ComponentLog getComponentLog(String dossierId, String fileId, boolean includeOverrides) { - ComponentLog componentLog = fileManagementStorageService.getComponentLog(dossierId, fileId); + ComponentLog componentLog = sortComponentLogEntriesByOrderList(fileManagementStorageService.getComponentLog(dossierId, fileId), ORDER); + if (!includeOverrides) { return componentLog; } @@ -42,6 +86,14 @@ public class ComponentLogService { } + private ComponentLog sortComponentLogEntriesByOrderList(ComponentLog componentLog, List order) { + + return new ComponentLog(componentLog.getAnalysisNumber(), + componentLog.getComponentRulesVersion(), + componentLog.getComponentLogEntries().stream().sorted(new ComponentOrderComparator(order)).toList()); + } + + public ComponentLog getComponentLog(String dossierId, String fileId) { return getComponentLog(dossierId, fileId, true); @@ -58,4 +110,35 @@ public class ComponentLogService { return componentLogEntry; } + + @RequiredArgsConstructor + @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) + private static class ComponentOrderComparator implements Comparator { + + List order; + + + @Override + public int compare(ComponentLogEntry entry1, ComponentLogEntry entry2) { + + String name1 = entry1.getName(); + String name2 = entry2.getName(); + boolean thisInList = order.contains(name1); + boolean otherInList = order.contains(name2); + + // Compare the types + if (thisInList && !otherInList) { + return -1; + } else if (!thisInList && otherInList) { + return 1; + } else if (thisInList && otherInList) { + int thisIndex = order.indexOf(name1); + int otherIndex = order.indexOf(name2); + return Integer.compare(thisIndex, otherIndex); + } + return String.CASE_INSENSITIVE_ORDER.compare(name1, name2); + } + + } + } diff --git a/publish-custom-docker-img.sh b/publish-custom-docker-img.sh index 4f282415d..d5ff0a524 100755 --- a/publish-custom-docker-img.sh +++ b/publish-custom-docker-img.sh @@ -17,7 +17,7 @@ GIT_BRANCH=$(git symbolic-ref --short HEAD) # Get the first 5 characters of the commit hash GIT_COMMIT_HASH=$(git rev-parse --short=5 HEAD) # Create the image tag by combining branch and commit hash -IMAGE_TAG="${GIT_BRANCH}-${GIT_COMMIT_HASH}" +IMAGE_TAG="${USER}-${GIT_BRANCH}-${GIT_COMMIT_HASH}" IMAGE_NAME="$NEXUS_REPO/$IMAGE_NAME:$IMAGE_TAG" echo "Building docker image: {$IMAGE_NAME}" -- 2.47.2