Overview Schemas Index

SHAPE_DATA_QUALITY_CRITERIA_SCHEMA (jsdai.SShape_data_quality_criteria_schema)


FUNCTION validate_inspected_elements_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:=[];
       sdiri: SET OF
        SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM:=[];
       t_type_list:BAG OF  STRING:=[];
     END_LOCAL;
  
     -- STEP-1
     -- collect all shape_data_quality_inspection_instance_report_item
     -- 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;
     IF(SIZEOF(sdir) = 0) THEN
       RETURN(TRUE);
     END_IF;

     REPEAT  i:= 1 TO  SIZEOF(sdir);
       sdiri := sdiri + QUERY(q <* sdir[i].inspected_instances|
           'SHAPE_DATA_QUALITY_INSPECTION_RESULT_SCHEMA.'+
           'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM'
            IN  TYPEOF(q));
     END_REPEAT;

     -- STEP-2
     -- check IF  the types OF  inspected_elements 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_item, THEN  RETURN  true.
     IF(SIZEOF(sdiri) = 0) THEN
       RETURN(TRUE);
     END_IF;
  
     -- When reports exist, THEN  perform the following checking process.
     REPEAT  i:= 1 TO  SIZEOF(sdiri);
       -- IF the size OF  inspected_elements is NOT equal TO  the size of
       -- type_list, THEN RETURN false.
       IF(SIZEOF(sdiri[i].inspected_elements) <> 
          SIZEOF(type_list)) THEN
         RETURN(FALSE);
       END_IF;
       -- check all elements IN the type_list 
       -- FOR each element OF inspected_elements.
       t_type_list := type_list;
       REPEAT  j:= 1 TO  SIZEOF(sdiri[i].inspected_elements);
         REPEAT k:= 1 TO SIZEOF(t_type_list);
           IF(t_type_list[k] IN
              TYPEOF(sdiri[i].inspected_elements[j])) THEN
            t_type_list := t_type_list - t_type_list[k];
            ESCAPE;
           END_IF;
         END_REPEAT;
       END_REPEAT;
       IF(SIZEOF(t_type_list) > 0) THEN
         RETURN(FALSE);
       END_IF;
     END_REPEAT;
  
    RETURN(TRUE);

END_FUNCTION; -- validate_inspected_elements_type

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