Ignore:
Timestamp:
Feb 2, 2011, 4:40:22 PM (10 years ago)
Author:
robert@…
Message:

Implemented saving of queries

File:
1 edited

Legend:

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

    r1458 r1482  
    1616
    1717import java.util.List;
     18import java.util.Map;
    1819
    1920import dbnp.studycapturing.*
    2021import org.dbnp.gdt.*
     22import org.apache.commons.logging.LogFactory;
    2123
    2224class StudySearch extends Search {
     25        private static final log = LogFactory.getLog(this);
     26       
    2327        public StudySearch() {
     28                super();
    2429                this.entity = "Study";
    2530        }
     
    5964        @Override
    6065        void execute() {
    61                 // TODO: check for authorization for these studies?
    62                 def studies = Study.list();
     66                super.execute();
    6367
     68                def studies = Study.list().findAll { it.canRead( this.user ) };
     69               
    6470                // If no criteria are found, return all studies
    6571                if( !criteria || criteria.size() == 0 ) {
     
    7581                studies = filterOnSamplingEventCriteria( studies );
    7682                studies = filterOnAssayCriteria( studies );
    77 
     83               
    7884                studies = filterOnModuleCriteria( studies );
    7985               
     
    8187                results = studies;
    8288        }
    83        
     89
    8490        /**
    8591         * Filters the given list of studies on the study criteria
     
    97103         */
    98104        protected List filterOnSubjectCriteria( List studies ) {
    99                 return filterOnTemplateEntityCriteria(studies, "Subject", { study, criterion -> 
     105                return filterOnTemplateEntityCriteria(studies, "Subject", { study, criterion ->
    100106                        return study.subjects?.collect { criterion.getFieldValue( it ); }
    101107                })
     
    119125         */
    120126        protected List filterOnEventCriteria( List studies ) {
    121                 return filterOnTemplateEntityCriteria(studies, "Event", { study, criterion -> 
     127                return filterOnTemplateEntityCriteria(studies, "Event", { study, criterion ->
    122128                        return study.events?.collect { criterion.getFieldValue( it ); }
    123129                })
    124130        }
    125        
     131
    126132        /**
    127         * Filters the given list of studies on the sampling event criteria
    128         * @param studies        Original list of studies
    129         * @return                       List with all studies that match the event-criteria
    130         */
    131    protected List filterOnSamplingEventCriteria( List studies ) {
    132                 return filterOnTemplateEntityCriteria(studies, "SamplingEvent", { study, criterion -> 
     133         * Filters the given list of studies on the sampling event criteria
     134         * @param studies       Original list of studies
     135         * @return                      List with all studies that match the event-criteria
     136         */
     137        protected List filterOnSamplingEventCriteria( List studies ) {
     138                return filterOnTemplateEntityCriteria(studies, "SamplingEvent", { study, criterion ->
    133139                        return study.samplingEvents?.collect { criterion.getFieldValue( it ); }
    134140                })
    135    }
    136        
     141        }
     142
    137143        /**
    138144         * Filters the given list of studies on the assay criteria
     
    145151                })
    146152        }
     153
     154        /**
     155         * Returns the saved field data that could be shown on screen. This means, the data
     156         * is filtered to show only data of the query results. Also, the study title and sample
     157         * name are filtered out, in order to be able to show all data on the screen without
     158         * checking further
     159         *
     160         * @return      Map with the entity id as a key, and a field-value map as value
     161         */
     162        public Map getShowableResultFields() {
     163                Map showableFields = super.getShowableResultFields()
     164                showableFields.each { sampleElement ->
     165                        sampleElement.value = sampleElement.value.findAll { fieldElement ->
     166                                fieldElement.key != "Study title" && fieldElement.key != "Subject species"
     167                        }
     168                }
     169                return showableFields
     170        }
    147171}
Note: See TracChangeset for help on using the changeset viewer.