FUNCTION validate_measured_data_type
(ei : shape_data_quality_criterion; type_string : STRING) : LOGICAL;
LOCAL sdqir: SET OF SHAPE_DATA_QUALITY_INSPECTION_RESULT:=[]; sdcr: SET OF SHAPE_DATA_QUALITY_INSPECTION_CRITERION_REPORT:=[]; sdir: SET OF SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT:=[]; sdii: SET OF SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM:=[]; sdei: BAG OF INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES:=[]; END_LOCAL; -- STEP-1 -- collect all shape_data_quality_inspection_criterion_report instances, -- all shape_data_quality_inspection_instance_report_item instances, and -- instance_report_item_with_extreme_instances instances -- associated WITH the given shape_data_quality_criterion -- via shape_data_quality_inspection_result. 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); sdcr := sdcr + 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_CRITERION_REPORT' IN TYPEOF(q)); END_REPEAT; 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; -- IF there is no report, THEN RETURN true. IF((SIZEOF(sdcr) = 0) AND (SIZEOF(sdir) = 0)) THEN RETURN(TRUE); END_IF; REPEAT i:= 1 TO SIZEOF(sdir); sdii := sdii + QUERY(q <* sdir[i].inspected_instances| 'SHAPE_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+ 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM' 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; -- When reports exist, THEN perform the following checking process. -- Check representative_measured_value OF -- shape_data_quality_inspection_criterion_report REPEAT i:= 1 TO SIZEOF(sdcr); IF(NOT(type_string IN TYPEOF(sdcr[i].representative_measured_value))) THEN RETURN(FALSE); END_IF; END_REPEAT; -- Check measured_value OF shape_data_quality_inspection_ -- instance_report_item REPEAT i:= 1 TO SIZEOF(sdii); IF(NOT(type_string IN TYPEOF(sdii[i].measured_value))) THEN RETURN(FALSE); END_IF; END_REPEAT; -- Check measured_value OF extreme_instances of -- instance_report_item_with_extreme_instance REPEAT i:= 1 TO SIZEOF(sdei); REPEAT j:= 1 TO SIZEOF(sdei[i].extreme_instances); IF(NOT(type_string IN TYPEOF(sdei[i].extreme_instances[j].measured_value))) THEN RETURN(FALSE); END_IF; END_REPEAT; END_REPEAT; RETURN(TRUE); END_FUNCTION; -- validate_measured_data_type
|