Skip to content

Commit 5c527d7

Browse files
Merge pull request #557 from qbicsoftware/development
Release 0.40.0
2 parents de72509 + eb2e574 commit 5c527d7

File tree

70 files changed

+3260
-756
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+3260
-756
lines changed

project-management-infrastructure/src/main/java/life/qbic/projectmanagement/infrastructure/experiment/measurement/MeasurementDataRepo.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package life.qbic.projectmanagement.infrastructure.experiment.measurement;
22

3+
import java.util.Collection;
34
import java.util.List;
5+
import java.util.Map;
6+
import life.qbic.projectmanagement.application.sample.SampleIdCodeEntry;
7+
import life.qbic.projectmanagement.domain.model.measurement.MeasurementCode;
48
import life.qbic.projectmanagement.domain.model.measurement.NGSMeasurement;
59
import life.qbic.projectmanagement.domain.model.measurement.ProteomicsMeasurement;
610
import life.qbic.projectmanagement.domain.model.sample.SampleCode;
@@ -16,6 +20,16 @@ public interface MeasurementDataRepo {
1620

1721
void addNGSMeasurement(NGSMeasurement ngsMeasurement, List<SampleCode> sampleCodes);
1822

19-
void addProtemicsMeasurement(ProteomicsMeasurement proteomicsMeasurement, List<SampleCode> sampleCodes);
23+
void addProteomicsMeasurement(ProteomicsMeasurement proteomicsMeasurement, List<SampleCode> sampleCodes);
2024

25+
void deleteProteomicsMeasurements(List<ProteomicsMeasurement> measurements);
26+
void deleteNGSMeasurements(List<NGSMeasurement> measurements);
27+
28+
void saveAllProteomics(
29+
Map<ProteomicsMeasurement, Collection<SampleIdCodeEntry>> proteomicsMeasurementsMapping);
30+
31+
void saveAllNGS(
32+
Map<NGSMeasurement, Collection<SampleIdCodeEntry>> ngsMeasurementsMapping);
33+
34+
boolean hasDataAttached(List<MeasurementCode> measurements);
2135
}

project-management-infrastructure/src/main/java/life/qbic/projectmanagement/infrastructure/experiment/measurement/MeasurementLookupImplementation.java

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package life.qbic.projectmanagement.infrastructure.experiment.measurement;
22

33
import jakarta.persistence.criteria.Expression;
4-
import java.util.ArrayList;
54
import java.util.Collection;
65
import java.util.List;
76
import life.qbic.application.commons.OffsetBasedRequest;
@@ -150,21 +149,15 @@ public List<NGSMeasurement> queryNGSMeasurementsBySampleIds(String filter,
150149
}
151150

152151
@Override
153-
public List<MeasurementMetadata> retrieveAllMeasurementsWithSampleIds(Collection<SampleId> sampleIds) {
154-
Specification<NGSMeasurement> ngsContainsSampleId = NgsMeasurementSpec.containsSampleId(
155-
sampleIds);
156-
Specification<ProteomicsMeasurement> proteomicsContainsSampleId = ProteomicsMeasurementSpec.containsSampleId(
157-
sampleIds);
158-
List<MeasurementMetadata> measurements = new ArrayList<>();
159-
measurements.addAll(ngsMeasurementJpaRepo.findAll(ngsContainsSampleId));
160-
measurements.addAll(pxpMeasurementJpaRepo.findAll(proteomicsContainsSampleId));
161-
return measurements;
152+
public List<ProteomicsMeasurement> findProteomicsMeasurementsBySampleIds(
153+
Collection<SampleId> sampleIds) {
154+
return pxpMeasurementJpaRepo.findAll(ProteomicsMeasurementSpec.containsSampleId(sampleIds));
162155
}
163156

164157
@Override
165-
public List<ProteomicsMeasurement> findProteomicsMeasurementsBySampleIds(
158+
public List<NGSMeasurement> findNGSMeasurementsBySampleIds(
166159
Collection<SampleId> sampleIds) {
167-
return pxpMeasurementJpaRepo.findAll(ProteomicsMeasurementSpec.containsSampleId(sampleIds));
160+
return ngsMeasurementJpaRepo.findAll(NgsMeasurementSpec.containsSampleId(sampleIds));
168161
}
169162

170163
private Specification<NGSMeasurement> generateNGSFilterSpecification(

project-management-infrastructure/src/main/java/life/qbic/projectmanagement/infrastructure/experiment/measurement/MeasurementRepositoryImplementation.java

+111-4
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@
44

55
import java.util.Collection;
66
import java.util.List;
7+
import java.util.Map;
78
import java.util.Optional;
9+
import java.util.Set;
810
import life.qbic.application.commons.Result;
911
import life.qbic.logging.api.Logger;
12+
import life.qbic.projectmanagement.application.measurement.MeasurementService.DeletionErrorCode;
13+
import life.qbic.projectmanagement.application.measurement.MeasurementService.MeasurementDeletionException;
14+
import life.qbic.projectmanagement.application.sample.SampleIdCodeEntry;
1015
import life.qbic.projectmanagement.domain.model.measurement.MeasurementCode;
1116
import life.qbic.projectmanagement.domain.model.measurement.NGSMeasurement;
1217
import life.qbic.projectmanagement.domain.model.measurement.ProteomicsMeasurement;
@@ -68,7 +73,7 @@ public Result<ProteomicsMeasurement, ResponseCode> save(
6873
return Result.fromError(ResponseCode.FAILED);
6974
}
7075
try {
71-
measurementDataRepo.addProtemicsMeasurement(measurement, sampleCodes);
76+
measurementDataRepo.addProteomicsMeasurement(measurement, sampleCodes);
7277
} catch (RuntimeException e) {
7378
log.error("Saving proteomics measurement in data repo failed for measurement "
7479
+ measurement.measurementCode().value(), e);
@@ -80,24 +85,126 @@ public Result<ProteomicsMeasurement, ResponseCode> save(
8085
}
8186

8287
@Override
83-
public Optional<ProteomicsMeasurement> find(String measurementCode) {
88+
public Optional<ProteomicsMeasurement> findProteomicsMeasurement(String measurementCode) {
8489
try {
8590
var code = MeasurementCode.parse(measurementCode);
8691
return pxpMeasurementJpaRepo.findProteomicsMeasurementByMeasurementCode(code);
8792
} catch (IllegalArgumentException e) {
8893
log.error("Illegal measurement code: " + measurementCode, e);
8994
return Optional.empty();
9095
}
96+
}
97+
98+
@Override
99+
public void deleteAllProteomics(Set<ProteomicsMeasurement> measurements) {
100+
if(measurements.isEmpty()) {
101+
return;
102+
}
103+
List<MeasurementCode> measurementCodes = measurements.stream()
104+
.map(ProteomicsMeasurement::measurementCode).toList();
105+
if(measurementDataRepo.hasDataAttached(measurementCodes)) {
106+
throw new MeasurementDeletionException(DeletionErrorCode.DATA_ATTACHED);
107+
}
108+
try {
109+
deleteAllPtx(measurements.stream().toList());
110+
} catch (Exception e) {
111+
log.error("Measurement deletion failed due to " + e.getMessage());
112+
throw new MeasurementDeletionException(DeletionErrorCode.FAILED);
113+
}
114+
}
115+
116+
@Override
117+
public void deleteAllNGS(Set<NGSMeasurement> measurements) {
118+
if(measurements.isEmpty()) {
119+
return;
120+
}
121+
List<MeasurementCode> measurementCodes = measurements.stream()
122+
.map(NGSMeasurement::measurementCode).toList();
123+
if(measurementDataRepo.hasDataAttached(measurementCodes)) {
124+
throw new MeasurementDeletionException(DeletionErrorCode.DATA_ATTACHED);
125+
}
126+
try {
127+
deleteAllNGS(measurements.stream().toList());
128+
} catch (Exception e) {
129+
log.error("Measurement deletion failed due to " + e.getMessage());
130+
throw new MeasurementDeletionException(DeletionErrorCode.FAILED);
131+
}
132+
}
133+
134+
private void deleteAllPtx(List<ProteomicsMeasurement> measurements) {
135+
pxpMeasurementJpaRepo.deleteAll(measurements);
136+
measurementDataRepo.deleteProteomicsMeasurements(measurements);
137+
}
91138

139+
private void deleteAllNGS(List<NGSMeasurement> measurements) {
140+
ngsMeasurementJpaRepo.deleteAll(measurements);
141+
measurementDataRepo.deleteNGSMeasurements(measurements);
142+
}
143+
144+
@Override
145+
public Optional<NGSMeasurement> findNGSMeasurement(String measurementCode) {
146+
try {
147+
var code = MeasurementCode.parse(measurementCode);
148+
return ngsMeasurementJpaRepo.findNGSMeasurementByMeasurementCode(code);
149+
} catch (IllegalArgumentException e) {
150+
log.error("Illegal measurement code: " + measurementCode, e);
151+
return Optional.empty();
152+
}
92153
}
93154

94155
@Override
95-
public void update(ProteomicsMeasurement measurement) {
156+
public void updateProteomics(ProteomicsMeasurement measurement) {
96157
pxpMeasurementJpaRepo.save(measurement);
97158
}
98159

99160
@Override
100-
public void updateAll(Collection<ProteomicsMeasurement> measurements) {
161+
public void updateNGS(NGSMeasurement measurement) {
162+
ngsMeasurementJpaRepo.save(measurement);
163+
}
164+
165+
@Override
166+
public void updateAllProteomics(Collection<ProteomicsMeasurement> measurements) {
101167
pxpMeasurementJpaRepo.saveAll(measurements);
102168
}
169+
170+
@Override
171+
public void updateAllNGS(Collection<NGSMeasurement> measurements) {
172+
ngsMeasurementJpaRepo.saveAll(measurements);
173+
}
174+
175+
@Override
176+
public void saveAllProteomics(
177+
Map<ProteomicsMeasurement, Collection<SampleIdCodeEntry>> proteomicsMeasurementsMapping) {
178+
try {
179+
pxpMeasurementJpaRepo.saveAll(proteomicsMeasurementsMapping.keySet());
180+
} catch (RuntimeException e) {
181+
log.error("Saving proteomics measurement failed", e);
182+
throw e;
183+
}
184+
try {
185+
measurementDataRepo.saveAllProteomics(proteomicsMeasurementsMapping);
186+
} catch (RuntimeException e) {
187+
log.error("Saving proteomics measurement in data repo failed", e);
188+
pxpMeasurementJpaRepo.deleteAll(proteomicsMeasurementsMapping.keySet());
189+
throw e;
190+
}
191+
}
192+
193+
@Override
194+
public void saveAllNGS(
195+
Map<NGSMeasurement, Collection<SampleIdCodeEntry>> ngsMeasurementsMapping) {
196+
try {
197+
ngsMeasurementJpaRepo.saveAll(ngsMeasurementsMapping.keySet());
198+
} catch (RuntimeException e) {
199+
log.error("Saving ngs measurement failed", e);
200+
throw e;
201+
}
202+
try {
203+
measurementDataRepo.saveAllNGS(ngsMeasurementsMapping);
204+
} catch (RuntimeException e) {
205+
log.error("Saving ngs measurement in data repo failed", e);
206+
ngsMeasurementJpaRepo.deleteAll(ngsMeasurementsMapping.keySet());
207+
throw e;
208+
}
209+
}
103210
}

project-management-infrastructure/src/main/java/life/qbic/projectmanagement/infrastructure/experiment/measurement/NGSMeasurementJpaRepo.java

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package life.qbic.projectmanagement.infrastructure.experiment.measurement;
22

3+
import java.util.Optional;
4+
import life.qbic.projectmanagement.domain.model.measurement.MeasurementCode;
35
import life.qbic.projectmanagement.domain.model.measurement.MeasurementId;
46
import life.qbic.projectmanagement.domain.model.measurement.NGSMeasurement;
57
import org.springframework.data.jpa.domain.Specification;
@@ -16,4 +18,7 @@ public interface NGSMeasurementJpaRepo
1618

1719
@Override
1820
long count(Specification<NGSMeasurement> spec);
21+
22+
Optional<NGSMeasurement> findNGSMeasurementByMeasurementCode(
23+
MeasurementCode measurementCode);
1924
}

project-management-infrastructure/src/main/java/life/qbic/projectmanagement/infrastructure/project/ProjectPreviewJpaRepository.java

-51
This file was deleted.

0 commit comments

Comments
 (0)