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
|