Show
Ignore:
Timestamp:
31-01-11 20:16:03 (3 years ago)
Author:
robert@…
Message:

- Implemented a cache for module rest calls, to increase performance (see moduleCommunicationService)
- Implemented searching in module data.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/groovy/dbnp/query/StudySearch.groovy

    r1456 r1458  
    1515package dbnp.query 
    1616 
     17import java.util.List; 
     18 
    1719import dbnp.studycapturing.* 
     20import org.dbnp.gdt.* 
    1821 
    1922class StudySearch extends Search { 
     
    7376                studies = filterOnAssayCriteria( studies ); 
    7477 
     78                studies = filterOnModuleCriteria( studies ); 
     79                 
    7580                // Save matches 
    7681                results = studies; 
    7782        } 
    78  
     83         
    7984        /** 
    8085         * Filters the given list of studies on the study criteria 
    8186         * @param studies       Original list of studies 
    82          * @return                      List with all studies that match the Study-criteria 
     87         * @return                      List with all studies that match the Study criteria 
    8388         */ 
    8489        protected List filterOnStudyCriteria( List studies ) { 
    85                 return filterEntityList( studies, getEntityCriteria( 'Study' ), { study, criterion -> 
    86                         return criterion.matchOne( study ); 
    87                 }); 
     90                return filterOnTemplateEntityCriteria(studies, "Study", { study, criterion -> return criterion.getFieldValue( study ) }) 
    8891        } 
    8992 
     
    9497         */ 
    9598        protected List filterOnSubjectCriteria( List studies ) { 
    96                 return filterEntityList( studies, getEntityCriteria( 'Subject' ), { study, criterion -> 
    97                         if( !study.subjects?.size() ) 
    98                                 return false 
    99  
    100                         return criterion.matchAny( study.subjects ); 
    101                 }); 
     99                return filterOnTemplateEntityCriteria(studies, "Subject", { study, criterion ->  
     100                        return study.subjects?.collect { criterion.getFieldValue( it ); } 
     101                }) 
    102102        } 
    103103 
     
    108108         */ 
    109109        protected List filterOnSampleCriteria( List studies ) { 
    110                 return filterEntityList( studies, getEntityCriteria( 'Sample' ), { study, criterion -> 
    111                         if( !study.samples?.size() ) 
    112                                 return false 
    113  
    114                         return criterion.matchAny( study.samples ); 
    115                 }); 
     110                return filterOnTemplateEntityCriteria(studies, "Sample", { study, criterion -> 
     111                        return study.samples?.collect { criterion.getFieldValue( it ); } 
     112                }) 
    116113        } 
    117114 
     
    122119         */ 
    123120        protected List filterOnEventCriteria( List studies ) { 
    124                 return filterEntityList( studies, getEntityCriteria( 'Event' ), { study, criterion -> 
    125                         if( !study.events?.size() ) 
    126                                 return false 
    127  
    128                         return criterion.matchAny( study.events ); 
    129                 }); 
     121                return filterOnTemplateEntityCriteria(studies, "Event", { study, criterion ->  
     122                        return study.events?.collect { criterion.getFieldValue( it ); } 
     123                }) 
    130124        } 
    131125         
     
    136130        */ 
    137131   protected List filterOnSamplingEventCriteria( List studies ) { 
    138            return filterEntityList( studies, getEntityCriteria( 'SamplingEvent' ), { study, criterion -> 
    139                    if( !study.samplingEvents?.size() ) 
    140                            return false 
    141  
    142                         return criterion.matchAny( study.samplingEvents ); 
    143            }); 
     132                return filterOnTemplateEntityCriteria(studies, "SamplingEvent", { study, criterion ->  
     133                        return study.samplingEvents?.collect { criterion.getFieldValue( it ); } 
     134                }) 
    144135   } 
    145  
    146136         
    147137        /** 
     
    151141         */ 
    152142        protected List filterOnAssayCriteria( List studies ) { 
    153                 return filterEntityList( studies, getEntityCriteria( 'Assay' ), { study, criterion -> 
    154                         if( !study.assays?.size() ) 
    155                                 return false 
    156  
    157                         return criterion.matchAny( study.assays ); 
    158                 }); 
     143                return filterOnTemplateEntityCriteria(studies, "Assay", { study, criterion -> 
     144                        return study.assays?.collect { criterion.getFieldValue( it ); } 
     145                }) 
    159146        } 
    160147}