11package life .qbic .projectmanagement .infrastructure .experiment .measurement ;
22
3- import jakarta .persistence .criteria .Expression ;
43import jakarta .persistence .criteria .Join ;
54import java .util .Collection ;
65import java .util .List ;
@@ -27,22 +26,19 @@ public class MeasurementLookupImplementation implements MeasurementLookup {
2726
2827 private final NGSMeasurementJpaRepo ngsMeasurementJpaRepo ;
2928 private final ProteomicsMeasurementJpaRepo pxpMeasurementJpaRepo ;
30- private final MeasurementDataRepo measurementDataRepo ;
3129
3230 public MeasurementLookupImplementation (NGSMeasurementJpaRepo ngsMeasurementJpaRepo ,
33- ProteomicsMeasurementJpaRepo pxpMeasurementJpaRepo ,
34- MeasurementDataRepo measurementDataRepo ) {
31+ ProteomicsMeasurementJpaRepo pxpMeasurementJpaRepo ) {
3532 this .ngsMeasurementJpaRepo = ngsMeasurementJpaRepo ;
3633 this .pxpMeasurementJpaRepo = pxpMeasurementJpaRepo ;
37- this .measurementDataRepo = measurementDataRepo ;
3834 }
3935
4036 @ Override
4137 public long countProteomicsMeasurementsBySampleIds (Collection <SampleId > sampleIds ) {
4238 Specification <ProteomicsMeasurement > isDistinctSpec = ProteomicsMeasurementSpec .isDistinct ();
4339 Specification <ProteomicsMeasurement > containsSampleId = ProteomicsMeasurementSpec .containsSampleId (
4440 sampleIds );
45- Specification <ProteomicsMeasurement > distinct = Specification . where ( containsSampleId )
41+ Specification <ProteomicsMeasurement > distinct = containsSampleId
4642 .and (isDistinctSpec );
4743 return pxpMeasurementJpaRepo .count (distinct );
4844 }
@@ -52,7 +48,7 @@ public long countNgsMeasurementsBySampleIds(Collection<SampleId> sampleIds) {
5248 Specification <NGSMeasurement > isDistinctSpec = NgsMeasurementSpec .isDistinct ();
5349 Specification <NGSMeasurement > containsSampleId = NgsMeasurementSpec .containsSampleId (
5450 sampleIds );
55- Specification <NGSMeasurement > distinct = Specification . where ( containsSampleId )
51+ Specification <NGSMeasurement > distinct = containsSampleId
5652 .and (isDistinctSpec );
5753 return ngsMeasurementJpaRepo .count (distinct );
5854 }
@@ -75,73 +71,6 @@ public List<ProteomicsMeasurement> findProteomicsMeasurementsBySampleIds(String
7571 new OffsetBasedRequest (offset , limit , Sort .by (orders ))).getContent ();
7672 }
7773
78- private Specification <ProteomicsMeasurement > generateProteomicsFilterSpecification (
79- Collection <SampleId > sampleIds , String filter ) {
80- Specification <ProteomicsMeasurement > isBlankSpec = ProteomicsMeasurementSpec .isBlank (filter );
81- Specification <ProteomicsMeasurement > isDistinctSpec = ProteomicsMeasurementSpec .isDistinct ();
82- Specification <ProteomicsMeasurement > containsSampleId = ProteomicsMeasurementSpec .containsSampleId (
83- sampleIds );
84- Specification <ProteomicsMeasurement > measurementCodeContains = ProteomicsMeasurementSpec .isMeasurementCode (
85- filter );
86- Specification <ProteomicsMeasurement > measurementLabelContains = ProteomicsMeasurementSpec .isMeasurementLabel (
87- filter );
88- Specification <ProteomicsMeasurement > measurementLabelingTypeContains = ProteomicsMeasurementSpec .isMeasurementLabelingType (
89- filter );
90- Specification <ProteomicsMeasurement > samplePoolGroupContains = ProteomicsMeasurementSpec .isSamplePoolGroup (
91- filter );
92- Specification <ProteomicsMeasurement > organisationLabelContains = ProteomicsMeasurementSpec .isOrganisationLabel (
93- filter );
94- Specification <ProteomicsMeasurement > ontologyNameContains = ProteomicsMeasurementSpec .isOntologyTermName (
95- filter );
96- Specification <ProteomicsMeasurement > ontologyLabelContains = ProteomicsMeasurementSpec .isOntologyTermLabel (
97- filter );
98- Specification <ProteomicsMeasurement > facilityContains = ProteomicsMeasurementSpec .isFacility (
99- filter );
100- Specification <ProteomicsMeasurement > fractionContains = ProteomicsMeasurementSpec .isFraction (
101- filter );
102- Specification <ProteomicsMeasurement > digestionMethodContains = ProteomicsMeasurementSpec .isDigestionMethod (
103- filter );
104- Specification <ProteomicsMeasurement > digestionEnzymeContains = ProteomicsMeasurementSpec .isDigestionEnzyme (
105- filter );
106- Specification <ProteomicsMeasurement > enrichmentMethodContains = ProteomicsMeasurementSpec .isEnrichmentMethod (
107- filter );
108- Specification <ProteomicsMeasurement > injectionVolumeContains = ProteomicsMeasurementSpec .isInjectionVolume (
109- filter );
110- Specification <ProteomicsMeasurement > lcColumnContains = ProteomicsMeasurementSpec .isLcColumn (
111- filter );
112- Specification <ProteomicsMeasurement > lcmsMethodContains = ProteomicsMeasurementSpec .isLcmsMethod (
113- filter );
114- Specification <ProteomicsMeasurement > registrationDateContains = ProteomicsMeasurementSpec .isRegistrationDate (
115- filter );
116- Specification <ProteomicsMeasurement > commentContains = ProteomicsMeasurementSpec .isComment (
117- filter );
118-
119- Specification <ProteomicsMeasurement > filterSpecification =
120- Specification .anyOf (
121- commentContains ,
122- digestionMethodContains ,
123- digestionEnzymeContains ,
124- enrichmentMethodContains ,
125- facilityContains ,
126- fractionContains ,
127- injectionVolumeContains ,
128- lcColumnContains ,
129- lcmsMethodContains ,
130- measurementCodeContains ,
131- measurementLabelContains ,
132- measurementLabelingTypeContains ,
133- ontologyNameContains ,
134- ontologyLabelContains ,
135- organisationLabelContains ,
136- registrationDateContains ,
137- samplePoolGroupContains
138- );
139- return Specification .where (isBlankSpec )
140- .and (containsSampleId )
141- .and (filterSpecification )
142- .and (isDistinctSpec );
143- }
144-
14574 @ Override
14675 public List <NGSMeasurement > queryNGSMeasurementsBySampleIds (String filter ,
14776 Collection <SampleId > sampleIds , int offset ,
@@ -172,42 +101,6 @@ public List<NGSMeasurement> findNGSMeasurementsBySampleIds(
172101 return ngsMeasurementJpaRepo .findAll (NgsMeasurementSpec .containsSampleId (sampleIds ));
173102 }
174103
175- private Specification <NGSMeasurement > generateNGSFilterSpecification (
176- Collection <SampleId > sampleIds , String filter ) {
177- Specification <NGSMeasurement > isBlankSpec = NgsMeasurementSpec .isBlank (filter );
178- Specification <NGSMeasurement > isDistinctSpec = NgsMeasurementSpec .isDistinct ();
179- Specification <NGSMeasurement > containsSampleId = NgsMeasurementSpec .containsSampleId (
180- sampleIds );
181- Specification <NGSMeasurement > measurementCodeContains = NgsMeasurementSpec .isMeasurementCode (
182- filter );
183- Specification <NGSMeasurement > sequencingReadTypeContains = NgsMeasurementSpec .isSequencingReadType (
184- filter );
185- Specification <NGSMeasurement > facilityContains = NgsMeasurementSpec .isFacility (filter );
186- Specification <NGSMeasurement > libraryKitContains = NgsMeasurementSpec .isLibraryKit (filter );
187- Specification <NGSMeasurement > flowCellContains = NgsMeasurementSpec .isFlowCell (filter );
188- Specification <NGSMeasurement > sequencingRunProtocolContains = NgsMeasurementSpec .isSequencingRunProtocol (
189- filter );
190- Specification <NGSMeasurement > indexI7Contains = NgsMeasurementSpec .isIndexI7 (filter );
191- Specification <NGSMeasurement > indexI5Contains = NgsMeasurementSpec .isIndexI5 (filter );
192- Specification <NGSMeasurement > registrationDateContains = NgsMeasurementSpec .isRegistrationDate (
193- filter );
194- Specification <NGSMeasurement > commentContains = NgsMeasurementSpec .isComment (
195- filter );
196- Specification <NGSMeasurement > filterSpecification = Specification .anyOf (
197- measurementCodeContains ,
198- sequencingReadTypeContains ,
199- facilityContains ,
200- libraryKitContains ,
201- flowCellContains ,
202- sequencingRunProtocolContains ,
203- indexI7Contains ,
204- indexI5Contains ,
205- registrationDateContains ,
206- commentContains );
207- return Specification .where (isBlankSpec ).and (containsSampleId ).and (filterSpecification )
208- .and (isDistinctSpec );
209- }
210-
211104
212105 private static class ProteomicsMeasurementSpec {
213106
@@ -232,119 +125,6 @@ public static Specification<ProteomicsMeasurement> containsSampleId(
232125 };
233126 }
234127
235- //If no filter was provided return all proteomicsMeasurement
236- public static Specification <ProteomicsMeasurement > isBlank (String filter ) {
237- return (root , query , builder ) -> {
238- if (filter != null && filter .isBlank ()) {
239- return builder .conjunction ();
240- }
241- return null ;
242- };
243- }
244-
245- public static Specification <ProteomicsMeasurement > isOrganisationLabel (String filter ) {
246- return (root , query , builder ) ->
247- builder .like (root .get ("organisation" ).get ("label" ), "%" + filter + "%" );
248- }
249-
250- public static Specification <ProteomicsMeasurement > isOntologyTermName (String filter ) {
251- return (root , query , builder ) -> {
252- Expression <String > function = builder .function ("JSON_EXTRACT" , String .class ,
253- root .get ("msDevice" ),
254- builder .literal ("$.name" ));
255- return builder .like (function ,
256- "%" + filter + "%" );
257- };
258- }
259-
260- public static Specification <ProteomicsMeasurement > isOntologyTermLabel (String filter ) {
261- return (root , query , builder ) ->
262- {
263- Expression <String > function = builder .function ("JSON_EXTRACT" , String .class ,
264- root .get ("msDevice" ), builder .literal ("$.label" ));
265- return builder .like (function ,
266- "%" + filter + "%" );
267- };
268- }
269-
270- public static Specification <ProteomicsMeasurement > isMeasurementCode (String filter ) {
271- return (root , query , builder ) ->
272- builder .like (root .get ("measurementCode" ).as (String .class ), "%" + filter + "%" );
273- }
274-
275- public static Specification <ProteomicsMeasurement > isFacility (String filter ) {
276- return (root , query , builder ) ->
277- builder .like (root .get ("facility" ), "%" + filter + "%" );
278- }
279-
280- public static Specification <ProteomicsMeasurement > isFraction (String filter ) {
281- return (root , query , builder ) -> {
282- Join <?, ?> sampleSpecificMetadata = root .join ("specificMetadata" );
283- return builder .like (sampleSpecificMetadata .get ("fractionName" ).as (String .class ),
284- "%" + filter + "%" );
285- };
286- }
287-
288- public static Specification <ProteomicsMeasurement > isDigestionMethod (String filter ) {
289- return (root , query , builder ) ->
290- builder .like (root .get ("digestionMethod" ), "%" + filter + "%" );
291- }
292-
293- public static Specification <ProteomicsMeasurement > isDigestionEnzyme (String filter ) {
294- return (root , query , builder ) ->
295- builder .like (root .get ("digestionEnzyme" ), "%" + filter + "%" );
296- }
297-
298- public static Specification <ProteomicsMeasurement > isEnrichmentMethod (String filter ) {
299- return (root , query , builder ) ->
300- builder .like (root .get ("enrichmentMethod" ), "%" + filter + "%" );
301- }
302-
303- public static Specification <ProteomicsMeasurement > isInjectionVolume (String filter ) {
304- return (root , query , builder ) ->
305- builder .like (root .get ("injectionVolume" ).as (String .class ), "%" + filter + "%" );
306- }
307-
308- public static Specification <ProteomicsMeasurement > isLcColumn (String filter ) {
309- return (root , query , builder ) ->
310- builder .like (root .get ("lcColumn" ), "%" + filter + "%" );
311- }
312-
313- public static Specification <ProteomicsMeasurement > isLcmsMethod (String filter ) {
314- return (root , query , builder ) ->
315- builder .like (root .get ("lcmsMethod" ), "%" + filter + "%" );
316- }
317-
318- public static Specification <ProteomicsMeasurement > isComment (String filter ) {
319- return (root , query , builder ) -> {
320- Join <?, ?> sampleSpecificMetadata = root .join ("specificMetadata" );
321- return builder .like (sampleSpecificMetadata .get ("comment" ).as (String .class ),
322- "%" + filter + "%" );
323- };
324- }
325-
326- public static Specification <ProteomicsMeasurement > isMeasurementLabel (String filter ) {
327- return (root , query , builder ) -> {
328- Join <?, ?> sampleSpecificMetadata = root .join ("specificMetadata" );
329- return builder .like (sampleSpecificMetadata .get ("label" ).as (String .class ),
330- "%" + filter + "%" );
331- };
332- }
333-
334- public static Specification <ProteomicsMeasurement > isMeasurementLabelingType (String filter ) {
335- return (root , query , builder ) ->
336- builder .like (root .get ("labelType" ), "%" + filter + "%" );
337- }
338-
339- public static Specification <ProteomicsMeasurement > isSamplePoolGroup (String filter ) {
340- return (root , query , builder ) ->
341- builder .like (root .get ("samplePool" ), "%" + filter + "%" );
342- }
343-
344- public static Specification <ProteomicsMeasurement > isRegistrationDate (String filter ) {
345- return (root , query , builder ) ->
346- builder .like (root .get ("registration" ).as (String .class ), "%" + filter + "%" );
347- }
348128 }
349129
350130 private static class NgsMeasurementSpec {
@@ -369,74 +149,5 @@ public static Specification<NGSMeasurement> containsSampleId(
369149 return sampleSpecificMetadata .get ("measuredSample" ).in (sampleIds );
370150 };
371151 }
372-
373- //If no filter was provided return all proteomicsMeasurement
374- public static Specification <NGSMeasurement > isBlank (String filter ) {
375- return (root , query , builder ) -> {
376- if (filter != null && filter .isBlank ()) {
377- return builder .conjunction ();
378- }
379- return null ;
380- };
381- }
382-
383- public static Specification <NGSMeasurement > isMeasurementCode (String filter ) {
384- return (root , query , builder ) ->
385- builder .like (root .get ("measurementCode" ).as (String .class ), "%" + filter + "%" );
386- }
387-
388- public static Specification <NGSMeasurement > isFacility (String filter ) {
389- return (root , query , builder ) ->
390- builder .like (root .get ("facility" ), "%" + filter + "%" );
391- }
392-
393- public static Specification <NGSMeasurement > isSequencingReadType (String filter ) {
394- return (root , query , builder ) ->
395- builder .like (root .get ("sequencingReadType" ), "%" + filter + "%" );
396- }
397-
398- public static Specification <NGSMeasurement > isLibraryKit (String filter ) {
399- return (root , query , builder ) ->
400- builder .like (root .get ("libraryKit" ), "%" + filter + "%" );
401- }
402-
403- public static Specification <NGSMeasurement > isFlowCell (String filter ) {
404- return (root , query , builder ) ->
405- builder .like (root .get ("flowCell" ), "%" + filter + "%" );
406- }
407-
408- public static Specification <NGSMeasurement > isSequencingRunProtocol (String filter ) {
409- return (root , query , builder ) ->
410- builder .like (root .get ("sequencingRunProtocol" ), "%" + filter + "%" );
411- }
412-
413- public static Specification <NGSMeasurement > isIndexI7 (String filter ) {
414- return (root , query , builder ) -> {
415- Join <?, ?> sampleSpecificMetadata = root .join ("specificMetadata" );
416- return builder .like (sampleSpecificMetadata .get ("indexI7" ).as (String .class ),
417- "%" + filter + "%" );
418- };
419- }
420-
421- public static Specification <NGSMeasurement > isIndexI5 (String filter ) {
422- return (root , query , builder ) -> {
423- Join <?, ?> sampleSpecificMetadata = root .join ("specificMetadata" );
424- return builder .like (sampleSpecificMetadata .get ("indexI5" ).as (String .class ),
425- "%" + filter + "%" );
426- };
427- }
428-
429- public static Specification <NGSMeasurement > isRegistrationDate (String filter ) {
430- return (root , query , builder ) ->
431- builder .like (root .get ("registration" ).as (String .class ), "%" + filter + "%" );
432- }
433-
434- public static Specification <NGSMeasurement > isComment (String filter ) {
435- return (root , query , builder ) -> {
436- Join <?, ?> sampleSpecificMetadata = root .join ("specificMetadata" );
437- return builder .like (sampleSpecificMetadata .get ("comment" ).as (String .class ),
438- "%" + filter + "%" );
439- };
440- }
441152 }
442153}
0 commit comments