Ignore:
Timestamp:
Jan 31, 2011, 8:16:03 PM (6 years ago)
Author:
robert@…
Message:
  • Implemented a cache for module rest calls, to increase performance (see moduleCommunicationService)
  • Implemented searching in module data.
File:
1 edited

Legend:

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

    r1456 r1458  
    1616
    1717import dbnp.studycapturing.*
     18import org.dbnp.gdt.*
    1819
    1920class SampleSearch extends Search {
     21       
    2022        public SampleSearch() {
    2123                this.entity = "Sample";
     
    9395                samples = filterOnAssayCriteria( samples );
    9496               
     97                samples = filterOnModuleCriteria( samples );
     98               
    9599                // Save matches
    96100                results = samples;
     
    103107         */
    104108        protected List filterOnStudyCriteria( List studies ) {
    105                 return filterEntityList( studies, getEntityCriteria( 'Study' ), { study, criterion ->
    106                         return criterion.matchOne( study );
    107                 });
     109                return filterOnTemplateEntityCriteria(studies, "Study", { study, criterion -> return criterion.getFieldValue( study ) })
    108110        }
    109111
     
    114116         */
    115117        protected List filterOnSubjectCriteria( List samples ) {
    116                 return filterEntityList( samples, getEntityCriteria( 'Subject' ), { sample, criterion ->
    117                         if( !sample.parentSubject )
    118                                 return false
    119 
    120                         return criterion.matchOne( sample.parentSubject );
    121                 });
     118                return filterOnTemplateEntityCriteria(samples, "Subject", { sample, criterion ->
     119                        return criterion.getFieldValue( sample.parentSubject );
     120                })
    122121        }
    123122
     
    128127         */
    129128        protected List filterOnSampleCriteria( List samples ) {
    130                 return filterEntityList( samples, getEntityCriteria( 'Sample' ), { sample, criterion ->
    131                         if( !sample  )
    132                                 return false
    133 
    134                         return criterion.matchOne( sample );
    135                 });
     129                return filterOnTemplateEntityCriteria(samples, "Sample", { sample, criterion ->
     130                        return criterion.getFieldValue( sample );
     131                })
    136132        }
    137133
     
    142138         */
    143139        protected List filterOnEventCriteria( List samples ) {
    144                 println "Event criteria: " + getEntityCriteria( 'Event' )
    145                 return filterEntityList( samples, getEntityCriteria( 'Event' ), { sample, criterion ->
     140                return filterOnTemplateEntityCriteria(samples, "Event", { sample, criterion ->
    146141                        if( !sample || !sample.parentEventGroup || !sample.parentEventGroup.events || sample.parentEventGroup.events.size() == 0 )
    147                                 return false
    148                
    149                         return criterion.matchAny( sample.parentEventGroup.events.toList() );
    150                 });
     142                                return null
     143
     144                        return criterion.getFieldValue( sample.parentEventGroup.events.toList() );
     145                })
    151146        }
    152147
     
    157152         */
    158153        protected List filterOnSamplingEventCriteria( List samples ) {
    159                 return filterEntityList( samples, getEntityCriteria( 'SamplingEvent' ), { sample, criterion ->
    160                         if( !sample.parentEvent )
    161                                 return false
    162 
    163                         return criterion.matchOne( sample.parentEvent );
    164                 });
    165         }
    166 
     154                return filterOnTemplateEntityCriteria(samples, "SamplingEvent", { sample, criterion ->
     155                        return criterion.getFieldValue( sample.parentEvent );
     156                })
     157        }
    167158
    168159        /**
     
    180171                // There is no sample.assays property, so we have to look for assays another way: just find
    181172                // all assays that match the criteria
    182                 def assays = filterEntityList( Assay.list(), getEntityCriteria( 'Assay' ), { assay, criterion ->
     173                def criteria = getEntityCriteria( 'Assay' );
     174                def assays = filterEntityList( Assay.list(), criteria, { assay, criterion ->
    183175                        if( !assay )
    184176                                return false
     
    190182                if( assays.size() == 0 )
    191183                        return [];
     184               
     185                // Save sample data for later use
     186                saveResultFields( samples, criteria, { sample, criterion ->
     187                         def sampleAssays = Assay.findByStudy( sample.parent ).findAll { it.samples?.contains( sample ) };
     188                         if( sampleAssays && sampleAssays.size() > 0 )
     189                                return sampleAssays.collect( criterion.getFieldValue( it ) )
     190                        else
     191                                return null
     192                });
    192193                       
    193194                // Now filter the samples on whether they are attached to the filtered assays
     
    208209                }
    209210        }
    210 
    211211}
Note: See TracChangeset for help on using the changeset viewer.