From b3094df95c853e642e6bca78ed3f71d507429950 Mon Sep 17 00:00:00 2001 From: jmedinaebi Date: Tue, 7 Oct 2025 10:29:16 +0100 Subject: [PATCH] Return released dates as part of complex details response --- .../service/complex/ws/ComplexManager.java | 19 ++++++++++++++++++- .../complex/ws/model/ComplexDetails.java | 2 ++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/uk/ac/ebi/intact/service/complex/ws/ComplexManager.java b/src/main/java/uk/ac/ebi/intact/service/complex/ws/ComplexManager.java index 8f14b0b71..99218f0e6 100644 --- a/src/main/java/uk/ac/ebi/intact/service/complex/ws/ComplexManager.java +++ b/src/main/java/uk/ac/ebi/intact/service/complex/ws/ComplexManager.java @@ -17,12 +17,17 @@ import uk.ac.ebi.intact.dataexchange.psimi.solr.complex.ComplexSearchResults; import uk.ac.ebi.intact.jami.dao.IntactDao; import uk.ac.ebi.intact.jami.model.extension.IntactComplex; +import uk.ac.ebi.intact.jami.model.lifecycle.LifeCycleEvent; +import uk.ac.ebi.intact.jami.model.lifecycle.LifeCycleEventType; import uk.ac.ebi.intact.service.complex.ws.model.ComplexDetails; import uk.ac.ebi.intact.service.complex.ws.model.ComplexRestResult; import uk.ac.ebi.intact.service.complex.ws.utils.IntactComplexUtils; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -64,6 +69,7 @@ public search(@PathVariable String ) { /* Private attributes */ /********************************/ + private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); private final DataProvider dataProvider; private final IntactDao intactDao; @@ -107,7 +113,8 @@ private ComplexDetails newComplexDetails(IntactComplex complex) { .antagonists(IntactComplexUtils.getAntagonists(complex)) .comments(IntactComplexUtils.getComments(complex)) .predictedComplex(complex.isPredictedComplex()) - .evidenceType(IntactComplexUtils.createEvidenceType(complex.getEvidenceType())); + .evidenceType(IntactComplexUtils.createEvidenceType(complex.getEvidenceType())) + .releaseDates(getReleaseDates(complex)); IntactComplexUtils.setParticipants(complex, details); IntactComplexUtils.setCrossReferences(complex, details); return details.build(); @@ -236,4 +243,14 @@ private ComplexFinderResult.PartialMatch mapPartialMatch( complexMatch.getProteinMissingInComplex(), newComplexDetails(complexMatch.getComplex())); } + + private List getReleaseDates(IntactComplex complex) { + return complex.getLifecycleEvents().stream() + .filter(event -> LifeCycleEventType.RELEASED.equals(event.getEvent())) + .map(LifeCycleEvent::getWhen) + .sorted() + .map(DATE_FORMAT::format) + .distinct() + .collect(Collectors.toList()); + } } diff --git a/src/main/java/uk/ac/ebi/intact/service/complex/ws/model/ComplexDetails.java b/src/main/java/uk/ac/ebi/intact/service/complex/ws/model/ComplexDetails.java index ce5229476..bac3a10d0 100644 --- a/src/main/java/uk/ac/ebi/intact/service/complex/ws/model/ComplexDetails.java +++ b/src/main/java/uk/ac/ebi/intact/service/complex/ws/model/ComplexDetails.java @@ -5,6 +5,7 @@ import lombok.Value; import java.util.Collection; +import java.util.List; /** * This class is to map the details of a complex retrieved from the DB @@ -39,4 +40,5 @@ public class ComplexDetails { Collection comments; boolean predictedComplex; ComplexDetailsEvidenceType evidenceType; + List releaseDates; }