Overview Schemas Index

SHAPE_DATA_QUALITY_CRITERIA_SCHEMA (jsdai.SShape_data_quality_criteria_schema)


FUNCTION validate_locations_of_extreme_value_type
          (ei : shape_data_quality_criterion; type_list : BAG [0:?] OF STRING) : LOGICAL;

LOCAL
       sdqir: SET  OF
        SHAPE_DATA_QUALITY_INSPECTION_RESULT:=[];
       sdir: SET  OF
        SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT:=[];
       sdei: SET OF
        INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES:=[];
       t_type_list:BAG OF  STRING:=[];
     END_LOCAL;
  
     -- STEP-1
     -- collect all instance_report_item_with_extreme_instances instances
     -- associated WITH  the given shape_data_quality_criterion
     -- via shape_data_quality_inspection_result and
     -- shape_data_quality_inspection_instance_report.

     sdqir := QUERY(q <* bag_to_set(USEDIN(ei,
                   'PRODUCT_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
                   'DATA_QUALITY_INSPECTION_RESULT.'+
                   'CRITERION_INSPECTED'))|
           'SHAPE_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
           'SHAPE_DATA_QUALITY_INSPECTION_RESULT'
            IN  TYPEOF(q));
     IF(SIZEOF(sdqir) = 0) THEN
       RETURN(TRUE);
     END_IF;
     REPEAT  i:= 1 TO  SIZEOF(sdqir);
       sdir := sdir + QUERY(q <* bag_to_set(USEDIN(sdqir[i],
                   'PRODUCT_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
                   'DATA_QUALITY_INSPECTION_REPORT.'+
                   'INSPECTION_RESULT'))|
           'SHAPE_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
           'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT'
            IN  TYPEOF(q));
     END_REPEAT;
     REPEAT  i:= 1 TO  SIZEOF(sdir);
       sdei := sdei + QUERY(q <* sdir[i].inspected_instances|
           'SHAPE_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
           'INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES'
            IN  TYPEOF(q));
     END_REPEAT;
  
     -- STEP-2
     -- check IF  the types OF  locations_of_extreme_value attributes
     -- OF  all extreme_instances attributes OF  the collected instances are 
     -- exactly coincident WITH the TYPE  names IN the TYPE LIST given AS an 
     -- input argument OF  this function. 

     -- IF  there is no instance report, THEN  RETURN  true.
     IF(SIZEOF(sdei) = 0) THEN
       RETURN(TRUE);
     END_IF;
  
     -- IF  the type_list is empty AND  
     -- instance_report_item_with_extreme_instances exists, THEN  RETURN  false.
     IF((SIZEOF(type_list) = 0) AND (SIZEOF(sdei) <> 0)) THEN
       RETURN(FALSE);
     END_IF;
  
     -- When report_items exist, THEN  perform the following checking process.
     REPEAT  i:= 1 TO  SIZEOF(sdei);
       REPEAT  j:= 1 TO  SIZEOF(sdei[i].extreme_instances);
         -- IF the size OF  locations_of_extreme_value is NOT equal to
         -- the size OF  type_list, THEN RETURN false.
         IF(SIZEOF(sdei[i].extreme_instances[j].
                           locations_of_extreme_value) <>
            SIZEOF(type_list)) THEN
            RETURN(FALSE);
         END_IF;
         t_type_list := type_list;
         -- check all elements OF  the type_list 
         --  FOR each element OF locations_of_extreme_value.
         REPEAT  k:= 1 TO  SIZEOF(sdei[i].extreme_instances[j]
                                  .locations_of_extreme_value);
           REPEAT l:= 1 TO SIZEOF(t_type_list);
             IF(t_type_list[l] IN
               TYPEOF(sdei[i].extreme_instances[j].
                       locations_of_extreme_value[k])) THEN
               t_type_list := t_type_list - t_type_list[l];
               ESCAPE;
             END_IF;
           END_REPEAT;
         END_REPEAT;
         IF(SIZEOF(t_type_list) > 0) THEN
           RETURN(FALSE);
         END_IF;
       END_REPEAT;
     END_REPEAT;
  
     RETURN(TRUE);

END_FUNCTION; -- validate_locations_of_extreme_value_type

public class FValidate_locations_of_extreme_value_type
          public static Value run(SdaiContext _context, Value ei, Value type_list)