Ignore:
Timestamp:
Jan 31, 2011, 8:16:03 PM (10 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/Criterion.groovy

    r1457 r1458  
    2525
    2626        /**
    27          * Checks if the given object (with template) that satisfies the given criterion.
    28          *
    29          * @param entity                Entity to check for criterion satisfaction. Should be a child of template entity
     27         * Retrieves the correct value for this criterion in the given object (with template)
     28         *
     29         * @param entity                Entity to check for value. Should be a child of template entity
    3030         * @param criterion     Criterion to match on
    31          * @return                      True iff there the entity satisfies the given criterion.
    32          */
    33         public boolean matchOne( TemplateEntity entity ) {
     31         * @return                      Value of the given field or null if the field doesn't exist
     32         */
     33        public def getFieldValue( TemplateEntity entity ) {
     34                if( entity == null )
     35                        return null;
     36
    3437                try {
    3538                        def fieldValue
     
    4043                        }
    4144
    42                         return this.match( fieldValue );
     45                        return fieldValue
    4346                } catch( Exception e ) {
    4447                        // An exception occurs if the given field doesn't exist. In that case, this criterion will fail.
    4548                        // TODO: Maybe give the user a choice whether he want's to include these studies or not
    46                         return false;
    47                 }
     49                        return null;
     50                }
     51        }
     52
     53        /**
     54         * Checks if the given object (with template) that satisfies the given criterion.
     55         *
     56         * @param entity                Entity to check for criterion satisfaction. Should be a child of template entity
     57         * @param criterion     Criterion to match on
     58         * @return                      True iff there the entity satisfies the given criterion.
     59         */
     60        public boolean matchEntity( TemplateEntity entity ) {
     61                def fieldValue = this.getFieldValue( entity );
     62
     63                // Null is returned, the given field doesn't exist. In that case, this criterion will fail.
     64                // TODO: Maybe give the user a choice whether he want's to include these studies or not
     65                if( fieldValue == null )
     66                        return false;
     67
     68                return this.match( fieldValue );
    4869        }
    4970
     
    5576         * @return                              True iff there is any entity in the list that satisfies the given criterion.
    5677         */
    57         public boolean matchAny( List entityList ) {
     78        public boolean matchAnyEntity( List<TemplateEntity> entityList ) {
    5879                for( entity in entityList ) {
    59                         if( matchOne( entity ) )
     80                        if( matchOneEntity( entity ) )
    6081                                return true;
    6182                }
     
    7091         * @return                              True iff all entities satisfy the given criterion.
    7192         */
     93        public boolean matchAllEntities( List<TemplateEntity> entityList ) {
     94                for( entity in entityList ) {
     95                        if( !matchOneEntity( entity ) )
     96                                return false;
     97                }
     98                return true;
     99        }
     100
     101        /**
     102         * Checks for all values in the given List, if there is any value that satisfies the given criterion.
     103         *
     104         * @param entityList            List with values.
     105         * @param criterion             Criterion to match on
     106         * @return                              True iff there is any value in the list that satisfies the given criterion.
     107         */
     108        public boolean matchAny( List valueList ) {
     109                for( value in valueList ) {
     110                        if( match( value ) )
     111                                return true;
     112                }
     113                return false;
     114        }
     115
     116        /**
     117         * Checks for all values in the given List, if all values satisfy the given criterion.
     118         *
     119         * @param entityList            List with values.
     120         * @param criterion             Criterion to match on
     121         * @return                              True iff all values satisfy the given criterion.
     122         */
    72123        public boolean matchAll( List entityList ) {
    73                 for( entity in entityList ) {
    74                         if( !matchOne( entity ) )
     124                for( value in valueList ) {
     125                        if( !match( value ) )
    75126                                return false;
    76127                }
     
    87138                if( fieldValue == null )
    88139                        return false;
    89                        
     140
    90141                def classname = fieldValue.class.getName();
    91142                classname = classname[classname.lastIndexOf( '.' ) + 1..-1].toLowerCase();
    92                
     143
    93144                println "Match " + fieldValue + " of class " + classname + " with " + this
    94                
     145
    95146                try {
    96147                        switch( classname ) {
     
    152203                        Date dateCriterion = new SimpleDateFormat( "yyyy-MM-dd" ).parse( value );
    153204                        Date fieldDate = new Date( fieldValue.getTime() );
    154                        
     205
    155206                        // Clear time in order to just compare dates
    156207                        dateCriterion.clearTime();
    157208                        fieldDate.clearTime();
    158                        
     209
    159210                        return compareValues( fieldDate, this.operator, dateCriterion )
    160211                } catch( Exception e ) {
     
    232283
    233284                        // Numbers are taken to be seconds, if a non-numeric value is given, try to parse it
    234                         if( value.toString().isNumber() ) {
     285                        if( value.toString().isLong() ) {
    235286                                rt = new RelTime( Long.parseLong( value.toString() ) );
    236287                        } else {
    237288                                rt = new RelTime( value.toString() );
    238289                        }
    239                        
     290
    240291                        return compareValues( fieldValue, this.operator, rt );
    241292                } catch( Exception e ) {
Note: See TracChangeset for help on using the changeset viewer.